按照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项目时出现莫名奇妙的错误,希望不要被坑了。