关于EMR的Oozie - 任务在PREP状态下永远挂起

时间:2014-04-18 23:24:10

标签: java hadoop hive elastic-map-reduce oozie

我使用3.0.4 AMI(Hadoop 2.2.0)在Elastic Mapreduce上运行Oozie 4.0.1。我已经从源代码构建了Oozie,并且所有内容都安装并且似乎正常工作,直到安排Hive作业。也就是说,我可以使用&#o; oozie'来连接到Web控制台,提交和终止作业。但是......我发现任务(我已经尝试过#34; Hive"和#34; Shell"到目前为止)进入PREP状态(根据Oozie网站 - 控制台)但从未真正开始。

我已经尝试过协调员(cron)工作和基本工作流程工作,并且在任何一种情况下都获得了相同的行为。它将进入hive任务节点或shell任务节点,然后挂起。

对于基本工作流任务,这里是job.properties的样子:

nameNode=hdfs://ip-redacted.ec2.internal:9000                                                                                                                                                              
jobTracker=ip-redacted.ec2.internal:9026

queueName=default
examplesRoot=examples

oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/apps/shell

,workflow.xml如下所示:

<workflow-app xmlns="uri:oozie:workflow:0.4" name="shell-wf">
    <start to="shell-node"/>
    <action name="shell-node">
        <shell xmlns="uri:oozie:shell-action:0.2">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <configuration>
                <property>
                    <name>mapred.job.queue.name</name>
                    <value>${queueName}</value>
                </property>
            </configuration>
            <exec>echo</exec>
            <argument>my_output=Hello Oozie</argument>
            <capture-output/>
        </shell>
        <ok to="check-output"/>
        <error to="fail"/>
    </action>
    <decision name="check-output">
        <switch>
            <case to="end">
                ${wf:actionData('shell-node')['my_output'] eq 'Hello Oozie'}
            </case>
            <default to="fail-output"/>
        </switch>
    </decision>
    <kill name="fail">
        <message>Shell action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <kill name="fail-output">
        <message>Incorrect output, expected [Hello Oozie] but was [${wf:actionData('shell-node')['my_output']}]</message>
    </kill>
    <end name="end"/>
</workflow-app>

我没有在oozie.log文件中看到任何看起来特别有罪的消息。

非常感谢任何想法或建议。

2 个答案:

答案 0 :(得分:0)

当节点中没有足够的空闲插槽时,Oozie调度程序只会等待空闲插槽。检查this以获取更多详细信息以及如何增加每个节点的插槽数。

根据OP中提供的信息,这可能是也可能不是解决方案。

答案 1 :(得分:0)

协调员将在未来的开始时间处于PREP状态,请阅读有关协调员状态here的更多信息。

如果您使用协调员 - 可以添加协调器xml文件吗?

此外,如果您可以粘贴与卡住的操作相关的日志

,将会很有帮助