HBaseConfiguration不读取我在$ {HBASE_HOME} /conf/hbase-site.xml中设置的值

时间:2012-06-01 15:47:25

标签: configuration hadoop hbase

$ {HBASE_HOME} /conf/hbase-site.xml具有下一个值:

<property>
  <name>hbase.zookeeper.quorum</name>
  <value>hd1</value>
</property>

“hd1”主机名在“/ etc / hosts”中设置,ping操作...

使用这个简单的Java程序:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;

public class TestConfigurator {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Configuration conf = HBaseConfiguration.create();
        System.out.println("HBase quorum: " + conf.get("hbase.zookeeper.quorum", "localhost"));
    }
}

我得到“localhost”。 HBase在分布式模式下设置,有一个主服务器和两个区域服务器......并且所有配置文件都已同步,我多次重启所有服务器。

有什么我错过的吗?

1 个答案:

答案 0 :(得分:6)

${HBASE_HOME}/conf/hbase-site.xml不在类路径中,或者被其他conf-site.xml覆盖(很可能是与HBase jar捆绑在一起的conf-site.xml

要修复它,可以将带有自定义设置的HBase conf目录添加到类路径中,然后使用该类路径调用程序。 e.g,

java -cp <earlier classpath>:<your custom conf location> <your program>