我正在尝试连接到HBase时处理故障情况.目前,我检查HBase是否与HBaseAdmin.checkHBaseAvailable(conf);一起运行.但是这个api只会在大约40秒之后抛出MasterNotRunning或ZookeeperConnectionException的异常.所以,我尝试设置以下重试,hbase.client.retries.number = 1和zookeeper.recovery.retry = 1.这让我在6-7秒内处理异常.但是,我需要一种更快速的方法来了解HBase集群是否正在运行,因为我正在我的应用程序中的同步调用中登录到HBase.
解决方法:
以这种方式检查连接怎么样:
import java.net.InetSocketAddress;
import org.apache.hadoop.hbase.ipc.HBaseRPC;
import org.apache.hadoop.hbase.ipc.HMasterInterface;
import org.apache.hadoop.hbase.ipc.RpcEngine;
...
public static boolean isRunning() {
boolean result = false;
Configuration conf = HBaseConfiguration.create();
conf.clear();
conf.set("hbase.zookeeper.quorum", "myhost");
conf.set("hbase.zookeeper.property.clientPort", "2181");
conf.set("hbase.master", "myhost:60000"