- hbase 单个regionserver中region过多 优化
- 问题
目前hbase 总是出现压缩队列和刷新队列过大的告警,导致数据的读写变慢。- 文章目录
- http://hbase.apache.org/book.html#ops.capacity.regions.count)
regionServer数量的计算公式为:
在我们公司中
Xmx=101024=10240M
hbase.regionserver.global.memstore.upperLimit=0.4
hbase.hregion.memstore.flush.size=128M
column families = 1
经过计算得到单个regionServer最适合管理的region数量为:regionNum = 32个 。可以适当超出2~3倍。
而在实际中,我们的单个regionServer已经达到了300多个,是官方推荐的近10倍。
##解决方案
###调整堆大小(http://hbase.apache.org/book.html#ops.capacity.nodes.gc)
根据官方推荐(20-24),可以适当调整regionserver的堆大小,受限与gc与zk的关系,我们可以设置为20G.
###调整memstore百分比
根据官方推荐,在写工作量较大的regionServer,可以适当调大memstore的百分比,降低block cache的百分比。可以支持更多的region。
hbase.regionserver.global.memstore.upperLimit 调整为0.6
hfile.block.cache.size:调整为0 (关闭读缓存,在cloudera manager上看,hbase的读除了(H+1任务)几乎为0.所以我们几乎不需要缓存,不使用缓存对于葱白的链路监控,影响不大)
###增加阻塞倍率
属性hbase.hregion.memstore.block.multiplier的默认值为2,它是用来阻塞来自客户端更新数据请求的安全阈值,当memstore达到multiplierflush的大小限制,会阻止进一步的更新。
当有足够的存储空间,我们增加这个值来平滑地处理写入突发流量。
对于我们公司,这个值还是默认。原因是:region数量太多,堆空间不足。
###减少最大日志文件限制
设置hbase.regionserver.maxlogs属性来控制刷写频率,默认32,
对于写压力较大的应用,这个值过大。降低这个值会强迫服务器更频繁地将数据刷写到磁盘上,这样已经刷写到磁盘上的数据所对应的日志就删除了。
尽管我们的应用没有使用wal,但是觉得还是应该设置一下。">根据hbase官网配置(http://hbase.apache.org/book.html#ops.capacity.regions.count)
regionServer数量的计算公式为:
在我们公司中
Xmx=101024=10240M
hbase.regionserver.global.memstore.upperLimit=0.4
hbase.hregion.memstore.flush.size=128M
column families = 1
经过计算得到单个regionServer最适合管理的region数量为:regionNum = 32个 。可以适当超出2~3倍。
而在实际中,我们的单个regionServer已经达到了300多个,是官方推荐的近10倍。
##解决方案
###调整堆大小(http://hbase.apache.org/book.html#ops.capacity.nodes.gc)
根据官方推荐(20-24),可以适当调整regionserver的堆大小,受限与gc与zk的关系,我们可以设置为20G.
###调整memstore百分比
根据官方推荐,在写工作量较大的regionServer,可以适当调大memstore的百分比,降低block cache的百分比。可以支持更多的region。
hbase.regionserver.global.memstore.upperLimit 调整为0.6
hfile.block.cache.size:调整为0 (关闭读缓存,在cloudera manager上看,hbase的读除了(H+1任务)几乎为0.所以我们几乎不需要缓存,不使用缓存对于葱白的链路监控,影响不大)
###增加阻塞倍率
属性hbase.hregion.memstore.block.multiplier的默认值为2,它是用来阻塞来自客户端更新数据请求的安全阈值,当memstore达到multiplierflush的大小限制,会阻止进一步的更新。
当有足够的存储空间,我们增加这个值来平滑地处理写入突发流量。
对于我们公司,这个值还是默认。原因是:region数量太多,堆空间不足。
###减少最大日志文件限制
设置hbase.regionserver.maxlogs属性来控制刷写频率,默认32,
对于写压力较大的应用,这个值过大。降低这个值会强迫服务器更频繁地将数据刷写到磁盘上,这样已经刷写到磁盘上的数据所对应的日志就删除了。
尽管我们的应用没有使用wal,但是觉得还是应该设置一下。 - 增加hbase.hstore.blockingStoreFiles的个数
hbase 单个regionserver中region过多 优化
问题
目前hbase 总是出现压缩队列和刷新队列过大的告警,导致数据的读写变慢。
文章目录
- [增加hbase.hstore.blockingStoreFiles的个数](https://www.pianshen.com/article/3450633332/#hbasehstoreblockingStoreFiles_72)
首先说明一下目前集群的状况
regionServer数量:20
region 数量:6503
regionServer配置:-Xms10g -Xmx10g -Xmn3g
##原因
找到一些可能的原因。
- region 数量过多
- regionServer 堆大小为10G,有些小
- regionServer 太少
根据hbase官网配置(http://hbase.apache.org/book.html#ops.capacity.regions.count)
regionServer数量的计算公式为:
在我们公司中
Xmx=101024=10240M
hbase.regionserver.global.memstore.upperLimit=0.4
hbase.hregion.memstore.flush.size=128M
column families = 1
经过计算得到单个regionServer最适合管理的region数量为:regionNum = 32个 。可以适当超出2~3倍。
而在实际中,我们的单个regionServer已经达到了300多个,是官方推荐的近10倍。
##解决方案
###调整堆大小(http://hbase.apache.org/book.html#ops.capacity.nodes.gc)
根据官方推荐(20-24),可以适当调整regionserver的堆大小,受限与gc与zk的关系,我们可以设置为20G.
###调整memstore百分比
根据官方推荐,在写工作量较大的regionServer,可以适当调大memstore的百分比,降低block cache的百分比。可以支持更多的region。
hbase.regionserver.global.memstore.upperLimit 调整为0.6
hfile.block.cache.size:调整为0 (关闭读缓存,在cloudera manager上看,hbase的读除了(H+1任务)几乎为0.所以我们几乎不需要缓存,不使用缓存对于葱白的链路监控,影响不大)
###增加阻塞倍率
属性hbase.hregion.memstore.block.multiplier的默认值为2,它是用来阻塞来自客户端更新数据请求的安全阈值,当memstore达到multiplierflush的大小限制,会阻止进一步的更新。
当有足够的存储空间,我们增加这个值来平滑地处理写入突发流量。
对于我们公司,这个值还是默认。原因是:region数量太多,堆空间不足。
###减少最大日志文件限制
设置hbase.regionserver.maxlogs属性来控制刷写频率,默认32,
对于写压力较大的应用,这个值过大。降低这个值会强迫服务器更频繁地将数据刷写到磁盘上,这样已经刷写到磁盘上的数据所对应的日志就删除了。
尽管我们的应用没有使用wal,但是觉得还是应该设置一下。
增加hbase.hstore.blockingStoreFiles的个数
默认参数为10
当storefile的个数达到10个时,就会阻塞hbase的写入,强烈建议调大。比如3000.
##究极方案
#增加机器
由于增加机器,是无能的表现。。所以尽量先优化 ,在不能优化的情况下,再增加机器。
##结论
综上所述,我们需要增加的配置有
参数
-Xmx 20g -Xms20G
hbase.regionserver.global.memstore.upperLimit=0.6
hbase.regionserver.global.memstore.size=0.6
hfile.block.cache.size=0
hbase.regionserver.maxlogs=16
此时支持的region数量为:20_1024_0.6/128=96 96*3=288 基本达到要求