HCIE-BIG DATA/HCIA-HBase学习笔记-HBase架构与用户读写
HBase架构:
底层:HDFS
1、Client:发送请求、缓存已经访问过的Region的位置信息,加快后续的数据访问
2、Zookeeper:
- 为HBase选举Master作为集群主管
- 存储HBase的Schema,有哪些表,每个表都有哪些列族
- 实时监控Region的位置信息,将上下线的信息实时通报给master
3、Master
- 为RegionServer分配Region
- 负责RegionServer的负载均衡
- 监控失效的RegionServer并将其Region重新分配
- 表的创建、删除、修改,列族的增加
4、RegionServer
- 负责维护分配给自己的Region
- 响应用户的读写请求
- 注:Hbase将一个table分割成若干的Region进行存储,每个Region会被Master分散到不同的RegionServer上进行存储。

示意图:Hbase中的表通过行键、按照一定的范围被分成三个Region进行管理,由Master分配给各个RegionServer
默认一个Region超过256M就会被分为两个,由Master分配给RegionServer进行管理。
Region以裂变形式分割,分裂时读取原Region,分裂后读取新Region
5、Store:每个列族对应一个Stroe,每个Store有一个StoreFile与之对应,每个StoreFile对应一个File。文件实际存储在File里
即:列族————Store————StoreFile————File
MemStore存储在内存中,File(StoreFile)存储在HDFS上
HBase用户读写:
- 写入数据时,分配到RegionServer进行
- 数据首先被写入MemStore和Hlog张
- 操作写入Hlog时,调用commit()函数,返回客户端
- 读取数据时,先在MemStore内进行寻找,若寻找不到则去StoreFile进行查找

HBase读取(以get 'user' row1001;为例)

HBase写入:
- 写操作到达RegionServer后,会将修改操作写入Hlog以及MemStore中。
- 系统定期刷新缓存,将MemStore中的内容写入文件中,生成新的StoreFile,将缓存清空,并在Hlog中做标记表示已写入文件。
问题:Hlog越来越大,StoreFile越来越多
解决方法
- 系统定期清理Hlog,将已写入的文件的记录删除
- StoreFile数量超过设定阈值,则触发合并操作,自行合并,若合并的StoreFile大小超过阈值,则触发拆分操作。
- Region大小达到一定值时,触发分割操作,形成新的Region,由Master分配RegionServer。

浙公网安备 33010602011771号