经过几天的部署和大家的帮助,终于把Hbases弄好了,在这里写下来方便其他人使用。也在此感谢jixianqiuxue和bob007的热心帮助。
首先下载对应的版本,不然之后的一切都是白做工
我的实验环境是:
hadoop:hadoop-2.2.0
zookeeper:zookeeper-3.4.5
Hbase: hbase-0.96.2-hadoop2 其实看Hbases版本是否对应最快的方法是到Hbases的lib目录下看它的关联jar是Hadoop哪个版本的,如果和你使用的版本不同,可做如下操作,
find /home/hadoop-2.2.X/share/hadoop -name "hadoop*jar" | xargs -i cp {} /L/hbase-0.96.0-hadoop2/lib/ 把对应的jar文件替换就OK了
注意:开始进入hbases-env.sh 有这样一句话“ The java implementation to use. Java 1.6 required.” 不用管它,JAVA是向下兼容的,我的JAVA为1.7.0
安装注意事项:
1.zookeeper是奇数个这个问题我已经验证,集群是偶数个同样可以运行,所以不要纠结这个奇偶的问题了
2.zookeeper,hbases不要安装在“home”目录下,会因为权限而让你浪费不必要的时间,我改为了"/"根目录下就解决了让我忙活四天的问题
3.如下配置是正确的,2181这个端口号是可以加入的
<property>
<name>hbase.rootdir</name>
<value>hdfs://172.18.11.1:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>file:/usr/hbase/tmp</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>file:/usr/hbase/zookeeper</value>
</property>
<property>
<name>hbase.zookeeper.clientPort</name>
<value>2181</value>
</property>
<property>
<name>hbase.master</name>
<value>hdfs://172.18.11.1:60000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>172.18.11.1,172.18.11.5</value>
</property>
出现的问题:
org.apache.hadoop.hbase.catalog.CatalogTracker@25f7d3f2013-12-12 09:16:59,827 FATAL [master:master:60000] master.HMaster: Unhandled exception. Starting shutdown.
java.lang.IllegalArgumentException: .META. no longer exists. The table has been renamed to hbase:meta
at org.apache.hadoop.hbase.TableName.valueOf(TableName.java:292)
at org.apache.hadoop.hbase.zookeeper.ZKTable.populateTableStates(ZKTable.java:82)
at org.apache.hadoop.hbase.zookeeper.ZKTable.<init>(ZKTable.java:69)
at org.apache.hadoop.hbase.master.AssignmentManager.<init>(AssignmentManager.java:281)
at org.apache.hadoop.hbase.master.HMaster.initializeZKBasedSystemTrackers(HMaster.java:677)
at org.apache.hadoop.hbase.master.HMaster.finishInitialization(HMaster.java:809)
at org.apache.hadoop.hbase.master.HMaster.run(HMaster.java:603)
at java.lang.Thread.run(Thread.java:662)
INFO [master:master:60000] master.HMaster: HMaster main thread exiting
2013-12-12 09:16:59,878 ERROR [main] master.HMasterCommandLine: Master exiting
java.lang.RuntimeException: HMaster Aborted
at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:192)
at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:134)
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:2787)
这个问题是很常见的问题,解决方案大家也给出了方法,在这里我汇总一下:
1.检查你的hbases和zookeeper的安装目录,如果在/home 下 就算配置对了,也会报如上的错误的
2.出现了用脚本停止hbase却无法停止,具体现象是"sh stop-hbase.sh"之后,本来没有的HMaster会出现一会之后消失,而从节点的HRegionServer不会消失,你就要考虑安装路径和安装是不是对的这个问题了
3.还有一个解决方案像更多人说的一样,删除hbase.zookeeper.property.dataDir 和hbase.tmp.dir,但是我就算成功配置了这个路径,也没有数据写入,所以这个方案对我这种情况是没啥用
4.检查时间的同步
补充内容 (2015-5-28 10:56):
zookeeper 集群数要为奇数个
补充内容 (2015-6-9 11:27):
如果还是不行 可以试着注释掉hbase.zookeeper.clientPort 和hbase.zookeeper.quorum试试
补充内容 (2015-6-11 17:01):
同时提醒如果换版本 记得要把zookeeper 中的zookeeper-data 的数据清空,不然也会出错
补充内容 (2016-3-2 15:33):
补充一下:Hadoop 和HBase 对应版本可以在官网查看实时更新:http://hbase.apache.org/book.html#maven.build.hadoop 之后搜索:Hadoop version support matrix 则可
|