Greetings-

The question of HBase client remote configuration (i.e., the client is not 
running on the same machine as the HBase master) comes up periodically on these 
dist-lists and a common theme is a lack of documentation on exactly what it 
takes to configure a remote client connection.

After some trial and error, this seems to be the absolute minimum number of 
parameters required for connecting to a remote HBase instance (tested with 
HBase 0.20.3).

HBaseConfiguration config = new HBaseConfiguration();
config.clear();
config.set("hbase.zookeeper.quorum", "server");
config.set("hbase.zookeeper.property.clientPort","2181");

This is consistent with other references to the importance of 
"hbase.zookeeper.quorum" except that we did this testing with the intent of 
connecting using only parameters set in code to eliminate any classpath issues 
with XML files.

FYI... If the last parameter isn't set you'll get the following error....       
could this be defaulted to a reasonable value?


10/03/09 10:04:55 ERROR zookeeper.ZooKeeperWrapper: no clientPort found in 
zoo.cfg
Exception in thread "main" java.io.IOException: Could not read quorum servers 
from zoo.cfg
      at 
org.apache.hadoop.hbase.zookeeper.ZooKeeperWrapper.<init>(ZooKeeperWrapper.java:85)
      at 
org.apache.hadoop.hbase.client.HConnectionManager$ClientZKWatcher.getZooKeeperWrapper(HConnectionManager.java:223)
      at 
org.apache.hadoop.hbase.client.HConnectionManager$TableServers.getZooKeeperWrapper(HConnectionManager.java:932)
      at 
org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRootRegion(HConnectionManager.java:948)
      at 
org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRegion(HConnectionManager.java:625)


Doug Meil
Director of Engineering
doug.m...@explorys.net

Reply via email to