Java 客户端能够连接到Hbase DB,而无需在类路径中包含Hbase-site.xml

Java 客户端能够连接到Hbase DB,而无需在类路径中包含Hbase-site.xml,java,configuration,hbase,Java,Configuration,Hbase,我正在使用java client连接到以独立模式配置的Hbase DB。其Hbase-site.xml为: <configuration> <property> <name>hbase.rootdir</name> <value>file:///home/vimal/HBASE/hbase</value> </property> <property> <nam

我正在使用java client连接到以独立模式配置的Hbase DB。其Hbase-site.xml为:

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>file:///home/vimal/HBASE/hbase</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/vimal/HBASE/zookeeper</value>
  </property>
</configuration>
在我的客户机代码中,我使用HtablePool获取HTable的一个实例。一切正常,但我的问题是我的类路径中没有包含hbase-site.xml,所以我的客户端如何连接到HbaseDB。我觉得很奇怪。请在此提供帮助。

我在您的hbase-site.xml中没有看到任何与hbase连接直接相关的选项。 可能您的设置在默认配置的基础上工作得很好,这是常见的情况

hbase.rootdir-仅与群集号上的用户“home”dir相关 与连接的关系。 hbase.zookeeper.property.dataDir-根本没有直接 与HBase连接的关系。
因为我设置了$HBASE_HOME变量,所以HBaseConfiguration.create将使用此变量定位HBASE-site.xml,所以此操作有效吗?抱歉。。我已更新了我的hbase-site.xml。。您能详细说明一下吗?是否有必要设置HBAsE_HOME变量,还是只是为了方便起见?这是另一个问题,不要混淆问题,这样以后人们就找不到答案了。好的,它是由hbase-config.sh设置的,hbase调用它,所以您不必设置它。好的。。谢谢你,罗曼。。但我仍然无法理解整个过程。文档和其他书籍说,访问Hbase的客户端Java程序的类路径中应该有Hbase-site.xml,或者我应该在配置对象中显式地提供Zookeeper信息。我也没有这样做。我的Java程序如何正确地连接到Hbase实例?这是因为默认情况下,它在端口2181连接到zookeeper的localhost吗?是的,例如,大多数情况下zookeeper仲裁的默认配置是localhost:2811,适用于大多数本地单节点安装。HDFS和JobTracker的情况几乎相同。