浅析 HBase | 青训营

113 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第11天。

Hbase介绍

  • Hbase是采用列式存储,数据存储在hdfs上,因此易扩展高可靠,用于处理大规模数据的分布式非关系型数据库。
  • HBase 的底层物理存储结构是(K-V)键值对。

优缺点

  • 优点:海量数据低时延响应、列族存储降低字段数量多的影响、基于HDFS实现易扩展高容错。
  • 缺点:不支持条件查询及多级索引,因此不适于OLAP及数据量小的时候。

整体架构

  • Hbase由HMaster和HRegionServer组成,
    • HMaster:
    • HRegionServer:
  1. Region Server: 管理Region,其实现类为HRegionServer,负责处理读写请求,类似hdfs中的Datanode,直接对接用户的读写请求,是真正的干活的节点。
    • 对数据操作:get、put、delete。
    • 对Region操作:splitRegion、compactRegion。
  2. Master:管理所有的Region Server ,其实现类为HMaster,高可用依赖于zk,类似HDFS中的Namenode。
    • 对表操作:create、delete、alter。
    • 对RegionServer操作:分配regions 到每个RegionServer,监控每个RegionServer的状态,负载均衡和故障转移。
  3. Zookeeper:用于Master的高可用、RegionServer 的监控、元数据的入口以及集群配置的维护等工作。
  4. 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进行丢失数据恢复。