Hbase学习
hbase架构:
-
Zookeeper
Master与RegionServers启动时向Zookeeper注册,保证任何时候集群只有一个Master,监控Region server的上下线信息,并实时通知给master。存储HBase的schema和table元数据。 -
HBase Master: 一个主服务器
集群只有一个master,维护Region服务器列表,分配Reign,负载均衡 -
HRegion Servers
- 作用:存储和维护分配给自己的Reign,处理来自客户端的读写
- region:table在行方向上的切分。分布式存储和负载均衡的最小单元。随着数据不断插入表,region不断增大,当region的某个列组达到一个阈值时会分成两个新region.<表名,stratRowkey,创建时间>
- store:一个region由一个或多个store组成。一个列组建立一个store,将会一起访问的数据放在一个store里
- memstore:存储于内存中,保存修改的数据key-value,当memstore大小达到一个阈值,memstore被flush到文件中。
- storefile:memstore写到文件中即为storefile
- 若一个region由多个store组成,则每个store由1个memstore和0或多个storefile组成
-
HBase client
包含访问HBase的接口,维护cache来加快对HBase的访问
特点:
1. 面向列:面向列(组)的存储和权限控制,列(组)独立检索
2. 稀疏:为Null的列cell不占用存储空间,因此表可以设计的非常稀疏
3. 无模式:每一个行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有不同的列
4. 数据多版本:每个单元中的数据可以有多个版本,默认根据单元格插入时的时间戳
5. 类型一定:数据均为字符串,以byte字节数组存储
-
Row Key访问方式:
- 单个Row key
- Row Key 的range全表扫描
-
列组
- 列组是表的schema的一部分,列组需要提前定义
- 访问控制、磁盘和内存的使用都是在列组层面进行的