1、列式存储数据库
不同于传统关系数据库的行式存储。其优势为:
(1)、对于特定查询,不是所有值都是必需的,可减少IO。
(2)、列的数据类型相似,有利于压缩,返回结果时降低带宽消耗。
2、HBase 的Region 和RegionServer
每一个region 只能由一台region server 加载,每一台region可以同时加载多个region。
region 大小超过限制,将会在中间键将其拆分成两个大致相等的子region。Region 支持离线合并。
每台RegionServer 加载Region数量约10-1000,每个region大小约1G-2G。
3、HBase支持单行事务
不支持跨行、跨表。
4、HBase协处理器Coprocessor
Coprocessor 可以在服务器的地址空间执行来自客户端的代码,此代码可以直接访问服务器本地的数据,用于实现轻量级批处理作业,或者使用表达式并给予各种操作来分析和汇总数据。
5、HBase的实现
HFile:数据的存储文件,存储经过排序的键值映射结构。HFile由连续的块组成,块的索引信息存储在文件的尾部。
HFile的默认大小为 64K 。
数据更新过程:首先写在WAL (write-ahead log . 预写日志)中 ,然后再写入内存的memstore中 (已按照行健排序),最后移出内存到 HFile 中,HFile 会进行合并。数据从内存移出后,会丢弃对应已提交的日志。
数据删除过程:给某行作一个删除标记,检索的时候跳过,而不是真正地删除。
数据读取过程:从 HFile 和 memstore 读回并合并,不会用到WAL。
数据恢复:若内存中数据在服务器崩溃前没有写入到磁盘,使用WAL进行恢复。
HFile 的合并分为 minor合并 和 major合并。
minor合并:将多个小文件重写为大文件,一个多路归并的过程。
major合并:能扫描所有键值对,顺序重写数据,并略过做了删除标记、版本号过期、生存时间到期的数据。
6、ZooKeeper 作用
a、为region server 协调分配region
b、通过心跳,发现可用服务器,跟踪机器故障和网络分区
c、确保只有一个HMaster运行
7、HMaster 作用
负载均衡,集群管理,元数据管理