龙空技术网

大数据开发-HBase拆分

BtcRats 104

前言:

现时你们对“hbase splits”可能比较着重,咱们都想要知道一些“hbase splits”的相关内容。那么小编在网摘上汇集了一些有关“hbase splits””的相关知识,希望朋友们能喜欢,同学们一起来学习一下吧!

我们都知道,region在数据量大到一定程度的时候,会进行拆分(最开始由一个变成二个),而拆分的方式有三种,包括预拆分、自动拆分、手动强制拆分。下面就来介绍拆分的方式,作为学习大数据开发的小技巧之一,这个非常实用。

Region拆分初识

一个Region代表一个表的一段Rowkey的数据集合,当Region太大,Master会将其拆分。Region太大会导致读取效率太低,遍历时间太长,通过将大数据拆分到不同机器上,分别查询再聚合,Hbase也被人称为“一个会自动分片的数据库”。

Region可以预拆分、自动拆分及手动拆分。下面就来分别讲解这三个拆分的方法。

一、预拆分

预拆分(pre-splitting)就是在建表的时候就定义好了拆分点的 算法,所以叫预拆分。

预拆分一部分的作用能减少rowkey热点,另外一部分能减轻region切分时导致的服务不可用。

(1)Hex拆分点

上面这条命令的意思就是新建一个叫my_split_table的表,并根据 HexStringSplit拆分点算法预拆分为10个Region,同时要建立的列组叫 mycf。

(2)手动指定拆分点

手动指定拆分点的方法就是在建表的时候跟上SPLITS参数,比如:

二、自动拆分

(1)固定大小拆分

固定大小拆分策略,0.94版本之前的唯一拆分方法,如果单个Region大小超过了阀值那么就拆分为两个Region,这种策略使得急群众的Region大小很平均。唯一的参数是(hbase-site.xml):

hbase.hregion.max.filesize:region最大大小,默认为10GB

<property>

<name>hbase.hregion.max.filesize</name>

<value>10 * 1024 * 1024 * 1024</value>

</property>

(2)动态限制拆分策略

动态限制拆分策略,是新版本的默认策略。有的数据库文件增长是翻倍的数据量,128M,256M,512M……,该策略与之类似,限制是动态的,计算公式为:

Math.min(tableRegionsCount^3 * initialSize,defaultRegionMaxFileSize)

1.tableRegionCount:当前表在所有RegionServer上拥有的所有的Region数量的总和

2.initialSize:如果定义了hbase.increasing.policy.initial.size,则使用该值,否则用memstore刷写值得2倍,即hbase.hregion.memstore.flush.size*2。

3.deffaultRegionmaxFileSize:ConstantSizeRegionSplitPolicy所用到的配置项,也就是Region的最大大小

4.Math.min:取这两个数值的最小值

当初始hbase.hregion.memstore.flush.size定义为128M,过程为:

刚开始只有一个Region,上限为1^31282=256M

当有2个Region,上限为2^31282=2048M

当有3个Region,上限为3^31282=6912M

以此类推当有4个Region时候,为16G,上限达到了10GB,最大值就保持在了10G,Region数量再增加也不会增加上限

三、手动拆分

除了预拆分和自动拆分以外,你还可以对运行了一段时间的Region 进行强制地手动拆分(forced splits)。方法是调用hbase shell的 split方法,比如:

我们一开始可以先定义拆分点,但是当数据开始工作起来后会出现热点 不均的情况,所以推荐的方法是:先用预拆分导入初始数据。然后用自动拆分来让HBase来自动管理Region。

region自动拆分默认选择Region当中最大Store下的最大Storefile文件中的midkey,而midkey其实只是在通过HFile获取了这个文件之前记录好的数据。在自动触发Split操作的前提下,大部分的Split操作都伴随在Compaction操作之后进行的原因,在于可以对于Region中的文件进行合并,生成较大的StoreFile文件,以方便选择更好的SplitPoint。

以上就是本期的所有内容了,我们要学会一些小技巧,这对我们的大数据开发学习是非常有帮助的。

希望大家点个关注,及时收取最新文章推送,想了解更多敬请咨询加米谷大数据。

有问题的欢迎在评论区留言,如有侵权请告知。

标签: #hbase splits