
Region核心切分流程
HBase将全部切分过程包装成了一个事务,意图可以或许包管切分事务的原子性。全部决裂事务过程分为三个阶段:prepare – execute – (rollback) ,操作模版如下:

prepare阶段:在内存中初始化两个子region,具体是生成两个HRegionInfo对象,包含tableName、regionName、startkey、endkey等。同时会生成一个transaction journal,这个对象用来记录切分的进展,具体见rollback阶段。
execute阶段:切分的核心操作。见下图(来自Hortonworks):
1、regionserver 更改ZK节点 /region-in-transition 中该region的状况为SPLITING。
3、在父存储目次下新建临时文件夹.split保存split后的daughter region信息。
4、封闭parent region:parent region封闭数据写入并触发flush操作,将写入region的数据全部持久化稻磁逄。此后短时光内客户端落在父region上的请求都邑抛出异常NotServingRegionException。
5、核心决裂步调:在.split文件夹下新建两个子文件夹,称之为daughter A、daughter B,并在文件夹中生成reference文件,分别指向父region中对应文件。这个步调是所有步调中最核心的一个环节,生成reference文件日记如下所示:

个中reference文件名为
2、master经由过程watch节点/region-in-transition检测到region状况改变,并修改内存中region的状况,在master页面RIT模块就可以看到region履行split的状况信息。
d24415c4fb44427b8f698143e5c4d9dc.00bb6239169411e4d0ecb6ddfdbacf66,格局看起来比较特别,那这种文件名具体什么含义呢?那来看看该reference文件指向的父region文件,根据日记可以看到,切分的父region是00bb6239169411e4d0ecb6ddfdbacf66,对应的切分文件是d24415c4fb44427b8f698143e5c4d9dc,可见reference文件名是个信息量很大年夜的定名方法,如下所示:

除此之外,还须要存眷reference文件的文件内容,reference文件是一个引用文件(并非linux链接文件),文件内容很显然不是用户数据。文件内容其实异常简单,重要有两部分构成:其一是切分点splitkey,其二是一个boolean类型的变量(true或者false),true表示该reference文件引用的是父文件的上半部分(top),而false表示引用的是下半部分 (bottom)。为什么存储的是这两部分内容?且听下文分化。
看官可以应用Hadoop敕令亲自来查看reference文件的具体内容:

6. 父region决裂为两个子region后,将daughter A、daughter B拷贝到HBase根目次下,形成两个新的region。
7. parent region通知修改 hbase.meta 表后下线,不再供给办事。下线后parent region在meta表中的信息并不会立时删除,而是标注split列、offline列为true,并记录两个子region。为什么不立马删除?且听下文分化。


在用法上,一般情况下应用默认切分策略即可,也可以在cf级别设置region切分策略,敕令为:

rollback阶段:如不雅execute阶段出现异常,则履行rollback操作。为了实现回滚,全部切分过程被分为很多子阶段,回滚法度榜样会根据当进步展到哪个子阶段清理对应的垃圾数据。代码中应用 JournalEntryType 来表征各个子阶段,具体见下图:

Region切分事务性包管
全部region切分是一个比较复杂的过程,涉及到父region中HFile文件的切分、两个子region的生成、体系meta元数据的更改等很多子步调,是以必须包管全部切分过程的事务性,即要么切分完全成功,要么切分完全未开端,在任何情况下也不克不及出现切分只完成一半的情况。
为了实现事务性,HBase设计了应用状况机(见SplitTransaction类)的方法保存切分过程中的每个子步调状况,如许一旦出现异常,体系可以根据当前所处的状况决定是否回滚,以及若何回滚。遗憾的是,今朝实现中这些中心状况都只存储在内存中,是以一旦在切分过程中出现regionserver宕机的情况,有可能会出现切分处于中心状况的情况,也就是RIT状况。这种情况下须要应用hbck对象进行具体查看并分析解决筹划。在2.0版本之后,HBase实现了新的分布式事务框架Procedure V2(HBASE-12439),新框架将会应用HLog存储这种单机事务(DDL操作、Split操作、Move操作等)的中心状况,是以可以包管即使在事务履行过程中介入者产生了宕机,依然可以应用HLog作为调和者对事务进行回滚操作或者重试提交,大年夜大年夜削减甚至杜绝RIT现象。这也是是2.0在可用性方面最值得等待的一个亮点!
推荐阅读
500元的ThinkPad电脑(图片截自58同城) 开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散 很多玩家对主机的机能寻求都是越高越好,当然,主机机能越强就可以加倍高效地完成义务,对>>>详细阅读
本文标题:HBase Region自动切分的所有细节都在这里了
地址:http://www.17bianji.com/lsqh/39600.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示