无法在Oozie java action

时间:2015-11-06 07:43:00

标签: java hadoop oozie oozie-coordinator apache-crunch

我有一个运行紧缩工作的应用程序。我正在尝试使用java操作配置Oozie来运行此作业。我的行动如下,

    <workflow-app name="Wworkflow" xmlns="uri:oozie:workflow:0.4">
<start to="TestWw"/>
<action name="TestWw">
    <java>
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>
        <configuration>
            <property>
                <name>mapred.job.queue.name</name>
                <value>launcher</value>
            </property>
        </configuration>
        <main-class>com.test.Main</main-class>
        <java-opts>-Dmapred.output.compress=false -Dmapred.textoutputformat.separator=, -Dcrunch.disable.output.counters=true</java-opts>

    </java>
    <ok to="end"/>
    <error to="kill"/>
</action>
<kill name="kill">
    <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>

但每次我经营Oozie工作时,我的工作就会抛出

     org.apache.hadoop.ipc.RemoteException(java.io.IOException): Queue "default" does not exist

我已将队列配置为启动器,但oozie只是不使用此属性。

请注意,我正在运行紧缩工作,这只是内部地图减少工作。

1 个答案:

答案 0 :(得分:3)

当Oozie动作开始时,它会在YARN中创建一个启动器应用程序,然后启动作业本身。启动程序可以在与操作本身不同的队列中运行,启动程序运行的队列实际上设置为oozie.launcher.mapred.job.queue.name。我怀疑正在发生的事情是你的发射器试图在default中运行,所以Crunch工作本身从未实际开始。

设置此项可以解决您的问题:

<property>
       <name>oozie.launcher.mapred.job.queue.name</name>
       <value>launcher</value>
</property>

另外,mapred.job.queue.name已被弃用 - 请使用mapreduce.job.queuename