如何使用Java连接到localhost HBase

时间:2012-10-25 19:50:30

标签: java connection hbase

当我将HBase作为嵌入式启动时,它可以很好地工作。

我在Ubuntu 12.04上,我已经通过下载tar.gz并在opt目录上解压缩来安装hbase 0.90.5。

HBase正确启动,在日志中没有崩溃也没有例外,因此似乎正确安装了HBase。 hbase-site.xml非常简单:

<configuration>
<property>
    <name>hbase.zookeeper.quorum</name>
    <value>localhost</value>
</property>

<property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
</property>

然后我的etc / hosts文件更加简单:

127.0.0.1 localhost

127.0.0.1 alex-desktop

请注意,我已阅读过有关从此文件中删除主机名的信息,但这样做只会在启动hbase时导致错误。所以我决定离开,如图所示。

最后是我的Java代码:

Configuration config = HBaseConfiguration.create();
    config.clear();
    config.set("hbase.zookeeper.quorum", "localhost");
    config.set("hbase.zookeeper.property.clientPort","2181");
    config.set("hbase.master", "localhost:60000");

我在日志中遇到异常:

2/10/25 21:41:59 INFO zookeeper.ClientCnxn: Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x13a996f3e1d000b, negotiated timeout = 40000

12/10/25 21:41:59 INFO client.HConnectionManager$HConnectionImplementation: getMaster attempt 0 of 1 failed; no more retrying.
java.io.IOException: Call to localhost/127.0.0.1:60001 failed on local exception: java.io.EOFException at org.apache.hadoop.hbase.ipc.HBaseClient.wrapException(HBaseClient.java:954)
at org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:923)
at org.apache.hadoop.hbase.ipc.WritableRpcEngine$Invoker.invoke(WritableRpcEngine.java:150)
at $Proxy6.getProtocolVersion(Unknown Source)
at org.apache.hadoop.hbase.ipc.WritableRpcEngine.getProxy(WritableRpcEngine.java:183)

请注意,端口60001会更改,有时它是此端口,但也可以是46666之类的任何其他端口。

此外,我已尝试导出导出HBASE_MANAGES_ZK=true,但它没有帮助。 我不知道接下来我该怎么办,因为我不知道这个随机端口是什么。

任何人都知道发生了什么事?

非常感谢你。

1 个答案:

答案 0 :(得分:1)

确保您在客户端代码中使用same HBase版本,就像在群集中一样。通常,如果版本不匹配,则会发生EOFException