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)

    相关推荐

    • 703. 数据流中的第 K 大元素

      技术703. 数据流中的第 K 大元素 703. 数据流中的第 K 大元素设计一个找到数据流中第 k 大元素的类(class)。注意是排序后的第 k 大元素,不是第 k 个不同的元素。
      请实现 KthL

      礼包 2021年12月20日
    • testflight 已移除测试人员(iphone testflight)

      技术iOS真机调试TestFlight安装及提交App Store审核的示例分析这篇文章主要介绍iOS真机调试TestFlight安装及提交App Store审核的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣

      攻略 2021年12月20日
    • 记录ABAP开发的日常——SmartForms模板固定N行显示

      技术记录ABAP开发的日常——SmartForms模板固定N行显示 记录ABAP开发的日常——SmartForms模板固定N行显示前言:这里面介绍一下SmartForms里面使用Template的情况下

      礼包 2021年12月20日
    • 形容难忘的成语,有什么成语形容难以忘怀

      技术形容难忘的成语,有什么成语形容难以忘怀1形容难忘的成语、刻骨铭心2、念念不忘 3、没齿难忘
      4、难以忘怀
      5、耿耿于怀
      6、魂牵梦萦
      7、朝思暮想
      8、 难以忘怀
      9、刻骨铭心
      10、记忆犹新
      1、刻骨铭心

      生活 2021年10月26日
    • 怎么提高下载速度,如何让电脑下载速度变得更快

      技术怎么提高下载速度,如何让电脑下载速度变得更快如题所述如何让下载速度变快怎么提高下载速度?在电脑日常的使用过程中,下载文件,往往会遇到下载缓慢,或突然中断的现象
      怎么怎样才能提高电脑的下载速度?
      首先,最基本的就是,网

      生活 2021年10月28日
    • 夕阳余晖啥意思是什么,落日余晖,残阳晚霞是什么意思

      技术夕阳余晖啥意思是什么,落日余晖,残阳晚霞是什么意思这句话的意思是傍晚的时候,落日的余晖倒映着晚霞夕阳余晖啥意思是什么。出自当代诗家张小红的《浣溪沙·寄夫》:落日余晖映彩霞,绵绵心事向天涯。相思飞过老篱笆。烦闷休贪杯里

      生活 2021年10月28日