【问题标题】:Not able to set mapred.job.queue.name in Oozie java action无法在 Oozie java 操作中设置 mapred.job.queue.name
【发布时间】:2015-11-06 07:42:59
【问题描述】:

我有一个运行关键作业的应用程序。我正在尝试配置 Oozie 以使用 java 操作运行此作业。我的操作如下所示,

    <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 只是不使用此属性。

请注意,我正在运行紧缩作业,它们只是内部 map reduce 作业。

【问题讨论】:

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


    【解决方案1】:

    当一个 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

    【讨论】:

    • 这很令人惊讶 - 这确实应该有效。我想你得到和以前一样的错误?我以前从未删除过default 队列,但是如果您设置了上述属性,那应该没关系。
    • 是的,我遇到了和以前一样的错误。队列“默认”不存在
    猜你喜欢
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 2019-08-21
    相关资源
    最近更新 更多