前提是HBase-0.90.4與Hadoop-0.20.203.0apache
如下兩行紅字能夠解決HBase與Hadoop的鏈接問題(鏈接須要一致性的版本)app
最近打算試試Hbase,Hadoop是前幾天已經裝好的,三臺虛擬機(機房老師看到說:「你還真敢玩」)oop
hadoop 版本0.20.203.0.net
hbase版本0.90.4hadoop
hbase按照網上文檔配置完成之後老是出現(master的log文件裏面)文檔
java.io.IOException: Call to <host:port> failed on local exceptionget
不少人說是版本問題,
個人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中寫道:io
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 出現,此問題搞定。內牛滿面
************************************************************分割線**************************************************
貌似,第一行紅字,能夠解決匹配問題,但缺乏一個包,因此再補充一個包