HBase 无法在 Mac OSX 上以单节点集群模式启动
HBase fails to start in single node cluster mode on Mac OSX
我正在尝试设置个人 HBase 开发环境。我有 hdfs 和 yarn 运行ning,但无法启动 HBase。
我已经通过 运行ning start-dfs.sh 和 start-yarn.sh 启动了 hadoop 2.7.1。我已经通过测试 hdfs dfs -mkdir /test 和 运行ning 示例中捆绑的示例 MR 作业验证了这些是 运行ning,我在端口 50070 浏览了 HDFS。
我已经在端口 2181 上启动了 zookeeper 3.4.6 并设置了它的 dataDir。我的 zoo.cfg 有:
dataDir=/Users/.../tools/hd/zookeeper_data
clientPort=2181
我在我选择的 dataDir 中观察它的 zookeeper_server.PID 文件,当我 运行 jps 时,我看到以下内容:
51074 NodeManager
50743 DataNode
50983 ResourceManager
50856 SecondaryNameNode
57848 QuorumPeerMain
58731 Jps
50653 NameNode
上面的 QuorumPeerMain 与 zookeeper_server.PID 中的 PID 匹配,如我所料。这种预期是否正确?从我目前所做的来看,是否应该在此处显示更多进程?
我安装了hbase-1.1.2。我配置hbase-site.xml。我将 hbase.rootDir 设置为 hdfs://localhost:8200/hbase,我的 hdfs 是 运行ning 在 localhost:8200。我将 hbase.zookeeper.property.dataDir 设置为我的 zookeeper 的 dataDir,期望它将使用此 属性 来查找 运行ning zookeeper 的 PID。这种期望是正确的还是我误解了? hbase-site.xml中的配置是:
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:8020/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>Users/.../tools/hd/zookeeper_data</value>
</property>
当我 运行 启动-hbase.sh 我的服务器无法启动。我看到这条日志消息:
2015-09-26 19:32:43,617 ERROR [main] master.HMasterCommandLine: Master exiting
调查我 运行 hbase master start
并获取更多详细信息:
2015-09-26 19:41:26,403 INFO [Thread-1] server.NIOServerCnxn: Stat command output
2015-09-26 19:41:26,405 INFO [Thread-1] server.NIOServerCnxn: Closed socket connection for client /127.0.0.1:63334 (no session established for client)
2015-09-26 19:41:26,406 INFO [main] zookeeper.MiniZooKeeperCluster: Started MiniZooKeeperCluster and ran successful 'stat' on client port=2182
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.
2015-09-26 19:41:26,406 ERROR [main] master.HMasterCommandLine: Master exiting
java.io.IOException: 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.
at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:214)
at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:139)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:126)
at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:2304)
所以我有几个问题:
- 我是否应该在 运行ning HBase 之前尝试设置一个动物园管理员?
- 为什么当我启动了一个 zookeeper 并告诉 HBase 它的 dataDir 在哪里时,HBase 是否尝试启动它自己的 zookeeper?
- 上面有什么明显的stupid/misguided吗?
您用来启动 hbase 的脚本 start-hbase.sh
将尝试按顺序启动以下组件:
- 动物园管理员
- hbase大师
- hbase 区域服务器
- hbase主备
因此,您可以停止由您启动的 zookeeper(或者)您可以自己单独启动守护进程:
# start hbase master
bin/hbase-daemon.sh --config ${HBASE_CONF_DIR} start master
# start region server
bin/hbase-daemons.sh --config ${HBASE_CONF_DIR} --hosts ${HBASE_CONF_DIR}/regionservers start regionserver
HBase 独立启动它自己的 zookeeper(如果你 运行 start-hbase.sh
),但它如果无法启动或保持 运行ning,其他需要的 hbase 守护进程将不会工作。
确保在 hbase-site.xml
文件中明确设置接口 lo0
的属性:
<property>
<name>hbase.zookeeper.dns.interface</name>
<value>lo0</value>
</property>
<property>
<name>hbase.regionserver.dns.interface</name>
<value>lo0</value>
</property>
<property>
<name>hbase.master.dns.interface</name>
<value>lo0</value>
</property>
我发现当我的 wifi 打开时,如果这些条目丢失,zookeeper 会申请启动。
我正在尝试设置个人 HBase 开发环境。我有 hdfs 和 yarn 运行ning,但无法启动 HBase。
我已经通过 运行ning start-dfs.sh 和 start-yarn.sh 启动了 hadoop 2.7.1。我已经通过测试 hdfs dfs -mkdir /test 和 运行ning 示例中捆绑的示例 MR 作业验证了这些是 运行ning,我在端口 50070 浏览了 HDFS。
我已经在端口 2181 上启动了 zookeeper 3.4.6 并设置了它的 dataDir。我的 zoo.cfg 有:
dataDir=/Users/.../tools/hd/zookeeper_data
clientPort=2181
我在我选择的 dataDir 中观察它的 zookeeper_server.PID 文件,当我 运行 jps 时,我看到以下内容:
51074 NodeManager
50743 DataNode
50983 ResourceManager
50856 SecondaryNameNode
57848 QuorumPeerMain
58731 Jps
50653 NameNode
上面的 QuorumPeerMain 与 zookeeper_server.PID 中的 PID 匹配,如我所料。这种预期是否正确?从我目前所做的来看,是否应该在此处显示更多进程?
我安装了hbase-1.1.2。我配置hbase-site.xml。我将 hbase.rootDir 设置为 hdfs://localhost:8200/hbase,我的 hdfs 是 运行ning 在 localhost:8200。我将 hbase.zookeeper.property.dataDir 设置为我的 zookeeper 的 dataDir,期望它将使用此 属性 来查找 运行ning zookeeper 的 PID。这种期望是正确的还是我误解了? hbase-site.xml中的配置是:
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:8020/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>Users/.../tools/hd/zookeeper_data</value>
</property>
当我 运行 启动-hbase.sh 我的服务器无法启动。我看到这条日志消息:
2015-09-26 19:32:43,617 ERROR [main] master.HMasterCommandLine: Master exiting
调查我 运行 hbase master start
并获取更多详细信息:
2015-09-26 19:41:26,403 INFO [Thread-1] server.NIOServerCnxn: Stat command output
2015-09-26 19:41:26,405 INFO [Thread-1] server.NIOServerCnxn: Closed socket connection for client /127.0.0.1:63334 (no session established for client)
2015-09-26 19:41:26,406 INFO [main] zookeeper.MiniZooKeeperCluster: Started MiniZooKeeperCluster and ran successful 'stat' on client port=2182
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.
2015-09-26 19:41:26,406 ERROR [main] master.HMasterCommandLine: Master exiting
java.io.IOException: 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.
at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:214)
at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:139)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:126)
at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:2304)
所以我有几个问题:
- 我是否应该在 运行ning HBase 之前尝试设置一个动物园管理员?
- 为什么当我启动了一个 zookeeper 并告诉 HBase 它的 dataDir 在哪里时,HBase 是否尝试启动它自己的 zookeeper?
- 上面有什么明显的stupid/misguided吗?
您用来启动 hbase 的脚本 start-hbase.sh
将尝试按顺序启动以下组件:
- 动物园管理员
- hbase大师
- hbase 区域服务器
- hbase主备
因此,您可以停止由您启动的 zookeeper(或者)您可以自己单独启动守护进程:
# start hbase master
bin/hbase-daemon.sh --config ${HBASE_CONF_DIR} start master
# start region server
bin/hbase-daemons.sh --config ${HBASE_CONF_DIR} --hosts ${HBASE_CONF_DIR}/regionservers start regionserver
HBase 独立启动它自己的 zookeeper(如果你 运行 start-hbase.sh
),但它如果无法启动或保持 运行ning,其他需要的 hbase 守护进程将不会工作。
确保在 hbase-site.xml
文件中明确设置接口 lo0
的属性:
<property>
<name>hbase.zookeeper.dns.interface</name>
<value>lo0</value>
</property>
<property>
<name>hbase.regionserver.dns.interface</name>
<value>lo0</value>
</property>
<property>
<name>hbase.master.dns.interface</name>
<value>lo0</value>
</property>
我发现当我的 wifi 打开时,如果这些条目丢失,zookeeper 会申请启动。