我写了一个简单的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
......等等
答案 0 :(得分:2)
问题已经解决。
注意:必须执行步骤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>