Hadoop在简书Hadoop玩转大数据

Region详解

2016-12-30  本文已影响2836人  和心数据
Region,图片来自Map-R

1 层级结构

2 重要成员

2.1 Region

Region是HBase数据存储和管理的基本单位

2.1.1 Region的数量设计

设计的本意是每个Server运行小数量(2-200)个大容量(5-20Gb)的Region,理由如下:

2.1.2 Region的分配

2.1.2.1 启动时的分配步骤

  1.  Master启动时调用 AssignmentManager。
    
  2.  AssignmentManager 查看hbase:meta中已经分配好的Region
    
  3.  如果Regiond的分配依然有效的话 (如果RegionServer 仍然在线的话) 维持当前分配
    
  4. 如果分配失效,LoadBalancerFactory 会被调用来分配region. 负载均衡器(HBase 1.0默认使用StochasticLoadBalancer ) 分配任务到Region Server中
    
  5.  如果需要的话,Region Server分配信息会更新到hbase:meta中。RegionServer启动时调用启动代码来启动region。
    

2.1.2.2 RegionServer失效时的分配步骤

  1. Region Server挂掉后它上面的regions变得不可用。
  2. Master检测到Region Server挂掉了。
  3. 失效Region Server上的region分配会被认为无效并采用跟启动时同样顺序的步骤分配region
  4. 正在进行的查询操作会重新执行,不会丢失
  5. 切换动作要在以下时间内完成:
    ZooKeeper session timeout + split time + assignment/replay time

2.1.3 Region的位置选择

Region的位置选择通过HDFS的复制机制完成

1)步骤:

  1. 第一个副本写在本地节点
  2. 第二副本写到另一个机上任意节点
  3. 第三个副本写到跟第二副本相同机架不同节点的其他节点
  4. 后面的副本将写到集群中的任意节点中。
副本,图片来自Map-R

2)要点:

2.1.4 Region的切分

<property>
  <name>hbase.regionserver.region.split.policy</name>
  <value>org.apache.hadoop.hbase.regionserver.IncreasingToUpperBoundRegionSplitPolicy</value>
</property>
Region 分裂,图片来自Map-R

2.1.5 Region的合并

2.1.5.1 意义

2.1.5.2 步骤

  1. 客户端发送指令给Master
  2. Master收到指令后将要合并的region移动到指定的RegionServer
  3. Master发送Merge请求给指定的RegionServer执行合并操作
  4. 最后将被合并的regions从hbase:meta中删除并添加合并后的region

2.2 Store

2.2.1 MemStore

2.2.2.1 MemStore Flush的触发情况

单个MemStore阀值:hbase.hregion.memstore.flush.size
RS中MemStore上限值:hbase.regionserver.global.memstore.upperLimit

RS中MemStore安全值:hbase.regionserver.global.memstore.lowerLimit
WAL阀值:hbase.regionserver.max.logs

2.3 StoreFile/HFile

2.3.1 格式

2.3.1.1 概念:

2.3.1.2 HFile 结构

结构图如下:


HFile结构图 Trailer结构

2.3.2 KeyValue

KeyValue格式

KeyValue以字节数组的形式存储,包含以下部分:

Key的格式如下:

2.4 Scan 步骤

  1. 当客户端提交scan请求时,HBase会创建为每个Region创建RegionScanner 实例来处理scan请求

2.5 Compaction

2.5.1 Minor Compaction(次压缩)

HBase会自动挑选小的临近的HFiles将它们重新写到一些大的HFiles中。这个过程称为次压缩。次压缩通过将更小的files写到一些大的flies进行合并操作来实现减少file的数量。


Minor Compaction,图片来自Map-R

2.5.2 Major Compaction(主压缩)

Major Compaction,图片来自Map-R

2.6 Region 负载均衡

当region分裂之后,RS之间的region数量差距变大时,HMaster便会执行负载均衡来调整部分region的位置,使得每个RS的region数量保持在合理范围之内,负载均衡会引起region的重新定位,使得涉及的region不具备数据本地性,即HFile和region不在同一个DataNode。这种情况会在major compaction 之后得到解决。


负载均衡,图片来自Map-R

参考文章:
HFile: A Block-Indexed File Format to Store Sorted Key-Value Pairs
Apache HBase ™ Reference Guide
An In-Depth Look at the HBase Architecture

若有侵权,请联系我。

上一篇 下一篇

猜你喜欢

热点阅读