3

我已经在 Linux 机器(192.168.113.27)上安装了 HBase,现在我在 Windows 机器上的 Eclipse IDE 中编写了一些示例代码,使用 JAVA API 与 Linux 机器上的 HBase 进行通信。我在 Linux 机器上的 HBase 上创建了“用户”表。

客户端连接到zookeeper,如下面的日志中所述:之后我收到异常“找不到用户表的区域”。为了解决这个问题,我阅读了各种线程并尝试了各种方法,但无法解决。

我尝试在 /conf/regionservers 中将本地主机更改为 Linux 机器 IP(192.168.113.27),但仍然出现相同的错误。

示例代码:

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 INFO zookeeper.ClientCnxn:服务器 192.168.113.27/192.168.113.27:2181 上的会话建立完成,sessionid = 0x13cae4bd91b0003,协商超时 = 40000

这意味着与zookeeper的连接已经建立。

在 Excetion 上进一步没有找到“用户”表的区域。

org.apache.hadoop.hbase.client.NoServerForRegionException: 10 次尝试后无法为用户找到区域,99999999999999。在 org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:951) 在 org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:856) 在 org.apache .hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(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。

4

2 回答 2

2

Yes I had this issue as well. Took a while to figure out.

If you step into the HBase HConnectionManager code you will see this method being called.

   HRegionInterface getHRegionConnection(final String hostname, final int port,

Make sure the value of the hostname argument maps to a VALID IP address.

For instance, in my case I had a local hbase server on my local network with a hostname of "ubuntu" but the machine I was testing the hbase client with did not have a valid mapping IP address for hostname "ubuntu" in the windows 7 hosts file.

adding this entry to my windows 7 hosts file solved the problem

192.168.0.101   ubuntu
于 2013-06-26T08:42:36.880 回答
0

我想我记得这样的事情。如果我没记错的话,这与 Zookeper 返回一个私有 IP 地址有关。

在您的客户端 HBase 配置中,您应该让hbase.rootdir指向 IP 地址而不是主机名。

<configurtion>
    <property>
         <name>hbase.rootdir</name>
         <value>hdfs://<IP address>:<port>/<HBase location>/</value>
    </property>
</configuration>
于 2013-02-07T08:57:22.047 回答