java - EMR 上的 Oozie - 任务永远卡在 PREP 状态

标签 java hadoop hive elastic-map-reduce oozie

我使用 3.0.4 AMI (Hadoop 2.2.0) 在 Elastic Mapreduce 上运行 Oozie 4.0.1。我已经从源代码构建了 Oozie,一切都已安装并且似乎正常工作,直到安排 Hive 作业为止。也就是说,我可以连接到 Web 控制台,使用“oozie”命令等提交和终止作业。但是......我发现任务(到目前为止我已经尝试过“Hive”和“Shell”)进入 PREP状态(根据 Oozie Web 控制台)但从未真正开始。

我已经尝试了协调器 (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 文件中没有看到任何看起来特别有罪的消息。

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

最佳答案

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

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

关于java - EMR 上的 Oozie - 任务永远卡在 PREP 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23163876/

相关文章:

java - 使用 hadoop 自定义字数统计

hadoop - 如何在Pig脚本中注册类路径文件?

java - Hadoop YARN 简单 yarn 应用

hadoop - HiveQL 联合所有

hadoop - Hive CLI或Beeline>是否可以通过 “--hiveconf”覆盖Hadoop属性

java - Spring 事务传播问题

java - 如何为每个客户创建唯一的文件夹

java - ArrayList.filter 不起作用

java - Spring Security for Active Directory 搜索为 'userPrincipalName'——有办法改变这个吗?

hadoop - 如何在将 hive 作业提交到 dataproc 集群时执行 gcp 存储桶中的 hive 查询列表(在我的例子中为 gs :/hive/hive. sql")