我尝试启动 HBase

I tried to start up HBase

我试过运行start-hbase.sh。但是...

dream@dream-VirtualBox:/usr/local/hbase/bin$ cat ~/.bashrc | tail -n 2
export PATH=$PATH:/usr/local/hadoop/sbin/:/usr/local/hadoop/bin/:/usr/local/hbase/bin/:/usr/local/mahout/bin/
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
dream@dream-VirtualBox:/usr/local/hbase/bin$source ~/.bashrc
dream@dream-VirtualBox:/usr/local/hbase/bin$sh -x ./bin/start-hbase.sh 
...(skip)...
./start-hbase.sh: 53: [: unexpected operator
+ /usr/local/hbase/bin/hbase-daemons.sh --config /usr/local/hbase/bin/../conf start zookeeper
Error: Could not find or load main class .usr.lib.jvm.java-7-oracle..bin.java
+ /usr/local/hbase/bin/hbase-daemon.sh --config /usr/local/hbase/bin/../conf start master
starting master, logging to /usr/local/hbase/bin/../logs/hbase-dream-master-dream-VirtualBox.out
Error: Could not find or load main class .usr.lib.jvm.java-7-oracle..bin.java
+ /usr/local/hbase/bin/hbase-daemons.sh --config /usr/local/hbase/bin/../conf --hosts /usr/local/hbase/bin/../conf/regionservers start regionserver
starting regionserver, logging to /usr/local/hbase/bin/../logs/hbase-dream-1-regionserver-dream-VirtualBox.out
Error: Could not find or load main class .usr.lib.jvm.java-7-oracle..bin.java
+ /usr/local/hbase/bin/hbase-daemons.sh --config /usr/local/hbase/bin/../conf --hosts /usr/local/hbase/bin/../conf/backup-masters start master-backup

我观察到 start-hbase.sh 它尝试 运行 shell of /usr/local/hbase/bin/hbase org.apache.hadoop.hbase.zookeeper.ZKServerTool 失败了。

我不确定 hbase 为什么总是抛出异常。

dream@dream-VirtualBox:/usr/local/hbase$ /usr/local/hbase/bin/hbase org.apache.hadoop.hbase.zookeeper.ZKServerTool
Error: Could not find or load main class .usr.lib.jvm.java-7-oracle..bin.java
dream@dream-VirtualBox:/usr/local/hbase$ ./bin/hbase shell
Error: Could not find or load main class .usr.lib.jvm.java-7-oracle..bin.java

但是...我尝试使用 sudo。也许看起来可行

dream@dream-VirtualBox:/usr/local/hbase$ sudo ./bin/start-hbase.sh 
starting master, logging to /usr/local/hbase/bin/../logs/hbase-root-master-dream-VirtualBox.out
Could not start ZK at requested port of 2181.  ZK was started at port: 2182.  Aborting as clients (e.g. shell) will not be able to find this ZK quorum.

dream@dream-VirtualBox:/usr/local/hbase$ jps
2869 NameNode
3540 NodeManager
3403 ResourceManager
3237 SecondaryNameNode
3031 DataNode
5666 Jps

dream@dream-VirtualBox:/usr/local/hbase$ sudo jps
5053 HQuorumPeer
2869 NameNode
3540 NodeManager
5857 Jps
3403 ResourceManager
3237 SecondaryNameNode
3031 DataNode

dream@dream-VirtualBox:/usr/local/hbase$ sudo ./bin/hbase shell
2015-08-10 15:41:04,136 WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 1.1.1, rd0a115a7267f54e01c72c603ec53e91ec418292f, Tue Jun 23 14:44:07 PDT 2015

hbase(main):001:0> 

我的环境

我的 HBase 设置

conf/hbase-site.xml

<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>file:///usr/local/hbase</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/usr/local/hbase/zookeeper</value>
    </property>
</configuration>

~/.bashrc

export JAVA_HOME=/usr/lib/jvm/java-7-oracle
export PATH=$PATH:/usr/local/hadoop/sbin/:/usr/local/hadoop/bin/:/usr/local/hbase/bin/

你能帮我什么忙吗? 谢谢。

在hbase中添加JAVA_HOME-env.sh

export JAVA_HOME=/usr/lib/jvm/java-7-oracle

在 hbase-site.xml

中添加给定 属性
<property>

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

<value>2181</value>

</property>

<property>

<name>hbase.zookeeper.property.dataDir</name>
#create zookeeperDir directory with permission 755
<value>/home/kishore/zookeeperDir</value>

</property>

确保您的动物园管理员应该 运行 在端口 2181 上。

首先,我不确定为什么 /bin/hbase 中有一些有趣的 属性 exec。

/bin/hbase:

exec "$JAVA" -Dproc_$COMMAND -XX:OnOutOfMemoryError="kill -9 %p" $HEAP_SETTINGS $HBASE_OPTS $CLASS "$@"

实体:

exec /usr/lib/jvm/java-7-oracle/bin/java -DXXXXXX /usr/lib/jvm/java-7-oracle//bin/java -Xmx1000m -DXXXXXX

我认为我需要删除 /usr/lib/jvm/java-7-oracle//bin/java

我在 /bin/hbase 的脚本中观察到第 217-229 行。

217 #If avail, add Hadoop to the CLASSPATH and to the JAVA_LIBRARY_PATH
218 # Allow this functionality to be disabled
219 if [ "$HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP" != "true" ] ; then
220   HADOOP_IN_PATH=$(PATH="${HADOOP_HOME:-${HADOOP_PREFIX}}/bin:$PATH" which hadoop 2>/dev/null)
221   if [ -f ${HADOOP_IN_PATH} ]; then
222     HADOOP_JAVA_LIBRARY_PATH=$(HADOOP_CLASSPATH="$CLASSPATH" ${HADOOP_IN_PATH} \
223                                org.apache.hadoop.hbase.util.GetJavaProperty java.library.path 2>/dev/null)
224     if [ -n "$HADOOP_JAVA_LIBRARY_PATH" ]; then
225       JAVA_LIBRARY_PATH=$(append_path "${JAVA_LIBRARY_PATH}" "$HADOOP_JAVA_LIBRARY_PATH")
226     fi
227     CLASSPATH=$(append_path "${CLASSPATH}" `${HADOOP_IN_PATH} classpath 2>/dev/null`)
228   fi
229 fi

在 PATH 中 HADOOP_PATH 时执行某些操作。

解释为什么我的用户(梦想)没有 运行 /bin/hbase 但 root 没问题。

所以,我在 PATH 中删除了 HADOOP_PATH。看来可行。

dream@dream-VirtualBox:/usr/local/hbase/bin$ ./start-hbase.sh
starting master, logging to /usr/local/hbase/bin/../logs/hbase-dream-master-dream-VirtualBox.out
dream@dream-VirtualBox:/usr/local/hbase/bin$ jps
22956 Jps
2869 NameNode
3540 NodeManager
3403 ResourceManager
3237 SecondaryNameNode
22722 HMaster
3031 DataNode
dream@dream-VirtualBox:/usr/local/hbase/bin$ ./hbase shell
2015-08-10 23:33:44,016 WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 1.1.1, rd0a115a7267f54e01c72c603ec53e91ec418292f, Tue Jun 23     14:44:07 PDT 2015

hbase(main):001:0>

你 运行 sh 解释器用命令

sh -x ./bin/start-hbase.sh

改用

./bin/start-hbase.sh

就像你在

sudo ./bin/start-hbase.sh

这会自动选择可能与 start-hbase.sh 说的第一行不同的脚本解释器

#!/usr/bin/env bash

这两种方式的区别在这里解释一下:https://askubuntu.com/questions/22910/what-is-the-difference-between-and-sh-to-run-a-script

这解决了我遇到的问题

bin/start-hbase.sh: 51: [: unexpected operator

我使用的是 hbase-1.1.2,因此该行可能已更改。

问题出在 运行 ZK 服务上。 您附上的屏幕截图中的错误 message/logs 清楚地提到了问题:

Could not start ZK at requested port of 2181.  ZK was started at port: 2182.  Aborting as clients (e.g. shell) will not be able to find this ZK quorum.

我也遇到了同样的问题,但是当我停止 ZK 服务时一切正常。 JPS 开始上架 HMaster 服务。

我用过Java8和HBase 2.2.0