Region切分对其它模块的影响经由过程region切分流程的懂得,我们知道全部region切分过程并没有涉及数据的移动,所以切分成本本身并不是很高,可以很快完成。切分后子region的文件实际没有任何用户数据,文件中存储的仅是一些元数据信息-切分点rowkey等,那经由过程引用文件若何查找数据呢?子region的数据现其实什么时刻完成真正迁徙?数据迁徙完成之后父region什么时刻会被删掉落?
1. 经由过程reference文件若何查找数据?
这里就会看到reference文件名、文件内容的实际意义啦。全部流程如下图所示:

根据reference文件名(region名+真实文件名)定位到真实数据地点文件路径。
定位到真实数据文件就可以在全部文件中扫描待查KV了么?非也。因为reference文件平日都只引用了数据文件的一折半据,以切分点为界,要么上半部分文件数据,要么下半部分数据。那到底哪部分数据?切分点又是哪个点?还记得上文又提到reference文件的文件内容吧,没错,就记录在文件中。
2. 父region的数据什么时刻会迁徙到子region目次?
谜底是子region产生major_compaction时。我们知道compaction的履行实际上是将store中所有小文件一个KV一个KV大年夜小到大年夜读出来之后再次序写入一个大年夜文件,完成之后再将小文件删掉落,是以compaction本身就须要攫取并写入大年夜量数据。子region履行major_compaction后会将父目次中属于该子region的所稀有据读出来并写入子region目次数据文件中。可见将数据迁徙放到compaction这个阶段来做,是一件趁便的事。
有些时刻会有同窗反馈说集群中部分region处于长时光RIT,region状况为spliting。平日情况下都邑建议应用hbck看下什么报错,然后再根据hbck供给的一些对象进行修复,hbck供给了部分敕令对处于split状况的rit region进行修复,重要的敕令如下:
实际上HMaster会启动一个线程按期遍历检查所有处于splitting状况的父region,肯定检查父region是否可以被清理。检测线程起首会在meta表中揪出所有split列为true的region,并加载出其决裂后生成的两个子region(meta表中splitA列和splitB列),只须要检查此两个子region是否还存在引用文件,如不雅都不存在引用文件就可以认为该父region对应的文件可以被删除。如今再来看看上文中父目次在meta表中的信息,就大年夜概可以懂得为什么会存储这些信息了:

4. split模块在临盆线的一些坑?

个中最常见的问题是 :

简单解释一下,这个缺点是说reference文件所引用的父region文件不存在了,如不雅查看日记的话有可能看到如下异常:

父region文件为什么会莫名其妙不存在?经由和同伙的评论辩论,确认有可能是因为官方bug导致,详见HBASE-13331。这个jira是说HMaster在确认父目次是否可以被删除时,如不雅检查引用文件(检查是否存在、检查是否可以正常打开)抛出IOException异常,函数就会返回没有引用文件,导致父region被删掉落。正常情况下应当保险起见返回存在引用文件,保存父region,并打印日记手工介入查看。如不雅大年夜家也碰到类似的问题,可以看看这个问题,也可以将修复patch打到线上版本或者进级版本。
【编辑推荐】
- Spark 2.0面纱半揭,相干细节惹人联想
- HBase道理-要弄懂的sequenceId
- 一文看懂HIVE和HBASE的差别
- 阿里5位嘉宾3个分享:HBaseCon Asia 2017干货满满
- 分布式存储体系HBase的架构
推荐阅读
500元的ThinkPad电脑(图片截自58同城) 开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散 很多玩家对主机的机能寻求都是越高越好,当然,主机机能越强就可以加倍高效地完成义务,对>>>详细阅读
本文标题:HBase Region自动切分的所有细节都在这里了
地址:http://www.17bianji.com/lsqh/39600.html
1/2 1

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