tmn*_*d91 0 hadoop amazon-s3 distcp
当我运行 distcp 将数据从 s3 移动到本地 hdfs 时,我在启动映射减少作业以复制数据期间遇到此异常:
Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster
Run Code Online (Sandbox Code Playgroud)
我检查了所有可能的在线文章。我的yarn-site.xml文件包含
<property>
<name>yarn.application.classpath</name>
<value>
$HADOOP_CONF_DIR,
$HADOOP_COMMON_HOME/*,
$HADOOP_COMMON_HOME/lib/*,
$HADOOP_HDFS_HOME/*,
$HADOOP_HDFS_HOME/lib/*,
$HADOOP_MAPRED_HOME/*,
$HADOOP_MAPRED_HOME/lib/*,
$HADOOP_YARN_HOME/*,
$HADOOP_YARN_HOME/lib/*,
$HADOOP_HOME/share/hadoop/mapreduce/,
$HADOOP_HOME/share/hadoop/mapreduce/lib/
</value>
</property>
对于集群的每个节点,我检查并设置了这些变量并指向正确的文件夹,实际上$HADOOP_HOME/share/hadoop/mapreduce/是指向hadoop-mapreduce-client-app-2.7.1.jar包含任何建议的 jar 的那个org.apache.hadoop.mapreduce.v2.app.MRAppMaster
?
我遇到了同样的问题,花了几天时间才解决。出现了缺失的问题
<property>
<name>mapreduce.application.classpath</name>
<value>
$HADOOP_MAPRED_HOME/*,
$HADOOP_MAPRED_HOME/lib/*,
$MR2_CLASSPATH,
$CDH_MR2_HOME
</value>
</property>
Run Code Online (Sandbox Code Playgroud)
在mapred-site.xml中
这是我必须经历的整个路径(以防有人必须调查类似的问题):作业运行后,我可以在客户端日志中看到如下错误:
容器启动异常:
org.apache.hadoop.util.Shell$ExitCodeException:
org.apache.hadoop.util.Shell$ExitCodeException:
at org.apache.hadoop.util.Shell.runCommand(Shell.java:505)
at org.apache.hadoop.util.Shell.run(Shell.java:418)
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:650)
at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:195)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:283)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:79)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Container exited with a non-zero exit code 1
Run Code Online (Sandbox Code Playgroud)
我还注意到错误:在作业执行日志中找不到或加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster 。
要弄清楚,您可以转到NodeManager主机上由纱线配置中的hadoop.log.dir选项定义的日志目录(在我的例子中是 /var/log/cloudera_logs/hadoop-yarn/)。在那里您将看到文件hadoop-cmf-yarn-NODEMANAGER*。它可以帮助您遵循所有工作流程,包括运行脚本以及./container目录中的清理过程。这里最好注意脚本default_container_executor.sh。该脚本通常在完成工作之前导出所有系统变量。就我而言,与$HADOOP_MAPRED_*相关的所有内容都丢失了。
然后我开始查看服务器配置选项以查找mapreduce.application.classpath选项,该选项已经指向正确的变量。由于某种原因,它们在作业运行时不适用。
之后,我尝试在客户端将相同的变量添加到mapred-site.xml并且它起作用了。
请注意,您的$HADOOP_MAPRED_HOME应指向hadoop-mapreduce-client-app-.jar的有效位置,其中打包了org.apache.hadoop.mapreduce.v2.app.MRAppMaster 。如果您不确定丢失的类属于哪个 jar,请使用 MAVEN CENTRAL 中的高级搜索。
我的猜测是它可能与yarn.nodemanager.env-whitelist选项有关。根据Cloudera“容器可以覆盖而不是使用NodeManager的默认环境变量。”,但我不确定。
| 归档时间: |
|
| 查看次数: |
7370 次 |
| 最近记录: |