这是我参与「第四届青训营 」笔记创作活动的第11天。
Hbase介绍
- Hbase是采用列式存储,数据存储在hdfs上,因此易扩展高可靠,用于处理大规模数据的分布式非关系型数据库。
- HBase 的底层物理存储结构是(K-V)键值对。
优缺点
- 优点:海量数据低时延响应、列族存储降低字段数量多的影响、基于HDFS实现易扩展高容错。
- 缺点:不支持条件查询及多级索引,因此不适于OLAP及数据量小的时候。
整体架构
- Hbase由HMaster和HRegionServer组成,
- HMaster:
- HRegionServer:
- Region Server: 管理Region,其实现类为HRegionServer,负责处理读写请求,类似hdfs中的Datanode,直接对接用户的读写请求,是真正的干活的节点。
- 对数据操作:get、put、delete。
- 对Region操作:splitRegion、compactRegion。
- Master:管理所有的Region Server ,其实现类为HMaster,高可用依赖于zk,类似HDFS中的Namenode。
- 对表操作:create、delete、alter。
- 对RegionServer操作:分配regions 到每个RegionServer,监控每个RegionServer的状态,负载均衡和故障转移。
- Zookeeper:用于Master的高可用、RegionServer 的监控、元数据的入口以及集群配置的维护等工作。
- HDFS:作为HBase的底层数据存储,提供元数据和表数据的底层分布式存储服务,存储数据的多副本,保证高可靠和高可用。
大数据支撑
水平扩展能力
- 根据实际数据量的需要,可随时增加RegionServer 实例,均衡分配部分region到新实例。
- 弹性伸缩过程无需搬迁实际数据,可用性高,用户响应几乎不受影响。
Region热点切分
- 当某个region数据量过多,可将数据切分成多个独立的子region分摊负载。
- RegionServer在特定时机 ( flush、compaction)检查region是否应该切分,计算切分点并RPC上报 HMaster,由AssignmentManager负责执行RegionStateTransition。
- 不搬迁实际数据,切分产生的新region数据目录下生成一个以原region文件信息命名的文件,内容是切分点对应的rowkey,以及标识新region是上/下半部分的数据。
Region碎片整合
- 当某些region 数据量过小、碎片化,合并相邻region 整合优化数据分布。AssignmentManager创建MergeTableRegionsProcedure 执行整合操作。
- 不搬迁实际数据,通过reference file定位原region 的文件,直到下次compaction时实际处理数据。
- 注:只允许合并相邻region,否则会打破rowkey空间连续且不重合的约定。
负载均衡与故障恢复机制
- 负载均衡:定期巡检各RegionServer 上的region数量,保持region的数量均匀分布在各个RegionServer 上。
- 故障恢复机制:使用zk监控节点状态(心跳检测)
- Master节点宕机:zk选举新Master。
- RegionServer节点宕机:将节点所有Region重新分配到集群中其他正常的RegionServer上,再根据HLog进行丢失数据恢复。