HMaster主要组件|青训营笔记

291 阅读2分钟

这是我参与【第四届青训营】笔记创造活动的第九天。

HMaster主要组件

CatalogJanitor

定期扫描元数据hbase:meta的变化,回收无用的region(仅当没有region-in-transition时)。

scan方法执行扫描、回收操作:

  1. 扫描一遍hbase:meta找出可回收的region,检查元数据一致性并生成报告实例
  1. 已完成merge或split的region都可被回收,即子目录/父目录没有reference文件后
  1. 创建GCMultipleMergedRegionsProcedure/GCRegionProcedure异步回收regions

    1. GCMultipleMergedRegionsProcedure步骤:

      1. merge的两个源region分别创建GCRegionProcedure删除region数据
      2. 删除merge生成region元信息的merge qualifiers(info:mergeN)
    2. GCRegionProcedure步骤:

      1. archive要回收region的HFiles
      2. 删除region对应的WAL
    3. assignmentManager删除region state

    4. meta表删除该region记录

    5. masterService、FavoredNodesManager删除该region

AssignmentManager

管理region分配,processAssignQueue方法每当pendingAssignQueue放满RegionStateNode时批量处理。单独启动daemon线程循环处理。

processAssignmentPlans方法雇用LoadBalancer

  1. 首先尝试尽量保持现有分配
  1. 将分配plan的目标server region location更新到对应RegionStateNode中
  1. 将regionNNode的ProcedureEvent放入队列,统一唤醒所有regionNodes的events上等待的procedures
  1. 不保持原有分配的通过loadbalancer的round-robin策略分配(原则是不能降低availability)
  1. 分配失败的塞回pendingAssignQueue下次重新处理

setupRIT方法处理RIT,仅仅是设置RegionStateNode的this.procedure和ritMap

HBase集群架构

Zookeeper

提供分布式一致性的元数据管理服务。HBase使用Zookeeper实现master节点信息登记、master节点选主、RegionServer信息登记、分布式任务管理等功能。

HMaster

元信息管理组件,以及集群调度、保活等功能。通常部署一个主节点和一到多个备节点,通过Zookeeper选主。

RegionServer

提供数据读写服务,每个实例负责一段不重叠的连续rowkey范围内的数据。

ThriftServer

提供一层以Thrift协议访问数据的代理层