HBase 知识点

HBase数据模型

什么是HBase

HBase是开源的NoSQL分布式数据库,是阿帕奇软件基金会的项目之一。HBase参考谷歌BigTable设计,对稀疏表提供更高的存储空间使用率和读写效率。HBase采用存储计算分离架构,存储层基于HDFS存储数据,提供容错机制和可靠性,计算层提供灵活快速的水平扩展、负载均衡和故障恢复能力。

一个分布式系统最多只能同时满足一致性(Consistency)(all nodes see the same data at the same time)、可用性(Availability)(Reads and writes always succeed)和分区容错性(Partition tolerance)(the system continues to operate despite arbitrary message loss or failure of part of the system)这三项中的两项,HBase提供强一致语义,在CAP理论中属于CP系统。

HBase和关系型数据库的差异如下表所示。
image.png

HBase的数据模型

HBase以column family组织数据,以rowkey索引数据。其中列族需要在试用期那预先创建,列名不需要预先生命,因此支持半结构化数据模型。支持保留多个版本的数据,通过(行键+列族+列名+版本号)定位具体的值。

HBase数据模型的优缺点

image.png

HBase架构设计

主要组件设计:

  1. HMaster:元数据管理,集群调度,保活。
  2. RegionServer:提供数据读写服务,每个实例负责若干个互不重叠rowkey区间内的数据。
  3. ThriftServer:提供Thrift API读写的代理层。

组件依赖:

  1. Zookeeper:分布式一致性共识协作管理,例如HMaster选主,人物分发,元数据变更管理等。
  2. HDFS:分布式存储系统。

image.png

HMaster职责

  1. 管理RegionServer实例生命周期,保证服务可用性。
  2. 协调RegionServer数据故障恢复,保证数据正确性。
  3. 集中管理集群元数据,执行负载均衡。
  4. 定期巡检元数据,调整数据分布,清理废弃数据等
  5. 处理用户主动发起的元数据操作。

RegionServer职责

  1. 提供部分rowkey区间数据读写服务
  2. 如果负责meta表,向科五段SDK提供rowkey位置信息。
  3. 认领Hmaster发布的故障恢复任务
  4. 处理HMaster下达的元数据操作。

Zookeeper职责

  1. HMaster登记信息,对active/backup分工达成共识
  2. RegionServer登记信息,失联时HMaster保活处理
  3. 登记meta表位置信息,供SDK查询读写位置信息。
  4. 供HMaster和RegionServer写作处理分布式任务

Region负载均衡

定期巡检各个RegionServer上的region数量,保持region的数量均匀分布在各个RegionServer上。
简单负载均衡具体步骤:

  1. 根据总Region数量和RegionServer数量计算平均region数目,设定弹性上下界避免不必要的操作。
  2. 将RegionServer按照region数量降序排序,对region数量超出上限的选取要牵出的region并按创建时间从新到老排序

随机负载均衡

  1. 随机尝试不同的region放置策略,根据提供的cost function计算不同策略的分值排名
  2. cost计算将下列指标纳入统计:region负载,表负载,数据本地性,Memstore大小,HFile大小
  3. 根据配置加权计算最终cost。

FavoredNodeLoadBalancer

  1. 用于充分利用本地读写HDFS文件来优化读写性能。
  2. 每个region会指定优选的3个RegionServer地址,同时会告知HDFS在这些优选节点放置该region的数据
  3. 即使第一节点出现故障,HBase也可以将第二节点提升为第一节点,保证稳定的读时延。

HMaster恢复流程

HMaster自身恢复流程

  1. 监听到/hbase/active-master临时节点被删除的时间,触发主逻辑。
  2. 选主成功后执行HMaster启动流程,从持久化存储读取未完成的procedures从之前状态继续执行
  3. 故障HMaster实例恢复后发现主节点已经存在,继续监听/hbase/active-master

调度RegionServer的故障恢复流程

  1. AssignmentManager从procedure列表中找出Region-in- Transition状态的region继续调度过程
  2. RegionServerTracker从Zookeeper梳理online状态的RegionServer列表,结合ServerCrashProcedure列表,HDFS中WAL目录里alive/splitting状态RegionServer记录,获取掉线RegionServer的列表。
Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2015-2023 galaxy
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信