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)

    相关推荐

    • 智能机怎么刷机,nokla智能机怎么刷机

      技术智能机怎么刷机,nokla智能机怎么刷机有两种刷机。1软刷:恢复出厂设置 2硬刷:(个人不建议)刷机前要备份好重要数据像手机号码什么的 。下面是硬刷过程(搜索粘贴的)  一、准备  1、下载navifirm  2、下

      生活 2021年10月22日
    • parameters里的默认数值怎么设置(parameters怎么赋值给它)

      技术Parameters参数怎么使用本篇内容介绍了“Parameters参数怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够

      攻略 2021年12月24日
    • es6.4.2api

      技术es6.4.2api es6.4.2api这是讲数据库的数据导入到es里 所有用到了mysql!
      1.依赖xml version="1.0" encoding="UTF-8"
      project xml

      礼包 2021年12月15日
    • 台式电脑屏幕亮度怎么调节,如何调节台式电脑屏幕亮度

      技术台式电脑屏幕亮度怎么调节,如何调节台式电脑屏幕亮度调节台式电脑屏幕亮度方法:首先鼠标右键单击桌面空白处台式电脑屏幕亮度怎么调节,选择NVIDIA的控制面板。其次需要点击调整桌面颜色设置,在选择颜色设置方式下方,选择使

      生活 2021年10月22日
    • 数据库中Oracle DB2随取几行的示例分析

      技术数据库中Oracle DB2随取几行的示例分析小编给大家分享一下数据库中Oracle DB2随取几行的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们

      攻略 2021年11月20日
    • eos区块链技术(eos怎么能增长)

      技术在EOS区块链上使用EOSJS和scatter开发dApp今天就跟大家聊聊有关在EOS区块链上使用EOSJS和scatter开发dApp,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根

      攻略 2021年12月14日