我有一个Mesos集群设置 - 我已证实主人可以看到奴隶 - 但是当我尝试要运行Hadoop作业,所有任务都处于状态为“丢失”状态。同样的错误出现在所有从属stderr日志中:Mesos上的Hadoop失败,出现“无法找到或加载主类org.apache.hadoop.mapred.MesosExecutor”
Error: Could not find or load main class org.apache.hadoop.mapred.MesosExecutor
并且这是stderr日志中的唯一行。
按照有关http://mesosphere.io/learn/run-hadoop-on-mesos/的说明,我在HDFS上放置了一个修改后的Hadoop发行版,每个从站都可以访问它。 在Hadoop发行版的lib
目录中,我添加了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-slave正在下载,解包并尝试运行Hadoop任务跟踪器,因此我想可以通过mesos-slave设置任何CLASSPATH
。
在从站日志的标准输出中打印环境。有一个空的MESOS_HADOOP_HOME
。这应该设置成什么?如果应该将其设置为下载的Hadoop发行版,则无法预先设置它,因为Hadoop发行版每次都会下载到新的位置。
如果相关事件(可能是某些权限问题),当尝试通过主UI浏览从属日志时,出现错误Error browsing path: ...
。 手动运行mesos-slave的用户可以浏览到正确的目录。