在遇到通过客户端API获取集群状态的时候,出现habse超时问题。
代码如下:
//获取集群的信息
public void getInfoCluster(){
System.out.println("开始执行");
ClusterMetrics clusterMetrics = null;
try {
clusterMetrics = admin.getClusterMetrics();
} catch (IOException e) {
e.printStackTrace();
}
//获取集群region个数
int regionCount = clusterMetrics.getRegionCount();
System.out.println("集群个数:"+regionCount);
//获取regionserver个数
List<ServerName> serversName = clusterMetrics.getServersName();
for (ServerName serverName : serversName) {
System.out.println(serverName.getHostname());
}
//获取每个regionserver上加载的region个数
double averageLoad = clusterMetrics.getAverageLoad();
System.out.println(averageLoad);
}
首先尝试了调大了配置文件中关于超时相应的时间,但是未能成功解决。确定了hbase和zk正常运行,本机windows10可以正常telent通相应的168000等通信端口。最后发现是本机的项目的pom.xml上的hbase-client依赖版本低于集群的hbase版本,采取更换高版本的hbase-client依赖可以解决问题。
(下图运行的源代码做了一些更改,但是已经没有出现超时问题,可以正常通过API获取集群状态负载信息)