EC2 上的 Hadoop 流式传输作业处于“待处理”状态

EC2 上的 Hadoop 流式传输作业处于“待处理”状态

尝试在 Ubuntu 上使用 cloudera 发行版 CDH3 试验 Hadoop 和 Streaming。

hdfs:// 中已准备好有效数据以供处理。

用 Python 编写了小型流映射器。

当我使用以下命令启动仅映射器作业时:

hadoop jar /usr/lib/hadoop/contrib/streaming/hadoop-streaming*.jar -file   /usr/src/mystuff/mapper.py -mapper /usr/src/mystuff/mapper.py  -input /incoming/STBFlow/* -output testOP

hadoop 决定使用集群上的 66 个映射器来处理数据。在 HDFS 上创建了 testOP 目录。创建了 job_conf.xml 文件。但端口 50030 处的作业跟踪器 UI 从未显示作业脱离“待处理”状态,也没有发生任何其他事情。CPU 使用率保持为零。(作业虽然创建了)

如果我给它一个文件(而不是整个目录)作为输入,结果相同(除了 Hadoop 决定它需要 2 个映射器而不是 66 个)。

我也尝试使用“dumbo”Python 实用程序并使用它来启动作业:结果相同:永久待定。

所以我缺少一些基本的东西:有人能帮我找到我应该寻找的东西吗?集群在 Amazon EC2 上。可能是防火墙问题:在集群安全组中逐个明确启用端口。

答案1

对不起,我是个白痴。

作业永远处于“待定”状态,因为尽管集群中的 datanode 进程正在运行,但 taskTracker 进程却没有运行。

它们失败了,因为由于设置错误,它们运行的​​帐户没有对本地 mapred 缓存目录的写入权限,所以它们在启动时全部终止。因此,作业跟踪器没有节点来分配作业。

一旦纠正了这个问题,任务就可以正常运行。

相关内容