能够启动hbase shell,但无法在该shell上工作

时间:2018-07-30 10:17:03

标签: hbase apache-zookeeper

我启动了zookeeper,它说zookeeper服务器已启动,但是具有以下反馈:

ZooKeeper JMX enabled by default
Using config: /home/saichanda/zookeeper-3.4.12/bin/../conf/zoo.cfg
mkdir: cannot create directory ‘’: No such file or directory
Starting zookeeper ... STARTED

然后我使用

启动hbase
./bin/start-hbase.sh

输出:

starting master, logging to /usr/local/hbase/bin/../logs/hbase-root-master-saichanda-OptiPlex-9020.out

然后我给出命令

./bin/hbase shell

这将打开hbase shell,但是当我在shell中创建表时,它将引发以下

错误:

2018-07-28 11:19:07,563 ERROR [main] zookeeper.RecoverableZooKeeper: ZooKeeper exists failed after 4 attempts
2018-07-28 11:19:07,564 WARN  [main] zookeeper.ZKUtil: hconnection-0x10823d720x0, quorum=localhost:2181, baseZNode=/hbase Unable to set watcher on znode (/hbase/hbaseid)
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045)
at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:220)
at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:419)
at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65)
at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:105)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.retrieveClusterId(ConnectionManager.java:905)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.<init>(ConnectionManager.java:648)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

我们是否需要将Zookeeper日志和hbase的位置放在同一目录中?

即使设置后,我仍然有错误

export HBASE_MANAGES_ZK=true

但是,在hbase-site.xml文件中,我希望hbase存储其内置的zookeeper文件的路径与hbase目录不同

可以使用不同的地址,还是应该将它们放在同一目录中?

如何解决此错误,以便顺利运行hbase shell?

2 个答案:

答案 0 :(得分:1)

确保在hbase-site.xml中使用有效值指定了以下内容。我假设这是非HA设置,因为您已要求hbase托管其自己的Zk。

<property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>{absolute_path}</value>
</property>
<property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
</property>
<property>
    <name>hbase.zookeeper.quorum</name>
    <value>{hostname}</value>
</property>
<property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
</property>

添加此重新启动hbase进程后,查看hbase日志中没有错误。可以在$ {hbase_home} / logs /

中找到

答案 1 :(得分:0)

请确保将hbase.zookeeper.quorum设置为现有ZK,否则HBase将无法工作。您可以共享hbase-site.xml设置吗?