我尝试以伪分布式模式运行HBase。但是在设置hbase-site.xml之后它不起作用。
每次我尝试在hbase shell中运行命令时都会收到此错误:
错误: org.apache.hadoop.hbase.ZooKeeperConnectionException: org.apache.hadoop.hbase.ZooKeeperConnectionException: org.apache.zookeeper.KeeperException $ ConnectionLossException: KeeperErrorCode = connectionLoss for / HBase的
我设置了ssh并确保所有端口都正确。
此外,我无法阻止hbase ./bin/stop-hbase.sh
。我只得到以下输出。
stopping hbase........................................................
答案 0 :(得分:4)
伪分布意味着您在一台计算机上运行所有进程。您需要检查所有必需的进程是否正在运行:
Hadoop的:
动物园管理员:
HBase的:
您还需要确保您的hbase-site.xml包含定义主机名和端口的zookeeper的正确条目。 HBase FAQ和Wiki非常好。你在那里缺少什么?
答案 1 :(得分:2)
这是因为HBase文档中您已将HDFS设置设置为指向端口8020,但Hadoop指令为端口9000配置HDFS。
更改HBase建议指向端口9000的hbase-site.xml设置:
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
<description>The directory shared by RegionServers.
</description>
</property>
答案 2 :(得分:1)
我有类似的问题,并得到与上面相同的错误消息。在我的情况下,HMaster没有运行。使用
sudo start-hbase.sh
解决了这个问题。
答案 3 :(得分:1)
我刚刚通过删除hbase.rootdir和hbase.zookeeper.property.dataDir文件夹来解决问题。例如:
more conf/hbase-site.xml
给了我: hbase.rootdir 文件:/// somepath / HBase的/ testuser的/ HBase的 hbase.zookeeper.property.dataDir / somepath / HBase的/ TESTUSER /动物园管理员
然后删除旧数据:
rm -fr /somepath/hbase/testuser/hbase
mkdir -p /somepath/hbase/testuser/hbase
rm -fr /somepath/hbase/testuser/zookeeper
mkdir -p /somepath/hbase/testuser/zookeeper
然后开始吧:
bin/start-hbase.sh
最后我可以连接到本地实例:
./bin/hbase shell