码迷,mamicode.com
首页 > 其他好文 > 详细

HMaster/HRegion 工作原理

时间:2017-09-14 18:57:13      阅读:496      评论:0      收藏:0      [点我收藏+]

标签:无法创建   对应关系   redo   media   point   nbsp   没有   系统   轮询   

 
1.系统架构
 
技术分享
 
 
2. HMaster/HRegion 工作原理
 
HRegion Server上线
 
    HMaster通过Zookeeper来追踪HRegion Server的状态。
 
    HRegion Server 上线时,首先在Zookeeper的server目录中创建自己的文件,并取得文件的独占锁。
 
    由于HMaser订阅了server目录,当目录下有文件增加或者删除时,HMaster能收到来自Zookeeper的实时通知,因此当HRegion Server上线时HMaster能马上得到消息。
 
HRegion Server下线
   
    HRegion server下线时,它断掉了Zookeeper的通讯,Zookeeper便会释放代表server的文件的独占锁。
 
    HMaster轮询Zookeeper server目录下文件的独占锁。 当HMaster发现某个Region server丢失了自己的独占锁(或者HMaster与HRegion server连续几次通讯都不成功), HMaster将尝试获取该文件的读写锁,一旦获取成功,说明:
 
  • 该HRegion server与Zookeeper通讯已经断开
  • 该HResion server挂了
 
      无论哪种情况,HMaster将删除Server目录下代表该server的文件,并将该server的所有region,并将其分配给其他或者的server。 如果HRegion server因为临时网络断开丢失了锁,并很快恢复与Zookeeper的通讯,只要代表其的文件没有被删除,它会继续尝试或许该文件的锁,一旦获取成功,它就可以接着服务
 
HMaster上线
 
HMaster启动时:
1. 从 Zookeeper中获取一个代表HMaster的锁,用以阻止其他Master成为Master
2. 扫描Zookpper中的server目录,获取HRegion server的list
3. 与2中获取的server 通讯,获取已分配的region和region server的对应关系 
我的理解:
前面讲过region的encode值就是存放region的文件的目录名,这些目录位于hdfs中的hbase相关的数据目录中.
所以HMaster可以扫描这些目录获取region的信息,根据region的名字就可以从hbase:meta中获取相应的HRegion Server信息
4扫描hbase:meta表,记录尚未分配的region的信息,并添加到待分配的region列表中
 
HMaster下线
 
HMaster下线时,由于它不参与client的IO操作,所以这些操作不受影响。HMaster下线仅导致元数据的操作(比如无法创建表,无法修改表结构,无法进行负载均衡,无法进行region的合并,但是split可以进行,因为split只有HRegion server参与)受影响,用户的IO操作可以继续进行。所以短时间内的HMaster下线对HBase集群影响不大。
 
 
小结:HMaster 和HRegion Server通在Zookeeper中创建Ephemeral(临时的)节点来完成注册。
具体的HMaster默认在 /hbasae/master目录下创建,HRegion Server在 /hbase/rs/*下创建, 创建后通过HeartBeat来维持关系。
 
 
6 读写过程
 
  • 写入
首先在HLog中记录日志,然后写入到MemStore中,直接返回成功,不需要等待写入HDFS的结果,所以速度很快。
 
MemStore中的记录达到一定阈值时,会创建一个新的MemStore,并将旧的MemStore添加到Flush队列,有专门的线程负责Flush到StoreFile中去,同时在Zookeeper中记录redo point,表明这之前的记录都已经持久化过
 
写入到StoreFile中的文件只能写入,不能修改(由HDFS的特性决定的), 因此数据修改的过程是不断创建Storefile的过程,因此对应于同一记录,可能有很多历史版本,很多可能是垃圾数据。当Storefile个数到一定阈值时,系统会进行合并,将同一记录的垃圾数据清理掉。 当合并的文件大小超过一定阈值时,进行分裂,防止文件过大。
 
系统崩溃时,系统会根据redo point /check point? 和HLog中的记录来恢复MemStore中丢失的数据
 
 
  • 读出
读出的数据是MemStore和Storefile中的数据的总和。 由于是按照Rowkey排序的,所以合并也很快。而且真正的合并是索引的合并,所以很快
 
7 分裂
8 压缩
压缩
 


参考文献:

HMaster/HRegion 工作原理

标签:无法创建   对应关系   redo   media   point   nbsp   没有   系统   轮询   

原文地址:http://www.cnblogs.com/yanzibuaa/p/7521624.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!