HBase Java Client:getMaster Connection被拒绝

时间:2012-05-06 11:59:05

标签: hbase

我已经在伪分布式模式下设置了一个带有hadoop和hbase的节点,当然还安装了zookeeper和regionserver。

一切运行顺利但是当通过Java Client API连接到hbase时,我遇到了异常。

我试了好几个小时来解决这个问题,但我无法做到。 我可以telnet到remotemachine:60000,所以这不是端口防火墙问题。 日志也不会报告任何特殊内容。

(注意日志debianhdfs正确设置为主机文件中的IP)

  

12/05/06 19:47:27 INFO zookeeper.ClientCnxn:打开套接字连接   到服务器debianhdfs / 192.168.137.135:2181 12/05/06 19:47:27 INFO   zookeeper.ClientCnxn:建立套接字连接   debianhdfs / 192.168.137.135:2181,发起会议12/05/06 19:47:27   INFO zookeeper.ClientCnxn:在服务器上完成会话建立   debianhdfs / 192.168.137.135:2181,sessionid = 0x13721c707ff002f,   negotiated timeout = 40000 12/05/06 19:47:28 INFO   client.HConnectionManager $ HConnectionImplementation:getMaster尝试   0 of 1失败;不再重试了。 java.net.ConnectException:连接   拒绝:没有进一步的信息   sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)at   sun.nio.ch.SocketChannelImpl.finishConnect(未知来源)at   org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)     在org.apache.hadoop.net.NetUtils.connect(NetUtils.java:408)at   org.apache.hadoop.hbase.ipc.HBaseClient $ Connection.setupIOstreams(HBaseClient.java:328)     在   org.apache.hadoop.hbase.ipc.HBaseClient.getConnection(HBaseClient.java:883)     在org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:750)     在   org.apache.hadoop.hbase.ipc.HBaseRPC $ Invoker.invoke(HBaseRPC.java:257)     在$ Proxy4.getProtocolVersion(未知来源)at   org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:419)at   org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:393)at   org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:444)at at   org.apache.hadoop.hbase.client.HConnectionManager $ HConnectionImplementation.getMaster(HConnectionManager.java:567)     在   org.apache.hadoop.hbase.client.HBaseAdmin。(HBaseAdmin.java:95)     在   org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:1296)     在Main.main(Main.java:57)线程“main”中的异常   org.apache.hadoop.hbase.MasterNotRunningException:debianhdfs:60000     在   org.apache.hadoop.hbase.client.HConnectionManager $ HConnectionImplementation.getMaster(HConnectionManager.java:603)     在   org.apache.hadoop.hbase.client.HBaseAdmin。(HBaseAdmin.java:95)     在   org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:1296)     在Main.main(Main.java:57)

在独立模式下,非伪分布式I使用相同的代码获得以下异常:

  

12/05/06 20:32:49 INFO zookeeper.ClientCnxn:打开套接字连接   到服务器debianhdfs / 192.168.137.135:2181 12/05/06 20:32:49信息   zookeeper.ClientCnxn:建立套接字连接   debianhdfs / 192.168.137.135:2181,发起会议12/05/06 20:32:49   INFO zookeeper.ClientCnxn:在服务器上完成会话建立   debianhdfs / 192.168.137.135:2181,sessionid = 0x1372210f8fe0004,   negotiated timeout = 40000 12/05/06 20:32:49 INFO   client.HConnectionManager $ HConnectionImplementation:ZooKeeper   可用,但没有找到有效的主要位置12/05/06 20:32:49信息   client.HConnectionManager $ HConnectionImplementation:getMaster尝试   0 of 1失败;不再重试了。   org.apache.hadoop.hbase.MasterNotRunningException at   org.apache.hadoop.hbase.client.HConnectionManager $ HConnectionImplementation.getMaster(HConnectionManager.java:564)     在   org.apache.hadoop.hbase.client.HBaseAdmin。(HBaseAdmin.java:95)     在   org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:1296)     在Main.main(Main.java:57)线程“main”中的异常   org.apache.hadoop.hbase.MasterNotRunningException at   org.apache.hadoop.hbase.client.HConnectionManager $ HConnectionImplementation.getMaster(HConnectionManager.java:601)     在   org.apache.hadoop.hbase.client.HBaseAdmin。(HBaseAdmin.java:95)     在   org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:1296)     在Main.main(Main.java:57)

Configuration config = HBaseConfiguration.create();
    config.set("hbase.zookeeper.quorum", "debianhdfs"); 
        config.set("hbase.zookeeper.property.clientPort","2181");    

    HBaseAdmin.checkHBaseAvailable(config);

Configuration config = HBaseConfiguration.create(); config.set("hbase.zookeeper.quorum", "debianhdfs"); config.set("hbase.zookeeper.property.clientPort","2181"); HBaseAdmin.checkHBaseAvailable(config);

1 个答案:

答案 0 :(得分:1)

由于您是独立运行的,为什么不尝试首先使用与HBase一起运行的zookeeper?由于HBase在独立模式下管理自己的本地动物园管理员,因此使用它可能会减少遇到错误的机会,并且由于您需要管理的程序较少,因此您可以更轻松地解决问题。

要让HBase运行自己的ZK实例,请前往${HBASE_HOME}/conf/hbase-env.sh,一直滚动到底部并确保有一行export HBASE_MANAGES_ZK=true,或者该行被注释掉(因为默认情况下) HBase管理自己的ZK)