hbase 热区请求指标
hbase hot region request metrics
Hbase 集群,从 master 那里,我可以看到其中一个区域比其他区域获得了更多的请求。但我看不到该服务器中哪个区域更热,请求计数仅报告区域服务器级别而不是区域级别。我看到 jira https://issues.apache.org/jira/browse/HBASE-7818 已经解决了这个问题。但是 JMX 转储看不到这样的值。我怎么看这个?或获得每个区域 read/write 请求编号的任何建议?
Hbase Java客户端提供了获取区域级负载的API。
以我使用的客户端 1.2.0-cdh5.7.0
为例,YMMV 取决于您的 hbase-client
.
的版本
ClusterStatus clusterStatus = yourHbaseConnection.getAdmin().getClusterStatus();
Collection<ServerName> servers = clusterStatus.getServers();
for (ServerName serverName : servers) {
ServerLoad serverLoad = clusterStatus.getLoad(serverName);
Map<byte[], RegionLoad> regionLoads = serverLoad.getRegionsLoad();
for (Map.Entry<byte[], RegionLoad> regionLoad : regionLoads.entrySet()) {
// regionLoad is all you want, contains readRequest, writeRequest etc..
}
}
解析regionLoad的内容,得到你想要的
Hbase 集群,从 master 那里,我可以看到其中一个区域比其他区域获得了更多的请求。但我看不到该服务器中哪个区域更热,请求计数仅报告区域服务器级别而不是区域级别。我看到 jira https://issues.apache.org/jira/browse/HBASE-7818 已经解决了这个问题。但是 JMX 转储看不到这样的值。我怎么看这个?或获得每个区域 read/write 请求编号的任何建议?
Hbase Java客户端提供了获取区域级负载的API。
以我使用的客户端 1.2.0-cdh5.7.0
为例,YMMV 取决于您的 hbase-client
.
ClusterStatus clusterStatus = yourHbaseConnection.getAdmin().getClusterStatus();
Collection<ServerName> servers = clusterStatus.getServers();
for (ServerName serverName : servers) {
ServerLoad serverLoad = clusterStatus.getLoad(serverName);
Map<byte[], RegionLoad> regionLoads = serverLoad.getRegionsLoad();
for (Map.Entry<byte[], RegionLoad> regionLoad : regionLoads.entrySet()) {
// regionLoad is all you want, contains readRequest, writeRequest etc..
}
}
解析regionLoad的内容,得到你想要的