问题描述及原因:HBase RegionServer RPC队列请求数较大
可能影响:
- 客户端读写变慢或者超时
处理建议:
在EMR控制台进入“集群监控”,点击“DashBoard”,点击 “集群服务” --> HBASE --> 角色管理 -->RegionServer
点击进入,设置指标里选中RPC队列请求数,如下图所示,若只有部分Queue被打满,建议增加改队列的线程数。具体配置规则如下:
hbase get、put、scan到服务端后默认是用一个线程池来处理这些请求。
线程池的配置是:
代码语言:javascript复制hbase.regionserver.handler.count
默认是128
若集群有比较大的scan时,建议将put、get和scan的线程池拆开,在hbase-site.xml中添加以下配置项,并滚动重启rs
代码语言:javascript复制hbase.ipc.server.callqueue.read.ratio 取值范围0.0-1.0,假设配置为0.75
hbase.ipc.server.callqueue.scan.ratio 取值范围0.0-1.0,假设为配置0.25
按以上假设配置,则 处理put请求的线程个数是 128 x(1 - 0.75) = 32 处理get请求的线程个数是 128 x 0.75 x(1 - 0.25) = 72 处理 scan请求的线程个数是 128 x 0.75 x 0.25 = 24
其中128就是上文配置的总线程数。scan的比例是在read的基础上。
replicationQueue配置:hbase.replication.source.maxthreads 默认是10
PriorityQurue配置:hbase.regionserver.metahandler.count 默认20
replicationQueue、PriorityQurue正常很慢打满。