hbase Normalizer解决预分区错误,在不动数据的情况
1.对于预分区错误,hbase使用什么功能解决?
2.Region Normalizer的功能是什么?
3.在什么情况下运行Normalizer 比较好?
4.哪个版本开始有Normalizer功能?
5.什么情况下Normalizer会合并region?
6.什么情况下Normalizer会分裂region?
很多人遇到hbase已经预分区完毕,在装上数据之后,发现并不是很合理,有的分区数据多,有的数据很少。想重新划分分区。这在以前的版本是非常的困难的,解决办法只有重新创建建表,然后重新导数据,这是非常麻烦的,特别是数据量已经非常大。hbase为了解决这个问题,增加了Normalizer这个功能.
Region Normalizer使用表的所有region大致相同大小。它通过找到一个粗略的平均值来做到这一点。大于这个平均值【size】的两倍的region将会被分割。更小的region将会合并到相邻的region。
在集群空闲的时候,或则比较大的改动后比如大量删除,适合运行Normalizer 。自HBase-1.2开始,Region Normalizer便具有功能。它运行一组预先计算的merge/split操作,以调整比table的平均region太大或太小区region。Region Normalizer为hbase所有表调用计算‘plan’。系统表(比如 hbase:meta, hbase:namespace, Phoenix 系统等)和用户表当计算‘plan’时,禁用Normalizer会被忽略。对于启用了normalization的表,normalization plan跨多个表并行执行。
可以使用HBase shell中的'normalizer_switch'命令在整个集群中全局启用或禁用Normalizer。Normalization 也可以在每一个表基础上进行控制,默认情况下创建表时禁用此操作。通过将NORMALIZATION_ENABLED表属性设置为true或false,可以启用或禁用表的Normalization。
检测normalizer状态和enable/disable normalizer
启用时,每5分钟在后台调用Normalizer(默认情况下),可以在hbase-site.xml中配置hbase.normalization.period时间。Normalizer也可以使用HBase shell的normalize命令手动/编程调用。HBase默认使用SimpleRegionNormalizer,但只要用户实现RegionNormalizer接口,用户就可以继承RegionNormalizer接口设计自己的normalizer 。有关SimpleRegionNormalizer用于计算normalization plan的逻辑的详细信息,请参阅此处(https://hbase.apache.org/devapid ... gionNormalizer.html)。截图如下
下面展示了为用户表计算的normalization plan,合并操作由SimpleRegionNormalizer采取的计算规范化计划(normalization plan )。
假如一个具有一些预分割区域的用户表,其具有3个同样大的region(大约100K行)和1个相对小的区域(大约25K行)。 以下是hbase meta表扫描的部分,显示用户表的每个预分割regions 。
在HBase shell中使用'normalize'调用标准化程序(normalizer ),HMaster日志中的以下日志片段显示按照为SimpleRegionNormalizer定义的逻辑计算的标准化计划(normalization plan)。 由于表中相邻最小区域的总区域大小(以MB为单位)小于平均区域,因此规范器计算( normalizer computes)合并这两个区域的计划。
Region normalizer按照计算计划,合并start key作为‘’,和end key为'1'的region。另外一个region,start key为‘1’,end key为‘3’,现在这两个region合并为一个新的region,start key 为‘’ 和end key 为‘3’
对于具有3个较小region和1个较大region的用户表可以看到类似的例子。 在这个例子中,我们有一个用户表,其中一个大region包含100K行,另外三个region相对较小,每个region大约有33K行。 从规范化计划中( normalization plan)可以看出,由于较大的region是平均region大小的两倍以上,所以它们分割成两个region - 一个以start key为'1',end key为'154717',另一个区域的start key为 '154717'和end key为'3'
时间:2018-10-09 22:27 来源: 转发量:次
声明:本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。
相关文章:
- [数据挖掘]大数据关键技术浅谈之大数据存储及管理
- [数据挖掘]HBase数据迁移到Kafka?这种逆向操作你懵逼了吗?
- [数据挖掘]Apache2019年度报告出炉,HBase、Flink、Beam成最活跃
- [数据挖掘]PinalyticsDB:基于HBase的时间序列数据库
- [数据挖掘]PinalyticsDB:基于HBase的时间序列数据库
- [数据挖掘]HBase 2.0 在时序数据存储方向的应用
- [数据挖掘]数据中台是“一把手”工程,动组织肯定会有矛盾
- [数据挖掘]数据中台之结构化大数据存储设计
- [数据挖掘]图解HBase--大数据平台技术栈
- [数据挖掘]快手HBase在千亿级用户特征数据分析中的应用与实
相关推荐:
网友评论: