无法从Java代码连接到HBase服务器

时间:2013-08-30 20:51:41

标签: java hadoop hbase

我在运行Ubuntu的VirtualBox VM上安装了Hadoop和Hbase; Hadoop和Hbase都在伪分布式模式下成功运行。我在Ubuntu上禁用了IPv6,并在VM上的hosts文件中将localhost更改为127.0.0.1。

我正在尝试在Eclipse中的Windows机器上编写一些基本的Java代码,以连接到Hbase实例,创建表,插入和检索数据等。代码失败并显示无法连接到主服务器的错误。但是,它使Zookeeper与VM的连接很好。

在Windows机器上,我可以通过Web浏览器通过我在Java代码中指定的相同IP地址和端口连接到Hbase实例信息。

我到处搜索并尝试了我能找到的所有东西,但是在它与zookeeper建立连接之后仍然无法连接到master。

我已经读过其他人也遇到过这个问题,但是没有人发布解决方案。

请帮忙!谢谢!

2 个答案:

答案 0 :(得分:0)

用于查看信息的IP和端口不是用于从/向HBase读/写的信息。为此,您需要使用REST API(包含在HBase中)或Apache Thrift(HBase中包含2个thrift服务器 - thrift& thrift2)

我建议你使用Apache Thrift(thrift2)

启动REST使用:

$HBASE-INSTALL-DIR/bin/hbase-deamon.sh start rest

开始使用Thrift:

$HBASE-INSTALL-DIR/bin/hbase-deamon.sh start thrift

启动Thrift(v2)使用:

$HBASE-INSTALL-DIR/bin/hbase-deamon.sh start thrift2

例如,要使用Java中的Thrift客户端,您需要在服务器上install thrift,然后使用HBase附带的hbase thrift文件生成Java类。

默认情况下,Thrift会在 8080 端口上侦听 8080 上的REST

有用的链接:

HBase Thrift

HBase REST

答案 1 :(得分:0)

好的 - 有人给了我一些解决问题的帮助,我想传递它。事实证明这是VM和我的Windows机器的IP寻址问题。首先,在VM上的etc / hosts文件中,我不得不取出'127.0.0.1 locahost'而是插入'localhost'。其次,在我的Windows主机文件中,我不得不添加''。谢天谢地,这解决了问题。请让我知道这是不清楚的,因为我已经看到这个问题发布了很多次没有适当的解决方案。此外,由于我正在编写Java代码来访问VM中的HBase实例,因此无需使用Thrift或REST - Java API就足够了。