Java客户端无法连接到Zookeeper和HBase [英] Java client fails to connect to Zookeeper and HBase

查看:2548
本文介绍了Java客户端无法连接到Zookeeper和HBase的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我写了一个简单的HBase客户端程序来执行我的HBase集群(1 Master和3 Region Server)中的CRUD操作。 Zookeeper实例仅在主服务器中运行,法定人数包含所有4台服务器。群集运行良好,可以使用YCSB客户端执行读/写操作(意味着服务器/ zookeeper端没有任何错误)。

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



最初,我使用未修改的hbase-default.xml运行客户端代码,我发现客户端正尝试与本地主机通信以获得zookeeper实例。因此忽略了hbase-site.xml。然后,我修改了保存Master / Zookpeer服务器公共IP地址的3个参数,然后再次尝试。这次我得到了下面的错误,其中客户端不断尝试连接Zookeeper及其他法定成员。



我拥有Zookeeper法定人数中的所有4台服务器并且可以说他们的IP地址是:


  • WWWW // HBase master和Zookeeper服务器

  • $ HBX RS和Zookeeper Quorum Member / li>
  • ZZZZ // HBase RS和Zookeeper Quorum Member







 
13/06/19 13:06:23信息zookeeper.ZooKeeper:启动客户端连接,connectString = WWWW:2181,XXXX:2181,YYYY:2181, ZZZZ:2181 sessionTimeout = 180000 watcher = hconnection

13/06/19 13:06:23 INFO zookeeper.RecoverableZooKeeper:该进程的标识符是5828 @ Kamal-VAIO

13/06/19 13:06:24信息zookeeper.ClientCnxn:打开套接字连接到服务器WWWW:2181。不会尝试使用SASL进行身份验证(未知错误)

13/06/19 13:06:25 WARN zookeeper.ClientCnxn:服务器null的会话0x0,意外错误,关闭套接字连接并尝试重新连接

java.net.ConnectException:拒绝连接:无更多信息






 
13/06/19 13:06:25警告zookeeper.RecoverableZooKeeper:可能是暂时的ZooKeeper异常:org.apache.zookeeper.KeeperException $ ConnectionLossException:KeeperErrorCode = ConnectionLoss for / hbase / hbaseid

13/06/19 13:06:25 INFO util.RetryCounter:睡前2000ms再试#1 ...

13/06/19 13:06:25 INFO zookeeper。 ClientCnxn:打开与服务器XXXX:2181的套接字连接。不会尝试使用SASL进行身份验证(未知错误)
$ b $ 13/06/19 13:06:26警告zookeeper.ClientCnxn:服务器null的会话0x0,意外错误,关闭套接字连接并尝试重新连接

java.net.ConnectException:拒绝连接:无更多信息






...等等

解决方案

问题已解决。



解决方案:




  1. 右键单击Eclipse中的项目
  2. / li>
  3. 选择Java构建路径

  4. 转至库
  5. 单击添加类文件夹
  6. 添加一个名为conf的新文件夹
  7. 按全部确定

  8. 将我的hbase-site.xml复制到conf文件夹中

  9. 同时将我的HBase集群的ip-host列表添加到Win 7主机文件并保存。

  10. 运行hbase代码,客户端可以成功连接到Zookeeper, HBase master。

注意:步骤10是必须的,否则客户端将从Zookeeper实例获取主机名并且无法解析它们。



非常感谢所有人。

I wrote a simple HBase client program to perform CRUD operations in my HBase cluster (1 Master and 3 Region Server). The Zookeeper instance is only running in the master server and the quorum includes all the 4 servers. The cluster is running fine and can perform read/write using YCSB client (means there are nothing wrong in the server/zookeeper side).

Now in the eclipse classpath I have added all the HBase libs and hbase-0.94.7.jar (which contains the hbase-default.xml file). I have also added the original hbase-site.xml file from the cluster in the project.

Initially, I ran the client code using the unmodified hbase-default.xml and what I've found that the client is trying to communicate with the localhost for zookeeper instance. And thus ignoring the hbase-site.xml.

Then I've modified the 3 parameters which holds the public IP address of the Master/Zookpeer server and tried again. This time I am getting the below error where the client is continuously trying to connect with the Zookeeper and its other quorum members.

I have all the 4 servers in the Zookeeper quorum and lets say their IP addresses are:

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

  • X.X.X.X // HBase RS and Zookeeper Quorum Member

  • Y.Y.Y.Y // HBase RS and Zookeeper Quorum Member

  • Z.Z.Z.Z // HBase RS and Zookeeper Quorum Member


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


... and so on

解决方案

The Problem has been solved.

Solution:

  1. Right Click on the Project in Eclipse
  2. Go to Properties
  3. Select Java Build Path
  4. Go to Libraries
  5. Click Add Class Folder
  6. Add a new folder named conf
  7. Press all OK
  8. Copy my hbase-site.xml into the conf folder
  9. Also add the ip-host lists of my HBase cluster into Win 7 hosts file and save.
  10. Run the hbase codes and the client can successfully connect to Zookeeper and HBase master.

NOTE: Step 10 is must, otherwise the client will get the hostnames from the Zookeeper instance and will not able to resolve them.

Many thanks everyone.

这篇关于Java客户端无法连接到Zookeeper和HBase的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆