HBase以独立模式启动时出错

3

我已经在Ubuntu镜像中下载并安装了HBase 0.94.9。我按照Apache的入门步骤进行操作,其中提到需要修改hbase-site.xml文件,但是我发现我的文件中没有定义任何属性。因此,我添加了两个属性。以下是完整的文件:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>file:///home/dan/hbase</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/home/dan/zookeeper</value>
    </property>
</configuration>

我还确保了/etc/hosts文件没有127.0.1.1的问题:

127.0.0.1   localhost
127.0.0.1   ubuntu

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

如果我理解正确,这个设置应该完全独立地运行HBase,使用本地文件系统;Hadoop没有参与。(Hadoop已安装在此机器上,但目前未运行。)但每当我启动HBase时,日志中会出现以下内容:

2013-07-17 07:24:51,121 ERROR org.apache.hadoop.hbase.master.HMasterCommandLine: Failed to start master
java.net.ConnectException: Call to localhost/127.0.0.1:9000 failed on connection     exception: java.net.ConnectException: Connection refused
    at org.apache.hadoop.ipc.Client.wrapException(Client.java:1099)
    at org.apache.hadoop.ipc.Client.call(Client.java:1075)
    at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:225)
    at sun.proxy.$Proxy11.getProtocolVersion(Unknown Source)

它正在寻找9000端口,好像它认为应该连接到HDFS。但是,在/home/dan/hbase中有文件和文件夹。我已经在HBase文件夹中搜索了所有内容,查找“9000”的唯一地方只出现在文档或src目录中,显示设置分布式或伪分布式环境的示例。所以我想知道为什么这个实例正在寻找9000端口。
有人知道是什么原因导致的吗?
3个回答

2
hbase-site.xml 中,请确保 hbase.rootdir 不是类似于 hdfs://... 的内容,而是指向本地文件系统目录,例如 /home/myuserid/hbase
此外,我认为 hbase.cluster.distributed 应该设置为 false

我之前展示了hbase-site.xml文件,它指定了一个本地文件路径。此后,我还添加了一些属性,包括将hbase.cluster.distributed设置为false。但这并没有起到帮助作用。 - dnuttle

2

事实证明,我必须运行Hadoop。我不知道为什么,因为我设置了HBase仅使用本地文件系统。但是,我花了数小时来解决这个问题,直到最终决定先启动Hadoop,然后启动HBase,HBase立即开始工作。尽管HDFS在端口8020而不是9000上,但情况仍然如此。我感到非常困惑,但至少HBase正在运行。


如果您未使用Hadoop,请卸载它。我曾经遇到过同样的问题,我卸载了Hadoop并重新安装了一个全新的独立HBase。 - sunskin
谢谢sunskin。实际上我也在使用Hadoop(它只是一个沙箱镜像,我会在里面做各种事情),所以我将记住启动hadoop,但我也会记住你的建议供以后参考。 - dnuttle

0
我最近遇到了这个问题。看起来hbase脚本在您的路径中查找hadoop可执行文件,并使用它来神奇地定位配置文件。您可以在启动hbase之前从路径中删除hadoop,以使事情正常运行。
由于我只偶尔使用hadoop,因此我只需将core-site.xml和hbase的所有内容均注释掉,然后hbase就能再次启动了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接