如何使用Docker以完全分布式模式配置Hbase群集

时间:2015-11-04 06:57:47

标签: docker hbase apache-zookeeper

我在完全分布式模式下设置HBase群集,包含1个HMaster节点和3个Regionservers节点

我的hbase-site.xml文件包含

<configuration>
   <property>
     <name>hbase.master</name>
     <value>hbase.master:60000</value>
   </property>
<property>
   <name>hbase.rootdir</name>
   <value>hdfs://hadoop.master:9000/data/hbase</value>
</property>
<property>
   <name>hbase.cluster.distributed</name>
   <value>true</value>
 </property>
 <property>
   <name>hbase.zookeeper.property.clientPort</name>
   <value>2181</value>
 </property>
 <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/tmp</value>
 </property>
 <property>
    <name>hbase.zookeeper.quorum</name>
    <value>hbase.master</value>
 </property>
</configuration>

我的hadoop群集正常运行。

我使用hbase master在同一台机器上运行Zookeeper,并将配置文件zoo.cfg作为默认值运行。

当我启动集群并查看Hbase Master Web UI时,所有Regionserver都出现在列表中,但是当我尝试创建表或其他命令时,例如hbase>status,它们总是显示Exeception:

ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
 at org.apache.hadoop.hbase.master.HMaster.checkInitialized(HMaster.java:1889)
 at org.apache.hadoop.hbase.master.MasterRpcServices.getClusterStatus(MasterRpcServices.java:695)
 at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:42406)
 at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2033)
 at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
 at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
 at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
 at java.lang.Thread.run(Thread.java:745)

那么我的群集出了什么问题?

1 个答案:

答案 0 :(得分:0)

我发现我使用的是Docker 1.8.2版本 完全删除Docker后,安装较旧的(1.7.0)然后我的脚本正常运行