2013-12-18 89 views
2

我試圖在Hadoop 2上設置Hbase 0.94(分發安裝程序)。我使用命令重新編譯了支持Hadoop 2的HBase mvn -Dhadoop.profile=2.0 -DskipTests installHadoop 2.2.0上的HBase 0.94.4

我將HBase/lib中的所有hadoop - *。jars替換爲Hadoop 2.2中的相應部分。仍然我無法讓HMaster運行。發生以下錯誤

FATAL org.apache.hadoop.hbase.master.HMaster: HBase is having a problem with its Hadoop jars. You may need to recompile HBase against  Hadoop version 2.2.0 or change your hadoop jars to start properly 
java.lang.NoClassDefFoundError: org/apache/hadoop/hdfs/protocol/FSConstants$SafeModeAction 
     at org.apache.hadoop.hbase.util.FSUtils.waitOnSafeMode(FSUtils.java:529) 
     at org.apache.hadoop.hbase.master.MasterFileSystem.checkRootDir(MasterFileSystem.java:333) 
     at org.apache.hadoop.hbase.master.MasterFileSystem.createInitialFileSystemLayout(MasterFileSystem.java:130) 
     at org.apache.hadoop.hbase.master.MasterFileSystem.<init>(MasterFileSystem.java:115) 
     at org.apache.hadoop.hbase.master.HMaster.finishInitialization(HMaster.java:514) 
     at org.apache.hadoop.hbase.master.HMaster.run(HMaster.java:376) 
     at java.lang.Thread.run(Thread.java:619) 
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hdfs.protocol.FSConstants$SafeModeAction 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:252) 
     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) 
     ... 7 more 

如何解決此問題?

+0

您更新了lib中的Hadoop罐。你是否在類路徑中更新了相同的內容? –

+0

@GV ..我也更新了 – manthosh

回答

0

這是通過使用maven做一個乾淨的構建來解決的。下面的命令起作用

mvn clean package assembly:assembly -DskipTests -Dhadoop.profile=2.0