java - HBase Java连接

标签 java hadoop hbase apache-zookeeper hortonworks-data-platform

我想通过 Java 设置与 HBase 的连接,但我遇到了问题。我在我的 CentOS 6.5 上通过 Ambari 安装了一个单节点 HDP 2.1。我有以下代码:

public class PutExample {
   public static void main(String[] args) throws IOException {

      final String serverFQDN = "hadoop.hortonworks";

      Configuration conf = HBaseConfiguration.create();
      conf.set("hbase.zookeeper.quorum", serverFQDN); 
      conf.set("hbase.zookeeper.property.clientPort", "2181");
      conf.set("zookeeper.znode.parent", "/hbase-unsecure");

      HBaseAdmin admin = new HBaseAdmin(conf);

      try {

          HTable table = new HTable(conf, "hb_tt2");

      } catch ( Exception ex ) {
          System.out.println("Error caught.");
          ex.printStackTrace();
      }

      System.out.println("End.");
   }
}

这是输出:

log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/bae/Desktop/Neue%20Bibliotheken/lib%20Hadoop/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/bae/Desktop/Neue%20Bibliotheken/lib%20Zookeeper/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
Error caught.
java.io.IOException: Unable to determine ZooKeeper ensemble
    at org.apache.hadoop.hbase.zookeeper.ZKUtil.connect(ZKUtil.java:121)
    at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:165)
    at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:134)
    at org.apache.hadoop.hbase.client.ZooKeeperKeepAliveConnection.<init>(ZooKeeperKeepAliveConnection.java:43)
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.getKeepAliveZooKeeperWatcher(ConnectionManager.java:1725)
    at org.apache.hadoop.hbase.client.ZooKeeperRegistry.isTableOnlineState(ZooKeeperRegistry.java:103)
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.isTableDisabled(ConnectionManager.java:926)
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.relocateRegion(ConnectionManager.java:1093)
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegionInMeta(ConnectionManager.java:1374)
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1128)
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1111)
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1070)
    at org.apache.hadoop.hbase.client.HTable.finishSetup(HTable.java:347)
    at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:201)
    at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:159)
    at bt.PutExample.main(PutExample.java:41)
End.

我没有更改任何配置文件,我使用的是在 Hadoop 服务器上找到的 jar 文件。我的程序或服务器是否缺少任何配置?我无法弄清楚此错误消息的含义。

提前感谢您的帮助

最佳答案

尝试更改 hbase jar 的版本。有时微小的变化会有所帮助。 我遇到了同样的异常,将 hbase 客户端 jar(在 pom.xml 中)从 0.98 修改为 0.98.4 有所帮助。

<version>0.98.4-hadoop2</version>

关于java - HBase Java连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25887127/

相关文章:

java - 如何让每个 hadoop 映射器获得一个文件对,即一个完整的输入文件 (.csv) 和一个完整的元数据文件 (.json)

java - ReSTLet:使用删除方法

java - 使用方法,我无法让它读取两个不同的输入

r - 将 csv 转换为原生 hadoop 格式

amazon-web-services - 未设置 Pig 模式元组。不会生成代码

spring - 捕获 Spring 上下文关闭错误

java - 使用分块编码时的 CXF 缓冲数据

JAVA lo4j 正确的异常处理和日志记录

hadoop - 启动 Hadoop DFS - $HADOOP_HOME/bin/hdfs 中没有这样的文件或目录?

java - Mapreduce 作业到 HBase 抛出 IOException : Pass a Delete or a Put