Hadoop - 解决“找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster”问题
1,问题描述
最近我在 Hadoop 上执行一个 MapReduce 任务时,发现报“找不到或无法加载主类”错误,具体错误信息如下:
2024-01-26 09:45:52,652 INFO mapreduce.Job: map 0% reduce 0%
2024-01-26 09:45:52,671 INFO mapreduce.Job: Job job_1706233227329_0003 failed with state FAILED due to: Application application_1706233227329_0003 failed 2 times due to AM Container for appattempt_1706233227329_0003_000002 exited with exitCode: 1
Failing this attempt.Diagnostics: [2024-01-26 09:45:51.919]Exception from container-launch.
Container id: container_1706233227329_0003_02_000001
Exit code: 1
[2024-01-26 09:45:51.923]Container exited with a non-zero exit code 1. Error file: prelaunch.err.
Last 4096 bytes of prelaunch.err :
Last 4096 bytes of stderr :
错误: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster
[2024-01-26 09:45:51.924]Container exited with a non-zero exit code 1. Error file: prelaunch.err.
Last 4096 bytes of prelaunch.err :
Last 4096 bytes of stderr :
错误: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster

2,解决办法
(1)执行如下命令查看 hadoop 的 classpath:
hadoop classpath

(2)修改 hadoop 的 yarn-site.xml 配置文件(无论主节点还是从节点都要修改):
vi $HADOOP_HOME/etc/hadoop/yarn-site.xml
(3)增加一个 yarn.application.classpath 配置项,其值就是前面我们查询到的 hadoop 的 classpath:
<property> <name>yarn.application.classpath</name> <value>/usr/local/hadoop/etc/hadoop:/usr/local/hadoop/share/hadoop/common/lib/*:/usr/local/hadoop/share/hadoop/common/*:/usr/local/hadoop/share/hadoop/hdfs:/usr/local/hadoop/share/hadoop/hdfs/lib/*:/usr/local/hadoop/share/hadoop/hdfs/*:/usr/local/hadoop/share/hadoop/mapreduce/*:/usr/local/hadoop/share/hadoop/yarn:/usr/local/hadoop/share/hadoop/yarn/lib/*:/usr/local/hadoop/share/hadoop/yarn/*</value> </property>
(4)最后在修改好集群的配置后,需要重启 Hadoop 集群,这样配置才能生效。
cd $HADOOP_HOME sbin/stop-all.sh sbin/start-all.sh