我有一个运行关键作业的应用程序。我正在尝试将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中创建一个启动器应用程序,然后启动作业本身。启动器可以在与动作本身不同的队列中运行,并且启动器运行的队列实际上是用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
。