java - 无法在 Oozie java 操作中设置 mapred.job.queue.name

标签 java hadoop oozie oozie-coordinator apache-crunch

我有一个运行紧急作业的应用程序。我正在尝试配置 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 不使用此属性。

请注意,我正在运行的紧缩作业只是内部映射缩减作业。

最佳答案

当 Oozie 操作启动时,它会在 YARN 中创建一个启动器应用程序,然后启 Action 业本身。启动器可以在与操作本身不同的队列中运行,启动器运行的队列实际上是通过 oozie.launcher.mapred.job.queue.name 设置的。我怀疑发生的情况是您的启动器试图在默认情况下运行,因此 Crunch 作业本身从未真正启动。

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

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

顺便说一句,mapred.job.queue.name已被弃用 - 使用mapreduce.job.queuename

关于java - 无法在 Oozie java 操作中设置 mapred.job.queue.name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33561773/

相关文章:

java - Java中的十六进制转十进制

hadoop - 在字符串中搜索特定文本 - Hive

hadoop - 如何在 pig latin 中的 foreach 中使用过滤器运算符

hadoop - hadoop 2中的HDFS是否具有辅助名称节点?

hadoop - 在CDH5.01版本中找不到oozie-site.xml

java - 使用哨兵值计算平均值

java - Dropwizard 错误 405 HTTP 方法 POST Json

hadoop - 子工作流失败时如何中止oozie工作流?

hadoop - 通过 Oozie 运行 Spark 作业

java - 其他节点未收到帧 [UNETSTACK]