最近打算试试Hbase,Hadoop是前几天已经装好的,三台虚拟机(机房老师看到说:“你还真敢玩”)
hadoop 版本0.20.203.0
hbase版本0.90.4
hbase按照网上文档配置完成以后总是出现(master的log文件里面)
java.io.IOException: Call to <host:port> failed on local exception
很多人说是版本问题,
我的hadoop版本是0.20.203.0,网上说版本问题多是0.21 hadoop,0.20的出问题的不多,
有人还说说是因为HIVE_HOME 下的hbase jar包和当前hbase的版本不符引起的(这比较扯,我的hive完全没有运行,两者肯定没有关系),
后来把hbase_home/lib(启动的时候会加载里面所有jar) 下的hadoop-core-0.20-append-r1056497.jar rm 掉,再cp hadoop_home下的hadoop-core-0.20.203.0.jar到lib中,
满心期待的start-hbase.sh,还是没启动起来,再次失望了(我这看国足的人,失望是常事,没什么!!),这时候开始怀疑:难道不是网上所说的版本问题?
开始继续搜索,无果,全都说是版本问题,静下来认真看看hbase的master log吧,log中写道:
2011-08-31 18:15:20,351 FATAL org.apache.hadoop.hbase.master.HMaster: Unhandled exception. Starting shutdown.
java.lang.NoClassDefFoundError: org/apache/commons/configuration/Configuration
现在NoClassDefFoundError,缺少 org/apache/commons/configuration/Configuration 果断给他加一个commons-configuration包试试,
从hadoop_home/lib下面cp一个commons-configuration-1.6.jar到hbase_home/lib下,
回忆刚才rm掉的包是 hadoop-core-0.20-append-r1056497.jar.难道它append org/apache/commons/configuration/Configuration 在包里面了,查看一下,并没有多余的类,也就是说即使版本没问题同样会有NoClassDefFoundError,
再次start-hbase.sh,jps一下,HMaster 出现,此问题搞定。