【问题标题】:Hadoop 2.5.2 on Mesos 0.21.0 - Failed to fetch URIs for containerMesos 0.21.0 上的 Hadoop 2.5.2 - 无法获取容器的 URI
【发布时间】:2014-12-01 21:17:12
【问题描述】:

我正在尝试使用 Hadoop 2.5.2 在 Mesos 上运行一个简单的 WordCount 示例。我已经成功设置了 HDFS(实际上在这之后设置了一个 YARN,它工作正常)。 Mesos master 正在运行并且有 4 个 slave 连接到它。 Mesos 的 Hadoop 库是 0.0.8。

Hadoop 2.5.2 的配置是 (mapred-site.xml):

<configuration>
        <property>
                <name>mapred.job.tracker</name>
                <value>*.*.*.*:9001</value>
        </property>
        <property>
                <name>mapred.job.tracker.http.address</name>
                <value>*.*.*.*:50030</value>
        </property>
        <property>
                <name>mapred.jobtracker.taskScheduler</name>
                <value>org.apache.hadoop.mapred.MesosScheduler</value>
        </property>
        <property>
                <name>mapred.mesos.taskScheduler</name>
                <value>org.apache.hadoop.mapred.JobQueueTaskScheduler</value>
        </property>
        <property>
                <name>mapred.mesos.master</name>
                <value>*.*.*.*:5050</value>
        </property>
        <property>
                <name>mapred.mesos.executor.uri</name>
                <value>hdfs://*.*.*.*:9000/hadoop-2.5.0-cdh5.2.0.tgz</value>
        </property>
</configuration>

我从我的所有奴隶那里得到了以下日志(示例):

dbpc42: I1202 00:03:12.066195 11232 launcher.cpp:137] 分叉子 容器 'c10c2d2b-bf4b-469b-97a2-60c9720773b4' 的 pid 为 '18714'

dbpc42: I1202 00:03:12.068272 11232 containerizer.cpp:571] 获取 容器 'c10c2d2b-bf4b-469b-97a2-60c9720773b4' 的 URI 使用 命令'/opt/mesos-0.21.0/build/src/mesos-fetcher'

dbpc42: I1202 00:03:12.140894 11226 containerizer.cpp:946] 销毁容器 'c10c2d2b-bf4b-469b-97a2-60c9720773b4'

dbpc42: E1202 00:03:12.141315 11229 slave.cpp:2787] 容器'c10c2d2b-bf4b-469b-97a2-60c9720773b4' 对于框架的执行者'executor_Task_Tracker_93' “20141201-225046-698725789-5050-19765-0003”启动失败:未能启动 获取容器“c10c2d2b-bf4b-469b-97a2-60c9720773b4”的 URI:退出 状态 256

dbpc42: I1202 00:03:12.242033 11231 containerizer.cpp:1117] 容器'c10c2d2b-bf4b-469b-97a2-60c9720773b4'的执行器有 退出 dbpc42: I1202 00:03:12.243896 11225 slave.cpp:2898] 执行器 'executor_Task_Tracker_93' 框架 20141201-225046-698725789-5050-19765-0003 以状态 1 退出

作业跟踪器运行良好,使用 hadoop jar 命令时作业卡在 map 0% reduce 0%。在 mesos 集群信息中,TASKS_LOST 计数器一直上升,直到我终止工作。 Mesos 和 JobTracker 以 root 身份运行,作业以用户 hdfs 身份运行。

这个 URI 问题到底是怎么回事?

感谢您的帮助或提示!

(如果需要,我会提供更多信息。)

更新

在运行主机的同一台 PC 上启动从机将使任务进入暂存状态。 5,每次。

mapred-mesos.executor.uri 已从 IP 更改为 dbpc41(主 PC)。

<property>
     <name>mapred.mesos.executor.uri</name>
     <value>hdfs://dbpc41:9000/hadoop-2.5.0-cdh5.2.0.tgz</value>
</property

由于(可能)无法获取执行程序 URI,其他 4 个从属服务器仍在丢失任务。

这些是来自第 5 个从属服务器的日志,该服务器运行在主服务器所在的同一台 PC 上:

I1202 16:17:57.434345 1405 containerizer.cpp:571] 为 容器 '5f33123b-00eb-4e05-9dcc-30f16f5eee44' 使用命令 '/opt/mesos-0.21.0/build/src/mesos-fetcher' I1202 16:18:08.620708 1412 slave.cpp:2840]监控执行器'executor_Task_Tracker_445' 容器中的框架“20141201-225046-698725789-5050-19765-0012” '5f33123b-00eb-4e05-9dcc-30f16f5eee44' I1202 16:18:09.022902 1407 containerizer.cpp:1117] 容器执行器 '5f33123b-00eb-4e05-9dcc-30f16f5eee44' 已退出 I1202 16:18:09.022964 1407 containerizer.cpp:946] 销毁容器 '5f33123b-00eb-4e05-9dcc-30f16f5eee44' W1202 16:18:11.369912 1407 containerizer.cpp:888] 跳过容器的资源统计 5f33123b-00eb-4e05-9dcc-30f16f5eee44 因为:无法使用:否 进程发现于 11093 W1202 16:18:11.369971 1407 containerizer.cpp:888] 跳过容器的资源统计 5f33123b-00eb-4e05-9dcc-30f16f5eee44 因为:无法使用:否 在 11093 I1202 16:18:11.399648 1412 slave.cpp:2898 找到的进程] 框架的执行者'executor_Task_Tracker_445' 20141201-225046-698725789-5050-19765-0012 以状态 1 I1202 退出 16:18:11.401949 1412 slave.cpp:2215]处理状态更新TASK_LOST (UUID:959709c2-5546-41fd-9af3-09f024bb6354)任务Task_Tracker_445 框架 20141201-225046-698725789-5050-19765-0012 来自 @0.0.0.0:0 W1202 16:18:11.402245 1409 containerizer.cpp:852] 忽略更新 未知容器:5f33123b-00eb-4e05-9dcc-30f16f5eee44 I1202 16:18:11.403017 1410 status_update_manager.cpp:317] 收到状态 更新任务的 TASK_LOST (UUID: 959709c2-5546-41fd-9af3-09f024bb6354) 框架的Task_Tracker_445 20141201-225046-698725789-5050-19765-0012 I1202 16:18:11.403437 1406 slave.cpp:2458] 转发更新 TASK_LOST (UUID: 959709c2-5546-41fd-9af3-09f024bb6354) 用于任务 Task_Tracker_445 的 框架 20141201-225046-698725789-5050-19765-0012 至 大师@157.181.165.41:5050 I1202 16:18:11.448752 1409 status_update_manager.cpp:389] 收到状态更新确认 (UUID:959709c2-5546-41fd-9af3-09f024bb6354)任务Task_Tracker_445 框架 20141201-225046-698725789-5050-19765-0012 I1202 16:18:11.449354 1408 slave.cpp:3007] 清理执行器 'executor_Task_Tracker_445' 框架 20141201-225046-698725789-5050-19765-0012 I1202 16:18:11.449707 1405 gc.cpp:56] 调度 '/tmp/mesos/slaves/20141201-225046-698725789-5050-19765-S4/frameworks/20141201-225046-698725789-5050-19765-0012/executors/executor_Task_Tracker_445/runs/5f33123b-00eb-4e05-9dcc-30f16f5eee44' 对于未来的 gc 6.99999479755852 天 I1202 16:18:11.450034 1409 gc.cpp:56] 调度 '/tmp/mesos/slaves/20141201-225046-698725789-5050-19765-S4/frameworks/20141201-225046-698725789-5050-19765-0012/executors/executor_Task_Tracker_445' for gc 6.9999947929037days in the future I1202 16:18: 11.450147 1408 slave.cpp:3084] 清理框架 20141201-225046-698725789-5050-19765-0012 I1202 16:18:11.450213 1406 status_update_manager.cpp:279] 关闭状态更新流 框架 20141201-225046-698725789-5050-19765-0012 I1202 16:18:11.450381 1412 gc.cpp:56] 调度 '/tmp/mesos/slaves/20141201-225046-698725789-5050-19765-S4/frameworks/20141201-225046-698725789-5050-19765-0012' 对于未来的 gc 6.99999478812444days I1202 16:18:12.441505 1405 slave.cpp:1083] 为框架分配了任务 Task_Tracker_472 20141201-225046-698725789-5050-19765-0012 I1202 16:18:12.442337 1405 gc.cpp:84] 取消调度 '/tmp/mesos/slaves/20141201-225046-698725789-5050-19765-S4/frameworks/20141201-225046-698725789-5050-19765-0012' 来自 gc I1202 16:18:12.442617 1405 slave.cpp:1193] 启动任务 Task_Tracker_472 用于框架 20141201-225046-698725789-5050-19765-0012 I1202 16:18:12.444263 1405 slave.cpp:3997] 启动执行器 executor_Task_Tracker_472 工作目录中的框架 20141201-225046-698725789-5050-19765-0012 '/tmp/mesos/slaves/20141201-225046-698725789-5050-19765-S4/frameworks/20141201-225046-698725789-5050-19765-0012/executors/executor_Task_Tracker_472/runs/2310c642-02bf-401b-954c-876c88675c31' I1202 16:18:12.444756 1405 slave.cpp:1316] 排队任务 'Task_Tracker_472' 用于框架的执行器 executor_Task_Tracker_472 '20141201-225046-698725789-5050-19765-0012 I1202 16:18:12.444793 1406 containerizer.cpp:424] 启动容器 '2310c642-02bf-401b-954c-876c88675c31' 用于执行者 'executor_Task_Tracker_472' 框架 '20141201-225046-698725789-5050-19765-0012' I1202 16:18:12.447434 1406 launcher.cpp:137] 容器的 pid 为“11549”的分叉子项 '2310c642-02bf-401b-954c-876c88675c31' I1202 16:18:12.448652 1406 containerizer.cpp:571] 获取容器的 URI '2310c642-02bf-401b-954c-876c88675c31' 使用命令 '/opt/mesos-0.21.0/build/src/mesos-fetcher'

【问题讨论】:

  • 您使用的是什么版本的 Mesos?你使用的是什么版本的 hadoop-mesos?您是在学习特定的教程,还是只使用来自github.com/mesos/hadoop 的自述文件?
  • @Adam 我正在使用 Mesos 0.21.0 和 Hadoop 0.0.8 库。是的,我正在关注 GitHub 上的自述文件。

标签: hadoop mapreduce mesos


【解决方案1】:

检查执行器日志(/tmp/mesos/slaves/... 中的stderr)发现JAVA_HOME 未设置,因此无法运行hadoop dfs 命令来获取执行器。 URI 很完美,JAVA_HOME 没有设置。此外,我必须在启动 slave 时设置HADOOP_HOME

【讨论】:

    【解决方案2】:

    看起来 Mesos 从站无法获取其中一个 URI,可能是执行程序本身。

    您是否按照 mapred.mesos.executor.uri 的规定将修改后的 Hadoop on Mesos 发行版(包括 hadoop-mesos-0.0.8.jar)上传到 hdfs://*.*.*.*:9000/hadoop-2.5.0-cdh5.2.0.tgz?是否可以从从站访问?

    【讨论】:

    • 是的,我确实上传了它。如何正确检查从属设备的可访问性?
    • 我还尝试将 mapred.mesos.executor.uri 指定为 IP 地址和 FQDN。该文件本身由运行 JobTracker 的用户 hdfs 拥有。还尝试使用 root 运行 JobTracker。该文件获得了 777 权限。
    • 我正在从 Hadoop 版本 2.5.2 运行 HDFS。会不会有任何 HDFS 与 Mesos 0.21.0 不兼容?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多