HBase
数据模型
Row Key
字典顺序
最多存储64k的字节数据
Time Stamp
按照时间倒序排列
默认为64位整型数据
可以制定版本的保留条数,默认为1,即当前版本数据
colum family列族&&qualifier列
列族在建表时给出
列族成员动态加入
权限,调优都是在列族层面
列族成员分为几个文件分布在一个列族的文件夹中
cell
由行和列交叉决定
有版本
存储无类型全部是用字节码储存
HLog
记录操作,也能记录数据方便数据丢失后恢复
调优
表的设计
预先多创建空的region
rowkey设计
· 越小越好
· 根据实际的业务需求来设计
· 尽量保证散列性
不要定义太多列族
先写入缓存中
合并major compaction
· 把自动执行改为手动执行
写表操作
多个客户端并发进行写操作
有多个相同格式数据的写入应该批量进行
读表操作
多个客户端并发进行读操作
批量读数据
缓存查找的结果
根据业务调整Memstore和BlockCache的大小比例
架构
client
访问HBase
维护cache,加快对HBase的访问
zookeeper
用于HBase的协调服务,保证有一个Master运行
存储寻址入口
监控RegionServer的上线和下线信息,实时通知Master
存储schema和table的元数据信息
Master
为RegionServer分配Region
为RegionServer进行负载均衡
发现RegionServer失效,重新分配其上的Region
管理table的增删改操作
RegionServer
维护Region,处理对Region的IO请求
负责切分在运行过程中,变得过大的Region
Region
每个Region保存表中一段连续的数据
每个表开始只有一个Region,随着数据的增加产生分裂
随着Region的不断分裂,会分布在其他的RegionServer中
Memstore和storefile
一个storefile代表一个列族
先将数据写入Memstore中,超过阈值产生溢写,写入单独storefile文件中
storefile数量超过阈值会进行合并
· minor compaction
• 小而少的文件合并
• 效率高
· major compaction
• 所有storefile合并成一个文件
• 默认24小时触发一次
storefile的大小和数量超过一定阈值后,会分裂Region,负载到其他的Region Server中
BlockCache
· RegionServer内存的一部分
· 客户端查数据是先查Memstore,再查BlockCache,最后再storefile