我正在尝试用Hadoop2.5.2在Mesos上运行一个简单的WordCount
示例。我已经成功地设置了HDFS(实际上在这背后设置了一个YARN,它运行得很好)。Mesos master正在运行,并连接了4个slave。Mesos的Hadoop库为0.0.8。
Hadoop2.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启动器.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/memeso-fetcher">
dbpc42:I120200:03:12.140894 11226 containerizer.cpp:946]正在销毁集装箱"c10c2d2b-bf4b-469b-97a2-60c9720773b4">
dbpc42:E1202 00:03:12.14131511229 slave.cpp:2787]容器"c10c2d2b-bf4b-469b-97a2-60c9720773b4"用于框架的执行器'executor_Task_Tracker_93'"20141201-225046-698725789-5050-19765-00003"启动失败:未能获取容器"c10c2d2b-bf4b-469b-97a2-60c9720773b4"的URI:退出状态256
dbpc42:I1202 00:03:12.242033 11231集装箱箱.cpp:117]容器"c10c2d2b-bf4b-469b-97a2-60c9720773b4"的执行程序具有已退出dbpc42:I1202 00:03:12.243896 11225 slave.cpp:2898]执行程序框架的'executor_Task_Tracker_93'20141201-225046-698725789-5050-19765-00003退出,状态为1
作业跟踪器运行良好,使用hadoop jar
命令,作业停滞在映射0%reduce0%。在介观集群信息中,TASKS_LOST
计数器一直向上,直到我终止作业。Mesos和JobTracker以root身份运行,作业以用户hdfs
身份运行。
这个URI问题到底是怎么回事?
谢谢你的帮助或暗示!
(如果需要,我会提供更多信息。)
更新
在主计算机运行的同一台计算机上启动从属计算机将使任务进入暂存状态。每次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
由于(可能)无法获取executor URI,其他4个从属服务器仍在丢失任务。
这些是在主计算机上运行的第五个从机的日志:
I1202 16:17:57.434345 1405 containerizer.cpp:571]正在获取的URI容器'5f3312b-00eb-4e05-9dcc-30f16f5ee44'使用命令'/opt/mesos-0.21.0/build/src/memeso-fetcher'I1202 16:18:08.6207081412 slave.cpp:2840]监视执行器'executor_Task_Tracker_445'集装箱中框架"20141201-225046-698725789-5050-19765-0012"的'5f3123b-00eb-4e05-9dcc-30f16f5ee44'I1202 16:18:09.0221902 1407containerizer.cpp:1117]容器的执行程序'5f3312b-00eb-4e05-9dcc-30f16f5ee44'已退出I120216:18:09.022964 1407 containerizer.cpp:946]销毁集装箱'5f3123b-00eb-4e05-9dcc-30f16f5ee44'W1202 16:18:11.369912 1407containerizer.cpp:888]正在跳过容器的资源统计信息5f333123b-00eb-4e05-9dcc-30f16f5ee44原因:无法获取使用情况:否过程在11093 W1202 16:18:11.369971 1407找到containerizer.cpp:888]正在跳过容器的资源统计信息5f333123b-00eb-4e05-9dcc-30f16f5ee44原因:无法获取使用情况:否在11093 I1202 16:18:11.399648 1412 slave.cpp:2898]找到进程框架的执行器"Executor_Task_Tracker_445"20141201-225046-698725789-5050-19765-0012退出,状态为1 I120216:18:11.401949 1412 slave.cpp:2215]处理状态更新TASK_LOST任务task_Tracker_445的UUID:959709c2-5546-41fd-9af3-09f024bb6354框架20141201-225046-698725789-5050-19765-0012,来自@0.0.0.0:0W1202 16:18:11.402245 1409 containerizer.cpp:852]忽略的更新未知容器:5f3312b-00eb-4e05-9dcc-30f16f5ee44 I120216:18:114.03017 1410 status_update_manager.cpp:317]收到状态更新任务的TASK_LOST(UUID:959709c2-5546-41fd-9af3-09f024bb6354)框架的Task_Tracker_44520141201-225046-698725789-5050-19765-0012 I1202:16:14.033437 1406slave.cpp:2458]转发更新TASK_LOST(UUID:959709c2-5546-41fd-9af3-09f024bb6354)的任务task_Tracker_445框架20141201-225046-698725789-5050-19765-0012至master@157.181.165.41:5050 I1202 16:18:11.448752 1409status_update_manager.cpp:389]收到状态更新确认任务task_Tracker_445的UUID:959709c2-5546-41fd-9af3-09f024bb6354框架20141201-225046-698725789-5050-19765-0012 I120216:18:11.4449354 1408 slave.cpp:3007]正在清理执行器框架的'executor_Task_Tracker_445'2014 1201-225046-698725789-5050-19765-0012 I1202:16:1:449707 1405gc.cpp:56]调度'/tmp/mesos/slaves/2011201-225046-698721789-5050-19765-S4/frameworks/20141201-2250456-98721789-50 50-19765-0012/executers/executor_Task_Tracker_445/runs/5f3123b-00eb-4e05-9dcc-30f16f5ee44'对于将来的gc 6.99999479755852I1202 16:18:11.450034 1409gc.cpp:56]调度'/tmp/meso/slaves/20141201-225046-698725789-5050-19765-S4/frameworks/20141201-22 5046-6987725789-5050-19765-0012/executers/executor_Task_Tracker_445'用于将来的gc 6.9999947929037天I1202 16:18:11.450147 1408slave.cpp:3084]正在清理框架2014 1201-225046-698725789-5050-19765-0012 I1202:16:14.50213 1406status_update_manager.cpp:279]正在关闭的状态更新流框架20141201-225046-698725789-5050-19765-0012 I120216:18:11.450381 1412 gc.cpp:56]调度'/tmp/meso/slavens/20141201-225046-698721789-5050-19765-S4/frameworks/20141201-22 5046-698725789-5050-19765-0012'对于将来的gc 6.99999478812444天I1202 16:18:12.441505 1405slave.cpp:1083]已为框架分配任务task_Tracker_4722014 1201-225046-698725789-5050-19765-0012 I1202:12:12.442337 1405gc.cpp:84]计划外'/tmp/meso/slavens/20141201-225046-698721789-5050-19765-S4/frameworks/20141201-22 5046-698725789-5050-19765-0012'from gc I1202 16:18:12.442617 1405 slave.cpp:1193]启动任务框架的Task_Tracker_4722014 1201-225046-698725789-5050-19765-0012 I1202:12:12.44263 1405slave.cpp:397]正在启动的executor executor_Task_Tracker_472framework 20141201-225046-698725789-5050-19765-0012在工作目录中'/tmp/mesos/slavens/20141201-225046-698721789-5050-19765-S4/frameworks/20141201-22 5046-698725789-5050-19765-0012/executors/executor_Task_Tracker_472/runs/2310c642-02bf-401b-954c-876c88675c31'I1202 16:18:12.444756 1405 slave.cpp:1316]排队任务框架的executor executor_Task_Tracker_472的'Task_Tracger_472''20141201-225046-698725789-5050-19765-0012 I1202:12:12.44793 1406containerzer.cpp:424]正在启动容器'2310c642-02bf-401b-954c-876c88675c31'用于遗嘱执行人框架的'executor_Task_Tracker_472''20141201-225046-698725789-5050-19765-0012'I1202:12:12.4474341406启动器.cpp:137]容器的pid为"11549"的分叉子级'2310c642-02bf-401b-954c-876c88675c31'I1202 16:18:12.448652 1406containerzer.cpp:571]正在获取容器的URI使用命令'2310c642-02bf-401b-954c-876c88675c31''/opt/mesos-0.21.0/build/src/memeso-fetcher'
检查executor日志(/tmp/mesos/slaves/...
中的stderr
),发现未设置JAVA_HOME
,因此hadoop dfs
命令无法运行以获取executor。URI完美,未设置JAVA_HOME
。此外,在启动从属设备时,我必须设置HADOOP_HOME
。
看起来Mesos从程序无法获取其中一个URI,很可能是执行程序本身。
您是否按照mapred.Mesos.executer.uri的规定,将修改后的Hadoop on Mesos发行版(包括Hadoop-Mesos-0.0.8.jar)上传到hdfs://*.*.*.*:9000/hadoop-2.5.0-cdh5.2.0.tgz
?它可以从奴隶那里访问吗?