按照hadoop 2.5.2文檔學習,在執行命令
bin/hdfs namenode -format
時,老是報錯:
java.lang.NoClassDefFoundError: namecode
到網上搜了很多解決方法,有說修改
etc/hadoop/hadoop-env.sh增加
export HADOOP_COMMON_HOME=/root/test/hadoop-2.5.2
export HADOOP_PREFIX=/root/test/hadoop-2.5.2
等,試了,仍然報上面的錯誤。
後來突然想到JAVA環境變量,輸入命令
echo $CLASSPATH
發現輸出居然是:
.:/usr/local/java/jdk/jdk1.6.0_23/lib.tools.jar
注意看lib.tools.jar,明顯錯誤,還有。少了dt.jar,肯定會報找不到類錯誤。
修改/etc/profile文件,如下:
JAVA_HOME=/usr/local/java/jdk/jdk1.6.0_23
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
建議大家在已經安裝好的JDK的linux系統上學習Hadoop時,先檢查下JDK環境變量是否正確。因爲項目中有些人粗心大意,做事情不徹底,配錯了環境變量,然後導致別人在上面運行JAVA項目時出現莫名奇妙的錯誤,希望不要被坑了。