Ubuntu环境下运行Hadoop的TestDFSIO出现java.lang.NoClassDefFoundError错误求助
解决Hadoop TestDFSIO运行时
junit/framework/TestCase找不到的问题 这个错误核心原因是运行测试jar包时缺少JUnit依赖,hadoop-mapreduce-client-jobclient-*-tests.jar依赖JUnit库,但默认Hadoop的classpath并未包含该依赖。另外你的命令漏了指定TestDFSIO主类,这也是需要修正的关键点。
解决步骤:
1. 确认JUnit jar包位置
在Hadoop安装目录的common lib目录下查找JUnit jar文件:
ls /usr/local/hadoop/share/hadoop/common/lib/junit-*.jar
通常会输出类似junit-4.13.2.jar的结果,记下该文件的完整路径。
2. 临时解决:运行命令时手动引入依赖
修改原命令,添加-libjars参数指定JUnit路径,同时补上TestDFSIO主类:
yarn jar /usr/local/hadoop/hadoop-mapreduce-client-jobclient-3.3.5-tests.jar -libjars /usr/local/hadoop/share/hadoop/common/lib/junit-4.13.2.jar TestDFSIO -write -nrFiles 10 -fileSize 1000
注意:将junit-4.13.2.jar替换为你实际查到的版本文件名。
3. 永久解决:修改Hadoop classpath配置
编辑/usr/local/hadoop/etc/hadoop/hadoop-env.sh文件,添加以下配置:
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/usr/local/hadoop/share/hadoop/common/lib/junit-*.jar
保存配置后重启Hadoop集群,之后直接运行带主类的命令即可:
yarn jar /usr/local/hadoop/hadoop-mapreduce-client-jobclient-3.3.5-tests.jar TestDFSIO -write -nrFiles 10 -fileSize 1000
内容的提问来源于stack exchange,提问作者Asrul Paelori Ahmad
相关产品推荐
相关产品推荐

