我已经在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”的所有内容,我看到它列出的唯一位置是在docs或src目录中,显示了设置分布式或伪分布式环境的示例。所以我很难理解为什么这个实例正在寻找端口9000。
任何人都知道造成这种情况的原因是什么?
答案 0 :(得分:2)
在hbase-site.xml
中,确保hbase.rootdir
不是hdfs://...
,而是指向本地文件系统目录,例如/home/myuserid/hbase
此外,我认为hbase.cluster.distributed
应为false
答案 1 :(得分:2)
事实证明我必须运行Hadoop。我不知道为什么,因为我设置HBase只使用本地文件系统。但是我几个小时都没碰到这个问题,直到我最终决定启动Hadoop,然后是HBase,HBase立即开始工作。尽管HDFS在端口8020而不是9000上这是事实。我完全感到困惑,但至少HBase正在运行。
答案 2 :(得分:0)
我最近遇到了这个问题。看起来hbase脚本在路径中查找hadoop可执行文件并使用它来神奇地查找配置文件。您可以在启动hbase之前从路径中删除hadoop以使其工作正常。
我只是断断续续地使用hadoop,所以我只是从我的core-site.xml中注释了所有内容并且hbase再次启动。