如何设置创建HBase连接的时间限制

时间:2015-07-10 18:28:51

标签: java hbase

我目前正在使用HBase v0.98.6。我想从外部Java程序检查当前的连接状态。现在,我正在做这样的事情来检查:

connectionSuccess = true;
try {
     HConnection hConnection = createConnection(config);
} catch (Exception ex) {
     connectionSuccess = false;
}

当连接正常时,返回相当快。问题是当连接不起作用时,它最终返回connectionSuccess=false需要20分钟。有没有办法减少这个时间限制,因为我只对当前获取连接状态感兴趣?

3 个答案:

答案 0 :(得分:1)

它需要这么长时间的原因是默认情况下,如果连接失败,它将重试多次(我认为6?不要引用我),每次连接尝试都需要一段时间。尝试结合使用这些命令来限制超时前每个连接的时间,以及允许的重试次数。

hbase.client.retries.number = 3
hbase.client.pause = 1000
zookeeper.recovery.retry = 1(即没有重试)

来自http://hadoop-hbase.blogspot.com/2012/09/hbase-client-timeouts.html

的Lars

答案 1 :(得分:0)

我的org.apache.hadoop.conf.Configuration对象包含以下键值对:

Configuration conf = HBaseConfiguration.create();

//configuring timeout and retry parameters
conf.set("hbase.rpc.timeout", "10000");
conf.set("hbase.client.scanner.timeout.period", "10000");
conf.set("hbase.cells.scanned.per.heartbeat.check", "10000");
conf.set("zookeeper.session.timeout", "10000");
conf.set("phoenix.query.timeoutMs", "10000");
conf.set("phoenix.query.keepAliveMs", "10000");
conf.set("hbase.client.retries.number", "3");
conf.set("hbase.client.pause", "1000");
conf.set("zookeeper.recovery.retry", "1");

答案 2 :(得分:0)

您可以将重试值设置为1,以获取当前时间的连接状态。

Configuration conf = HBaseConfiguration.create();
conf.setInt("hbase.client.retries.number",1);
conf.setInt("zookeeper.recovery.retry",0);

或者您可以使用下面的内置HbaseAdmin方法执行相同的操作。

connectionSuccess = true;
try
{
  HBaseAdmin.checkHBaseAvailable(config);
}
catch(MasterNotRunningException e)
{
  connectionSuccess = false;
}