gpt4 book ai didi

hadoop distcp 引发无法找到或加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster

转载 作者:可可西里 更新时间:2023-11-01 16:22:33 25 4
gpt4 key购买 nike

当我运行 distcp 将数据从 s3 移动到我的本地 hdfs 时,我在启动 map reduce 作业以复制数据期间遇到此异常:

Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster

我检查了所有可能的在线文章。我的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 的那个那是包含 org.apache.hadoop.mapreduce.v2.app.MRAppMaster 的 jar
有什么建议吗??

最佳答案

我遇到了同样的问题,花了几天时间解决了。有一个丢失的问题

<property>
<name>mapreduce.application.classpath</name>
<value>
$HADOOP_MAPRED_HOME/*,
$HADOOP_MAPRED_HOME/lib/*,
$MR2_CLASSPATH,
$CDH_MR2_HOME
</value>
</property>

在 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

我还注意到错误:无法在作业执行日志中找到或加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster

要弄清楚,您可以转到 NodeManager 主机上的日志目录,该目录由 yarn 配置中的 hadoop.log.dir 选项定义(在我的例子中是 /var/log/cloudera_logs/hadoop-yarn/)。在那里您将看到文件 hadoop-cmf-yarn-NODEMANAGER*。它可以帮助您跟踪所有工作流程,包括运行脚本和 ./container 目录中的清理过程。这里最好注意脚本default_container_executor.sh。该脚本通常会在开始工作之前导出所有系统变量。在我的例子中,与 $HADOOP_MAPRED_* 相关的所有内容都丢失了。

然后我开始查看我的服务器配置选项以找到 ma​​preduce.application.classpath 选项,它已经指向了正确的变量。由于某些原因,它们在作业运行时不适用。

在此之后,我尝试在客户端将相同的变量添加到 ma​​pred-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 的默认值的环境变量。”,但我不确定。

关于hadoop distcp 引发无法找到或加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31995520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com