hbase热区域请求度量
Hbase集群,从主机上,我可以看到其中一个区域得到的请求比其他区域多得多。但是我看不出这个服务器中哪个区域更热,REQUEST计数只是区域服务器级别的报告,而不是区域级别的报告。我看到jira已经解决了这个问题。但是JMX转储没有看到这样的值。我怎么看这个?或者任何关于获取每个区域的读/写请求编号的建议?Hbase Java客户端提供了获取区域级负载的API。hbase热区域请求度量,hbase,Hbase,Hbase集群,从主机上,我可以看到其中一个区域得到的请求比其他区域多得多。但是我看不出这个服务器中哪个区域更热,REQUEST计数只是区域服务器级别的报告,而不是区域级别的报告。我看到jira已经解决了这个问题。但是JMX转储没有看到这样的值。我怎么看这个?或者任何关于获取每个区域的读/写请求编号的建议?Hbase Java客户端提供了获取区域级负载的API。 以我正在使用的客户端为例,它是1.2.0-cdh5.7.0对于exmaple,YMMV取决于您的hbase客户端的版本 Cluster
以我正在使用的客户端为例,它是
1.2.0-cdh5.7.0
对于exmaple,YMMV取决于您的hbase客户端的版本
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..
}
}
ClusterStatus ClusterStatus=yourHbaseConnection.getAdmin().getClusterStatus();
集合服务器=clusterStatus.getServers();
用于(服务器名服务器名:服务器){
ServerLoad ServerLoad=clusterStatus.getLoad(serverName);
Map regionLoads=serverLoad.GetRegionLoad();
对于(Map.Entry regionLoad:regionLoads.entrySet()){
//regionLoad是您想要的,包含readRequest、WriterRequest等。。
}
}
解析regionLoad的内容,得到您想要的。太棒了!非常感谢。花很长时间在JMX中搜索,似乎它永远不会在区域级别被丢弃。