mesos上的hadoop失败,原因是“找不到或加载主类org.apache.hadoop.mapred.mesosexecutor”

w6mmgewl  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(422)

我有一个mesos集群设置——我已经验证了主节点可以看到从节点——但是当我尝试运行hadoop作业时,所有任务的状态都是lost。所有从属stderr日志中都存在相同的错误:

Error: Could not find or load main class org.apache.hadoop.mapred.MesosExecutor

这是stderr日志中唯一的一行。
遵循上的说明http://mesosphere.io/learn/run-hadoop-on-mesos/,我将修改后的hadoop发行版放在hdfs上,每个从机都可以访问。在 lib hadoop发行版的目录,我已经添加了 hadoop-mesos-0.0.4.jar 以及 mesos-0.14.2.jar .
我已经验证了每个从机确实下载了这个hadoop发行版 hadoop-mesos-0.0.4.jar 包含类 org.apache.hadoop.mapred.MesosExecutor ,所以我不明白为什么找不到类。
我正在使用cdh4.4.0和mesos-0.15.0-rc4中的hadoop。
有人对可能出现的问题有什么建议吗?我知道我总是从 CLASSPATH 问题,但是,在本例中,mesos从机正在下载、解包并尝试运行hadoop tasktracker,所以我可以想象 CLASSPATH 将由mesos奴隶设置。
在从属日志的stdout中,打印环境。有一个 MESOS_HADOOP_HOME 它是空的。应该设置为什么吗?如果它应该被设置为下载的hadoop发行版,我不能预先设置它,因为hadoop发行版每次都被下载到一个新的位置。
在相关的事件中(可能存在一些权限问题),当尝试通过主ui浏览从属日志时,我会得到错误消息 Error browsing path: ... . 当我手动执行此操作时,运行mesos slave的用户可以浏览到正确的目录。

vom3gejh

vom3gejh1#

我发现了问题。 bin/hadoop 在下载的hadoop发行版中,尝试通过运行 which $0 . 但是,如果存在hadoop安装(即。 /usr/lib/hadoop ),并将在该安装的 lib 目录而不是下载的目录 lib 目录。
我不得不修改 bin/hadoop 下载的发行版找到自己的位置 dirname $0 而不是 which $0 .

相关问题