Java客户端无法连接到Zookeeper和HBase

时间:2013-06-19 06:55:02

标签: java hbase apache-zookeeper

我写了一个简单的HBase客户端程序来在我的HBase集群(1个主服务器和3个区域服务器)中执行CRUD操作。 Zookeeper实例仅在主服务器中运行,仲裁包括所有4个服务器。集群运行正常,可以使用YCSB客户端执行读/写(意味着服务器/ zookeeper端没有任何问题)。

现在在eclipse类路径中,我添加了所有HBase库和hbase-0.94.7.jar(包含hbase-default.xml文件)。我还在项目中添加了群集中的原始hbase-site.xml文件。

最初,我使用未修改的hbase-default.xml运行客户端代码,并且我发现客户端正在尝试与zoohost实例进行通信。因而忽略了hbase-site.xml。

然后我修改了3个参数,这些参数保存了Master / Zookpeer服务器的公共IP地址并再次尝试。这次我得到以下错误,客户端不断尝试与Zookeeper及其他仲裁成员连接。

我拥有Zookeeper仲裁中的所有4台服务器,并说它们的IP地址是:

  • W.W.W.W // HBase master和Zookeeper Server

  • X.X.X.X // HBase RS和Zookeeper Quorum会员

  • Y.Y.Y.Y // HBase RS和Zookeeper Quorum会员

  • Z.Z.Z.Z // HBase RS和Zookeeper Quorum会员


13/06/19 13:06:23 INFO zookeeper.ZooKeeper: Initiating client connection, connectString=W.W.W.W:2181,X.X.X.X:2181,Y.Y.Y.Y:2181,Z.Z.Z.Z:2181 sessionTimeout=180000 watcher=hconnection

13/06/19 13:06:23 INFO zookeeper.RecoverableZooKeeper: The identifier of this process is 5828@Kamal-VAIO

13/06/19 13:06:24 INFO zookeeper.ClientCnxn: Opening socket connection to server W.W.W.W:2181. Will not attempt to authenticate using SASL (unknown error)

13/06/19 13:06:25 WARN zookeeper.ClientCnxn: Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect

java.net.ConnectException: Connection refused: no further information

13/06/19 13:06:25 WARN zookeeper.RecoverableZooKeeper: Possibly transient ZooKeeper exception: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid

13/06/19 13:06:25 INFO util.RetryCounter: Sleeping 2000ms before retry #1...

13/06/19 13:06:25 INFO zookeeper.ClientCnxn: Opening socket connection to server X.X.X.X:2181. Will not attempt to authenticate using SASL (unknown error)

13/06/19 13:06:26 WARN zookeeper.ClientCnxn: Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect

java.net.ConnectException: Connection refused: no further information

......等等

2 个答案:

答案 0 :(得分:2)

问题已经解决。

解决方案:

  1. 右键单击Eclipse中的项目
  2. 转到“属性”
  3. 选择Java Build Path
  4. 转到图书馆
  5. 单击“添加类文件夹”
  6. 添加名为conf
  7. 的新文件夹
  8. 全部按OK
  9. 将我的hbase-site.xml复制到conf文件夹
  10. 同时将我的HBase群集的ip-host列表添加到Win 7主机文件中并保存。
  11. 运行hbase代码,客户端可以成功连接到Zookeeper和HBase master。
  12. 注意:必须执行步骤10,否则客户端将从Zookeeper实例获取主机名,并且无法解析它们。

    非常感谢大家。

答案 1 :(得分:0)

实际上问题出在kafka-client上。因此,在这种情况下,您必须显式使用kafka-client依赖版本 1.0.2 。有时其他kafka客户端版本会带来问题。在我的情况下,设置kafka-client版本和范围“已提供”后,错误消失了。

 <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
            <version>1.0.2</version>
            <scope>provided</scope>
        </dependency>