无法启动-hbase.sh(抛出错误)

时间:2016-06-02 20:51:10

标签: hadoop hbase apache-zookeeper

当我start-hbase.sh时,我收到以下错误

localhost: starting zookeeper, logging to /usr/lib/HBase/bin/../logs/hbase-hduser-zookeeper-nkhl.out
localhost: java.io.FileNotFoundException: /home/hduser/zookeeperpropertydataDir/myid (Permission denied)
localhost:  at java.io.FileOutputStream.open0(Native Method)
localhost:  at java.io.FileOutputStream.open(FileOutputStream.java:270)
localhost:  at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
localhost:  at java.io.FileOutputStream.<init>(FileOutputStream.java:162)
localhost:  at java.io.PrintWriter.<init>(PrintWriter.java:263)
localhost:  at org.apache.hadoop.hbase.zookeeper.HQuorumPeer.writeMyID(HQuorumPeer.java:162)
localhost:  at org.apache.hadoop.hbase.zookeeper.HQuorumPeer.main(HQuorumPeer.java:70)
starting master, logging to /usr/lib/HBase/logs/hbase-hduser-master-nkhl.out
OpenJDK 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
regionserver running as process 25123. Stop it first.

在此之后,当我执行hbase shell时,它会打开,但是当我list时会抛出此错误:

ERROR: Can't get master address from ZooKeeper; znode data == null

    Here is some help for this command:
    List all tables in hbase. Optional regular expression parameter could
    be used to filter the output. Examples:

      hbase> list
      hbase> list 'abc.*'
      hbase> list 'ns:abc.*'
      hbase> list 'ns:.*'

这是jps

25123 HRegionServer
23975 SecondaryNameNode
23767 DataNode
24168 ResourceManager
26456 HMaster
26665 Jps
24297 NodeManager
23613 NameNode

Zookeeper开始正常:

ZooKeeper JMX enabled by default Using config:
/usr/lib/zookeeper/conf/zoo.cfg Starting zookeeper ... STARTED

我的hbase-site.xml配置:

<configuration>

    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://localhost:54433/hbase</value>
    </property>

    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>

    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>localhost</value>
    </property>

    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>

    <property>
        <name>hbase.zookeeper.property.clientPort</name>
        <value>2181</value>
    </property>

    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/home/hduser/zookeeperpropertydataDir</value>
    </property>

    <property >
        <name>hbase.master.port</name>
            <value>60010</value>
    </property>

    <property>
            <name>hbase.zookeeper.property.clientPort</name>
            <value>2181</value>
            <description> The port at which the clients will connect.</description>
        </property>


</configuration>

这是我的hbase-env.sh配置:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/
export HBASE_REGIONSERVERS=${HBASE_HOME}/conf/regionservers
export HBASE_MANAGES_ZK=true

我们将不胜感激。

2 个答案:

答案 0 :(得分:0)

Hbase zookeeper deamon HQuorumPeer未运行。其中一个原因可能是dir不存在,如日志中所示: -

<property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/home/hduser/zookeeperpropertydataDir</value>
    </property>

答案 1 :(得分:0)

确保已创建ZooKeeper使用的文件并具有正确的特权。 使用chmod授予所有用户访问权限。这解决了我的问题。

chmod -R 777 path/file_name
<property>
  <name>hbase.zookeeper.property.dataDir</name>
  <value>/home/hduser /zookeeperpropertydataDir</value>
</property>