hbase无法连接到hadoop

时间:2012-05-01 14:58:59

标签: hadoop hbase

我在伪分布式模式下运行hdfs实例,并尝试在同一台服务器上连接另一个hbase实例。登录hadoop很好,但我经常在hbase'log

中遇到连接失败

=============================================== ===================================

2012-05-01 10:49:07,212 INFO org.apache.zookeeper.ClientCnxn: Opening socket connection to server localhost/127.0.0.1:2181
2012-05-01 10:49:07,213 WARN org.apache.zookeeper.ClientCnxn: Session 0x13708dc552d0001 for server null, unexpected error, closing socket connection and attempting reconnect
java.net.ConnectException: Connection refused
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
        at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567)
        at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1119)

2012-05-01 10:49:08,882 INFO org.apache.zookeeper.ClientCnxn: Opening socket connection to server localhost/127.0.0.1:2181
2012-05-01 10:49:08,882 WARN org.apache.zookeeper.ClientCnxn: Session 0x13708dc552d0001 for server null, unexpected error, closing socket connection and attempting reconnect
java.net.ConnectException: Connection refused
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
        at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567)
        at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1119)

=============================================== ===================================

配置core-site.xml@hadoop

<configuration>

<property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:9000</value>
</property>

</configuration>

配置hbase-site.xml@hbase

<configuration>
<property>
   <name>hbase.rootdir</name>
   <value>hdfs://localhost:9000/hbase</value>
</property>
<property>
   <name>dfs.replication</name>
   <value>1</value>
</property>
</configuration>

我还尝试将localhost替换为服务器的实际ip,但是出现了同样的错误。

4 个答案:

答案 0 :(得分:1)

  • 首先,您需要确保您的hbase主节点正在运行,您可以使用jps进行检查。

如果它没有运行,您可以通过start-hbase.sh命令或hbase master start运行它。 然后通过其他命令检查其状态,例如netstat -an | grep 9000

  • 其次,如果以前的方法不起作用,请检查防火墙配置,例如iptables和SELinux。 使用sudo iptables -L检查您的iptables配置。您可以在基于redhat的linux系统下通过sudo service iptables stop命令禁用iptables。

使用getenforce检查SElinux是否处于enforcing模式。

  • 第三,检查系统配置,例如ssh等。

答案 1 :(得分:1)

您需要将$ HBASE_HOME / bin / lib / hadoop - {{version}} core.jar中的核心hadoop jar替换为$ HADOOP_HOME / hadoop - {{version}} core.jar中的核心。 当我尝试从hbase 0.90-xxx安装hbase 0.92时,我遇到了同样的问题,这工作正常,我将hbase-env.sh和hbase-site.xml从旧的hbase替换为新的但是忘了复制hadoop core jar。

答案 2 :(得分:1)

当我在配置中看到localhost时,我总是怀疑。此外,当您使用localhost时,从您正在运行的主机以外的主机访问伪造的分布式系统中的任何服务变得非常困难(不可能)。

您确实说过您尝试过IP地址,但您可能希望确保该节点真正认为的IP地址。

检查动物园管理员日志启动时的日志,并查看它“认为”它所在的IP地址。应该有一句话:

2012-01-31 09:32:46,083 - INFO  [main:Environment@97] - Server environment:host.name=ip-10-8-127-58.ec2.internal

然后使用host.name的值作为ALL Hadodop,​​HBase,Hive,Zookeeper等需要主机名的配置文件中的所有位置的值(假设它们与你在psuedo中所说的都在同一台机器上 - 分配模式)

此外,您没有在hbase-site.xml中显示您的hbase.zookeeper.quorum设置。这就是hbase了解zookeeper地址的原因

  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>ip-10-8-127-58.ec2.internal</value>
  </property>

答案 3 :(得分:0)

我认为Hbase找不到zookeeper仲裁,你必须在hbase-site.xml中设置hbase.zookeeper.quorum属性。还要检查是否正确设置了类路径,请查看此文档http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/package-summary.html#classpath