hbase热区域请求度量

hbase热区域请求度量,hbase,Hbase,Hbase集群,从主机上,我可以看到其中一个区域得到的请求比其他区域多得多。但是我看不出这个服务器中哪个区域更热,REQUEST计数只是区域服务器级别的报告,而不是区域级别的报告。我看到jira已经解决了这个问题。但是JMX转储没有看到这样的值。我怎么看这个?或者任何关于获取每个区域的读/写请求编号的建议?Hbase Java客户端提供了获取区域级负载的API。 以我正在使用的客户端为例,它是1.2.0-cdh5.7.0对于exmaple,YMMV取决于您的hbase客户端的版本 Cluster

Hbase集群,从主机上,我可以看到其中一个区域得到的请求比其他区域多得多。但是我看不出这个服务器中哪个区域更热,REQUEST计数只是区域服务器级别的报告,而不是区域级别的报告。我看到jira已经解决了这个问题。但是JMX转储没有看到这样的值。我怎么看这个?或者任何关于获取每个区域的读/写请求编号的建议?

Hbase Java客户端提供了获取区域级负载的API。
以我正在使用的客户端为例,它是
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中搜索,似乎它永远不会在区域级别被丢弃。