问题导读
1. 对于预分区错误, hbase 使用什么功能解决?
2.Region Normalizer 的功能是什么?
3. 在什么情况下运行 Normalizer 比较好?
4. 哪个版本开始有 Normalizer 功能?
5. 什么情况下 Normalizer 会合并 region?
6. 什么情况下 Normalizer 会分裂 region?
转载注明本文链接
http://www.aboutyun.com/forum.php?mod=viewthread&tid=24292
about 云论坛很多会员, 遇到 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
来源: https://mp.weixin.qq.com/s?__biz=MzA3MjQ1NDYzOQ==&mid=2660384585&idx=1&sn=81431d73ed0ebc9347a8b4197c0dc070&chksm=847887c9b30f0edf61602dbdda1ab6ceaafc538ee71b147d908d06d9347523aa93c28b24318d#rd