HBase1.x中Region的拆分是怎样的

技术HBase1.x中Region的拆分是怎样的这篇文章给大家介绍HBase1.x中Region的拆分是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。第一部门:Region拆分的实现 c

本文介绍了如何在HBase1.x中拆分区域,内容非常详细。感兴趣的朋友可以参考一下,希望对你有所帮助。

第一部分:区域分割的实现。

客户端将数据写入hbase。首先,它从zookeeper获取存储元数据的regionserver,查找相应的区域,在区域中查找列族,并首先将数据写入memstore。首先,它将被写入memstore(默认为128MB)(如果打开了WAL日志,它将首先被写入WAL日志)。随着数据写入的增加,会触发刷新操作,溢出到磁盘文件生成StoreFile。当存储文件堆积起来时,区域服务器会将它们压缩成更少更大的文件。每次刷新或压缩后,存储在该区域中的数据量会发生变化。区域服务器将根据配置的区域分割策略确定是否提交分割请求。

分割策略是在HBase-site.xml中配置的。HBase的默认分割策略是:递增上限区域分割策略:

property name hbase . regionserver . region . split . policy/namevaluorg . Apache . Hadoop . hbase . regionserver . additioning upper borboundgionsplitpolicy/value/property

地区的划分由地区服务器在当地决定,但会有许多参与者的协调。划分前后,Regionserver会通知HMaster更新的元数据表信息。mea并重新排列HDFS目录结构和数据文件。区域服务器将保留执行状态的日志,以便在出现错误时可以回滚任务。以下是海航官网区域划分实施流程图。来自区域服务器或主服务器的操作显示为红色,而来自客户端的操作显示为绿色,如图所示:

HBase1.x中Region的拆分是怎样的

在RegionServer拆分的第一步中,RegionServer获取表的共享读锁,以防止在拆分过程中修改模式。然后在zookeeper下创建一个znode in/hbase/region-in-transition/region-name,并将z node的状态设置为SPLITTING。

师父开始了解znode是因为它有一个过渡区域观察者。

区域服务器创建一个子目录。在HDFS的父区域目录中拆分。

区域服务器关闭父区域,并在其本地数据结构中将该区域标记为脱机。分割区域现在脱机。此时,来自父区域的客户端请求将引发NotServingRegionException。客户端将重试一些备份。关闭的区域被刷新。

区域服务器为。拆分目录,并创建必要的数据结构。然后,它会拆分存储文件,因为它会为父区域中的每个存储文件创建两个参考文件。这些参考文件将指向父区域的文件。

区域服务器在HDFS创建实际的区域目录,并为每个子区域移动参考文件。

区域服务器向发送一个Put请求。META。表中设置父区域。META。表,并添加有关子区域的信息。这里,子区域在。META。不会有单独的条目。客户端在扫描时会看到父区域被分割。META。但是他们不会知道这些子区域,直到他们出现在。META。另外,如果放到。META。如果成功,父区域将被有效分割。如果区域服务器在此RPC成功之前失败,主服务器和下一个区域服务器将打开该区域,以清除关于区域分割的不干净状态。更新后。META。区域划分将由主机向前滚动。

RegionServer并行打开childreigon A和b。

RegionServer将子reigon A和b添加到。米(meter的缩写))

ETA.,连同它承载区域的信息。拆分reigon 现在处于在线状态。在此之后,客户端可以发现新的reigon 并向他们发出请求。客户端在本地缓存.META.条目,但是当他们向RegionServer或者.META.发出请求时,他们的缓存将失效,他们将从.META.中了解新的reigon 。

  • RegionServer更新ZooKeeper中的znode /hbase/region-in-transition/region-name以表示状态SPLIT,以便主服务器可以了解它。必要时,平衡器可以自由地将子reigon 重新分配给其他RegionServer。拆分事务现在已完成。

  • 拆分之后,.META.和HDFS仍将包含对parent region的引用。在child region中进行压缩重写数据文件时,这些引用将被删除。主服务器中的垃圾收集任务会定期检查child region是否仍然引用parent region的文件。否则,parent region将被删除。

  • 第二部分:Region拆分方式

        主要有三种拆分方式:预拆分、自动拆分、手动强制拆分;

        1.预拆分,

        就是在新建表时进行region拆分,根据数据分布特点,提前预分区可减少rowkey热点问题,另一方面减少region分裂导致短时不可用。

    两种方法预分区:

    方法一:

    hbase org.apache.hadoop.hbase.util.RegionSplitter table_spilt_test1  HexStringSplit -c 10 -f info1:info2:info3

    表名:table_spilt_test1  

    拆分的region的数量:10

    列族:info1,info2,info3

     方法二:

    指定每个预拆分的region的rowkey的开始值

    create 'test_table', 'table_spilt_test1  ', SPLITS=> ['1001', '2001', '3001']

    2.自动拆分:

        Region默认大小为10G,超过10G就自动进行拆分,Region大小通过下面面这个参数控制,生产环境如果预分区后,每个Region数据都比较大可改成20G 30G:

        <property>      <name>hbase.hregion.max.filesize</name>      <value>10737418240</value>    </property>

    3.手动强制拆分:

        可在hbase shell根据提示,对某个region进行强制拆分

    Examples:    split 'tableName'    split 'namespace:tableName'    split 'regionName' # format: 'tableName,startKey,id'    split 'tableName', 'splitKey'    split 'regionName', 'splitKey

    第三部分:Region拆分触发条件

        HBase表的拆分由以下公式决定:

    Min (X^2 * "hbase.hregion.memstore.flush.size", "hbase.hregion.max.filesize")

    说明:

    1).X是该region中所包含的该表的region的数量;

    2).hbase.hregion.memstore.flush.size默认值是128M;

    3).hbase.hregion.max.filesize 默认值是10GB

        新建一张表并开始写入数据时,当达到128M开始第一次拆分,之后依次是512MB, 1152MB, 2GB, 3.2GB, 4.6GB, 6.2GB时候开始进行拆分,当达到hbase.hregion.max.filesize的设定值时便会永远在storefile 达到hbase.hregion.max.filesize进行拆分。

        需要特别注意的是filessize指的是store下的storefile的大小并不是整个region的大小,一个region可能包含很多个store,确切的说是该表有多少个family就有多少个store,当某个family下的storefile达到以上标准是就会拆分整个region而不管改region下的其他的store下的storefile是否已经达到触发条件。

    关于HBase1.x中Region的拆分是怎样的就分享到这里了,希望

    内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/93995.html

    (0)

    相关推荐

    • 问所从来的所,《桃花源记》究竟讲了什么

      技术问所从来的所,《桃花源记》究竟讲了什么《桃花源记》——理想和现实的对白问所从来的所! 《桃花源记》是田园诗人陶渊明写的一篇散文诗般的短文,短文给我们描绘了一个乱世中的天堂——桃花源。这是一个质朴自然化的净土:她宁静和

      生活 2021年10月28日
    • 滥竽充数的道理,滥竽充数告诉我们什么道理

      技术滥竽充数的道理,滥竽充数告诉我们什么道理滥竽充数讲的是战国时有个国军齐宣王喜欢听乐队演奏滥竽充数的道理,而且人越多合奏越觉得气派动听。根本不懂音乐的南郭先生了解了齐宣王的喜好,蒙混到合奏队伍之中,假模假式的吹的很卖力

      生活 2021年10月26日
    • 1000平方米等于多少公顷,一千米平方千米等于多少公顷

      技术1000平方米等于多少公顷,一千米平方千米等于多少公顷1平方千米(km²)=100公顷(ha) 1公顷=10000平方米 1平方千米(k㎡) = 1,000,000平方米(㎡) = 100公顷(ha) 1平方米=10

      生活 2021年10月26日
    • Struts2 checkbox适用场景及分析是这样的

      技术Struts2 checkbox适用场景及分析是这样的Struts2 checkbox适用场景及分析是这样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,

      攻略 2021年11月16日
    • 网页图片,网页图片多少KB最适合

      技术网页图片,网页图片多少KB最适合网页图片10kb-50kb最适合网页图片。网页一般分两种,如果是网页源文件的话那就得看网页内容和程序的复杂,网页源文件因为都是代码,所以一般也就1KB左右。还有就是说被执行过的网页,也

      生活 2021年10月26日
    • 如何重新安装COM

      技术如何重新安装COM这篇文章主要介绍了如何重新安装COM,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。  1.在Windows桌面上,单击“开始”,然后

      攻略 2021年12月8日