无法从java应用程序远程连接HBase
我已经在Linux机器(192.168.113.27)上安装了HBase,现在我已经在Windows机器上的Eclipse IDE中编写了一些示例代码,使用JAVA API与Linux机器上的HBase通信。我已经在Linux机器上的HBase上创建了“用户”表 客户端连接到zookeeper,如下面的日志所述:之后,我得到异常“没有为用户找到区域表”。为了解决这个问题,我读了很多文章,尝试了很多方法,但都无法解决 我曾尝试在/conf/regionserver中将本地主机更改为Linux机器IP(192.168.113.27),但仍然收到相同的错误 示例代码:无法从java应用程序远程连接HBase,hbase,Hbase,我已经在Linux机器(192.168.113.27)上安装了HBase,现在我已经在Windows机器上的Eclipse IDE中编写了一些示例代码,使用JAVA API与Linux机器上的HBase通信。我已经在Linux机器上的HBase上创建了“用户”表 客户端连接到zookeeper,如下面的日志所述:之后,我得到异常“没有为用户找到区域表”。为了解决这个问题,我读了很多文章,尝试了很多方法,但都无法解决 我曾尝试在/conf/regionserver中将本地主机更改为Linux机器I
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "192.168.113.27");
conf.set("hbase.zookeeper.property.clientPort","2181");
HTableInterface usersTable = new HTable(conf, "users");
客户端上的日志:
13/02/06 10:58:32信息zookeeper.ClientCnxn:会话建立
在服务器192.168.113.27/192.168.113.27:2181上完成,sessionid=
0x13cae4bd91b0003,协商超时=40000
这意味着已经和动物园管理员建立了联系
此外,还没有为“用户”表找到任何区域
org.apache.hadoop.hbase.client.NoServerForRegionException:无法
尝试10次后查找用户的区域,9999999999。
位于org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionMeta(HConnectionManager.java:951)
位于org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:856)
位于org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionMeta(HConnectionManager.java:958)
位于org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:860)
位于org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:817)
位于org.apache.hadoop.hbase.client.HTable.finishSetup(HTable.java:234)
位于org.apache.hadoop.hbase.client.HTable.(HTable.java:174)
位于org.apache.hadoop.hbase.client.HTable.(HTable.java:133)
位于com.samsung.HBase.DBMain.putData(DBMain.java:32)
我想我记得这样的事情。如果我没记错的话,这与Zookeper返回一个私有IP地址有关 在客户端HBase配置中,应该让
HBase.rootdir
指向IP地址而不是主机名
<configurtion>
<property>
<name>hbase.rootdir</name>
<value>hdfs://<IP address>:<port>/<HBase location>/</value>
</property>
</configuration>
hbase.rootdir
hdfs://://
是的,我也有这个问题。花了一段时间才弄明白
如果您进入HBase HConnectionManager代码,您将看到调用此方法
HRegionInterface getHRegionConnection(final String hostname, final int port,
确保主机名参数的值映射到有效的IP地址
例如,在我的例子中,我的本地网络上有一台主机名为“ubuntu”的本地hbase服务器,但我测试hbase客户端的机器在Windows7主机文件中没有主机名“ubuntu”的有效映射IP地址
将此条目添加到我的windows 7主机文件解决了此问题
192.168.0.101 ubuntu