Hbase最佳实战:Region数量与大小的重要影响

Posted 过往记忆大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hbase最佳实战:Region数量与大小的重要影响相关的知识,希望对你有一定的参考价值。

本文转载自:https://zhuanlan.zhihu.com/p/27800787

一、Region数量的影响

通常较少的region数量可使群集运行的更加平稳,官方指出每个RegionServer大约100个regions的时候效果最好,理由如下:


1)Hbase的一个特性MSLAB,它有助于防止堆内存的碎片化,减轻垃圾回收Full GC的问题,默认是开启的。但是每个MemStore需要2MB(一个列簇对应一个写缓存memstore)。所以如果每个region有2个family列簇,总有1000个region,就算不存储数据也要3.95G内存空间。


2)如果很多region,它们中Memstore也过多,内存大小触发Region Server级别限制导致flush,就会对用户请求产生较大的影响,可能阻塞该Region Server上的更新操作。


3)HMaster要花大量的时间来分配和移动Region,且过多Region会增加ZooKeeper的负担。


4)从hbase读入数据进行处理的mapreduce程序,过多Region会产生太多Map任务数量,默认情况下由涉及的region数量决定。


所以,如果一个HRegion中Memstore过多,而且大部分都频繁写入数据,每次flush的开销必然会很大,因此我们也建议在进行表设计的时候尽量减少ColumnFamily的个数。


每个Region都有自己的MemStore,当大小达到了上限(hbase.hregion.memstore.flush.size,默认128MB),会触发Memstore刷新。


计算集群region数量的公式:


((RS Xmx) * hbase.regionserver.global.memstore.size) / (hbase.hregion.memstore.flush.size * (# column families))


假设一个RS有16GB内存,那么16384*0.4/128m 等于51个活跃的region。


如果写很重的场景下,可以适当调高hbase.regionserver.global.memstore.size,这样可以容纳更多的region数量。


总结


建议分配合理的region数量,根据写请求量的情况,一般20-200个之间,可以提高集群稳定性,排除很多不确定的因素,提升读写性能。监控Region Server中所有Memstore的大小总和是否达到了上限(hbase.regionserver.global.memstore.upperLimit * hbase_heapsize,默认 40%的JVM内存使用量),超过可能会导致不良后果,如服务器反应迟钝或compact风暴。

二、Region大小的影响

hbase中数据一开始会写入memstore,满128MB(看配置)以后,会flush到disk上而成为storefile。当storefile数量超过触发因子时(可以配置),会启动compaction过程将它们合并为一个storefile。对集群的性能有一定影响。而当合并后的storefile大于max.filesize,会触发分割动作,将它切分成两个region。


1)当hbase.hregion.max.filesize比较小时,触发split的机率更大,系统的整体访问服务会出现不稳定现象。


2)当hbase.hregion.max.filesize比较大时,由于长期得不到split,因此同一个region内发生多次compaction的机会增加了。这样会降低系统的性能、稳定性,因此平均吞吐量会受到一些影响而下降。


总结


hbase.hregion.max.filesize不宜过大或过小,经过实战,生产高并发运行下,最佳大小5-10GB!关闭某些重要场景的hbase表的major_compact!在非高峰期的时候再去调用major_compact,这样可以减少split的同时,显著提供集群的性能,吞吐量、非常有用。


注:通过Hbase的UI控制台都可以监控到region的这两个指标。


猜你喜欢

回复 spark_summit_201806 下载 Spark Summit North America 201806 全部PPT

0、回复 电子书 获取 本站所有可下载的电子书

1、

2、

3、

4、

5、

6、

7、

8、

9、

10、

11、更多大数据文章欢迎访问https://www.iteblog.com及本公众号(iteblog_hadoop)
12、Flink中文文档:
http://flink.iteblog.com
13、Carbondata 中文文档
http://carbondata.iteblog.com

以上是关于Hbase最佳实战:Region数量与大小的重要影响的主要内容,如果未能解决你的问题,请参考以下文章

Hbase中Region,Split,Store的关系

HBASE 系列 一个RegionServer的Region数量多少合适?

「从零单排HBase 06」你必须知道的HBase最佳实践

生产环境使用HBase,你必须知道的最佳实践

Hbase的region合并与拆分详解

hbase如何设置region大小啊