问题描述及原因:HBase RegionServer 发生full gc,内存不足导致
场景1 RegionServer堆内内存配置太小
在EMR控制台进入“集群服务”,点击“HBase”,点击 配置管理 --> hbase-env.sh --> Heapsize
EMR默认值是1024,即1G,购买集群后需要根据业务调整,一般建议regionserver内存占用机器40%-70%左右
按业务需求和集群规划调整regionserver内存,并在业务低峰期滚动重启rs。
场景2 RS堆内内存较大,读QPS很高
若第一个场景没问题,即regionserver当前内存已经占机器内存很大一部分,并且集群的读QPS远大于写QPS,建议将读缓存存在堆外,在hbase-site.xml中加入以下两个配置项,其中缓存大小需要根据机器剩余内存来配置,一般建议一个节点上所有进程的内存和不超过节点总内存的80%,下图示例中配置的读缓存为16G
hbase.bucketcache.ioengine offheap
hbase.bucketcache.size 16384
业务低峰期滚动重启regionserver
场景3 RS堆内内存较大,写QPS很高
若场景1、场景2都没问题,regionserver依然full gc,同时集群的写QPS较高,可以在hbase-site.xml中加入以下配置项
hbase.regionserver.global.memstore.size.lower.limit 0.8
业务低峰期滚动重启rs。该配置项会降低memostore的内存占用,降低flush阈值。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。