情景:mapreduce任务出现如下错误
    错误:
    Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster
    全过程:

    1. [hadoop@hadoop102 ~]$ hadoop jar wc.jar com.muzhi.mapreduce.wordcount1.WordCountDriver /input /output
    2. 2021-08-21 10:53:30,543 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.220.103:8032
    3. 2021-08-21 10:53:31,430 WARN mapreduce.JobResourceUploader: Hadoop command-line option parsing not performed. Implement the Tool interface and execute your application with ToolRunner to remedy this.
    4. 2021-08-21 10:53:31,461 INFO mapreduce.JobResourceUploader: Disabling Erasure Coding for path: /tmp/hadoop-yarn/staging/hadoop/.staging/job_1629442479906_0002
    5. 2021-08-21 10:53:31,614 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
    6. 2021-08-21 10:53:31,823 INFO input.FileInputFormat: Total input files to process : 1
    7. 2021-08-21 10:53:31,878 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
    8. 2021-08-21 10:53:31,927 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
    9. 2021-08-21 10:53:31,961 INFO mapreduce.JobSubmitter: number of splits:1
    10. 2021-08-21 10:53:32,201 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
    11. 2021-08-21 10:53:32,272 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1629442479906_0002
    12. 2021-08-21 10:53:32,272 INFO mapreduce.JobSubmitter: Executing with tokens: []
    13. 2021-08-21 10:53:32,620 INFO conf.Configuration: resource-types.xml not found
    14. 2021-08-21 10:53:32,620 INFO resource.ResourceUtils: Unable to find 'resource-types.xml'.
    15. 2021-08-21 10:53:32,712 INFO impl.YarnClientImpl: Submitted application application_1629442479906_0002
    16. 2021-08-21 10:53:32,774 INFO mapreduce.Job: The url to track the job: http://hadoop103:8088/proxy/application_1629442479906_0002/
    17. 2021-08-21 10:53:32,777 INFO mapreduce.Job: Running job: job_1629442479906_0002
    18. 2021-08-21 10:53:36,844 INFO mapreduce.Job: Job job_1629442479906_0002 running in uber mode : false
    19. 2021-08-21 10:53:36,847 INFO mapreduce.Job: map 0% reduce 0%
    20. 2021-08-21 10:53:36,878 INFO mapreduce.Job: Job job_1629442479906_0002 failed with state FAILED due to: Application application_1629442479906_0002 failed 2 times due to AM Container for appattempt_1629442479906_0002_000002 exited with exitCode: 1
    21. Failing this attempt.Diagnostics: [2021-08-21 10:53:35.878]Exception from container-launch.
    22. Container id: container_1629442479906_0002_02_000001
    23. Exit code: 1
    24. [2021-08-21 10:53:35.923]Container exited with a non-zero exit code 1. Error file: prelaunch.err.
    25. Last 4096 bytes of prelaunch.err :
    26. Last 4096 bytes of stderr :
    27. Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster
    28. Please check whether your etc/hadoop/mapred-site.xml contains the below configuration:
    29. <property>
    30. <name>yarn.app.mapreduce.am.env</name>
    31. <value>HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}</value>
    32. </property>
    33. <property>
    34. <name>mapreduce.map.env</name>
    35. <value>HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}</value>
    36. </property>
    37. <property>
    38. <name>mapreduce.reduce.env</name>
    39. <value>HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}</value>
    40. </property>
    41. [2021-08-21 10:53:35.924]Container exited with a non-zero exit code 1. Error file: prelaunch.err.
    42. Last 4096 bytes of prelaunch.err :
    43. Last 4096 bytes of stderr :
    44. Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster
    45. Please check whether your etc/hadoop/mapred-site.xml contains the below configuration:
    46. <property>
    47. <name>yarn.app.mapreduce.am.env</name>
    48. <value>HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}</value>
    49. </property>
    50. <property>
    51. <name>mapreduce.map.env</name>
    52. <value>HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}</value>
    53. </property>
    54. <property>
    55. <name>mapreduce.reduce.env</name>
    56. <value>HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}</value>
    57. </property>
    58. For more detailed output, check the application tracking page: http://hadoop103:8088/cluster/app/application_1629442479906_0002 Then click on links to logs of each attempt.
    59. . Failing the application.
    60. 2021-08-21 10:53:36,929 INFO mapreduce.Job: Counters: 0
    61. [hadoop@hadoop102 ~]$

    解决办法:
    1.在 mapred-site.xml 中如下内容

    1. <property>
    2. <name>mapreduce.application.classpath</name>
    3. <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
    4. </property>
    5. <property>
    6. <name>yarn.app.mapreduce.am.env</name>
    7. <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    8. </property>
    9. <property>
    10. <name>mapreduce.map.env</name>
    11. <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    12. </property>
    13. <property>
    14. <name>mapreduce.reduce.env</name>
    15. <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    16. </property>

    2.还需在 mapred-site.xml 继续添加 yarn.application.classpath
    查看:

    1. [hadoop@hadoop102 hadoop-3.1.3]$ hadoop classpath
    2. /opt/module/hadoop-3.1.3/etc/hadoop:/opt/module/hadoop-3.1.3/share/hadoop/common/lib/*:/opt/module/hadoop-3.1.3/share/hadoop/common/*:/opt/module/hadoop-3.1.3/share/hadoop/hdfs:/opt/module/hadoop-3.1.3/share/hadoop/hdfs/lib/*:/opt/module/hadoop-3.1.3/share/hadoop/hdfs/*:/opt/module/hadoop-3.1.3/share/hadoop/mapreduce/lib/*:/opt/module/hadoop-3.1.3/share/hadoop/mapreduce/*:/opt/module/hadoop-3.1.3/share/hadoop/yarn:/opt/module/hadoop-3.1.3/share/hadoop/yarn/lib/*:/opt/module/hadoop-3.1.3/share/hadoop/yarn/*

    把“:”改成“,”
    结果如下

    1. <property>
    2. <name>yarn.application.classpath</name>
    3. <value>/opt/module/hadoop-3.1.3/etc/hadoop,
    4. /opt/module/hadoop-3.1.3/share/hadoop/common/lib/*,
    5. /opt/module/hadoop-3.1.3/share/hadoop/common/*,
    6. /opt/module/hadoop-3.1.3/share/hadoop/hdfs,
    7. /opt/module/hadoop-3.1.3/share/hadoop/hdfs/lib/*,
    8. /opt/module/hadoop-3.1.3/share/hadoop/hdfs/*,
    9. /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/lib/*,
    10. /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/*,
    11. /opt/module/hadoop-3.1.3/share/hadoop/yarn,
    12. /opt/module/hadoop-3.1.3/share/hadoop/yarn/lib/*,
    13. /opt/module/hadoop-3.1.3/share/hadoop/yarn/*
    14. </value>
    15. </property>

    总共需要添加的内容

    1. <!--用于集群跑mr任务-->
    2. <property>
    3. <name>mapreduce.application.classpath</name>
    4. <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
    5. </property>
    6. <property>
    7. <name>yarn.app.mapreduce.am.env</name>
    8. <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    9. </property>
    10. <property>
    11. <name>mapreduce.map.env</name>
    12. <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    13. </property>
    14. <property>
    15. <name>mapreduce.reduce.env</name>
    16. <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    17. </property>
    18. <property>
    19. <name>yarn.application.classpath</name>
    20. <value>/opt/module/hadoop-3.1.3/etc/hadoop,
    21. /opt/module/hadoop-3.1.3/share/hadoop/common/lib/*,
    22. /opt/module/hadoop-3.1.3/share/hadoop/common/*,
    23. /opt/module/hadoop-3.1.3/share/hadoop/hdfs,
    24. /opt/module/hadoop-3.1.3/share/hadoop/hdfs/lib/*,
    25. /opt/module/hadoop-3.1.3/share/hadoop/hdfs/*,
    26. /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/lib/*,
    27. /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/*,
    28. /opt/module/hadoop-3.1.3/share/hadoop/yarn,
    29. /opt/module/hadoop-3.1.3/share/hadoop/yarn/lib/*,
    30. /opt/module/hadoop-3.1.3/share/hadoop/yarn/*
    31. </value>
    32. </property>