oozie触发mapreduce主类

ki0zmccv  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(280)

我不想在oozie工作流xml中设置作业驱动程序配置,比如inputformat mapper类等,而是调用exampledecision.java。例如,decision main方法将负责作业设置和配置。怎么做?
oozie\u cook\u书中的ii java主动作决策节点说明是否等于 java ExampleDecision <strings...> 并将作业作为普通java作业提交
或者
会等于 Hadoop jar SomeJar.ExampleDecision <strings...>

xtfmy6hx

xtfmy6hx1#

是的,您可以很好地使用java创建map/reduce代码,在该代码中,main类像往常一样负责配置作业和作业调度。
那你可以用 java oozie工作流中的action标记来调用jar中的主类。
在这里,主类将分派map/reduce作业,这与使用 map-reduce 标签。
你必须强调的主要考虑是你应该只使用 job.waitForCompletion(true) 声明在主类中分派作业。
这样做的重要原因是在java操作节点上保持oozie的执行,直到主类调度的map/reduce作业完成。
edit:-
打电话的区别 hadoop jar 以及 java jarhadoop 命令会在mapreduce作业执行之前安排一些env属性,如java\u home、hadoop\u home、hadoop\u opts等。大多数情况下,您可能已经在环境变量中定义了这些属性,在使用 java 命令。
当你使用 java 动作使用oozie工作流调用mapreduce作业时,oozie将无法收集有关已调度mapreduce作业的统计信息、计数器,因为实际的mr作业将从为该作业调度的容器派生 java action .
所以 Java action node 由oozie执行的任务将在一个单独的容器(maptask)中运行,该容器只是准备作业并等待作业完成的驱动程序类,然后oozie工作流也将等待获取 java action MapTask 完整的。您将能够从 Oozie -info 命令。
希望这有帮助。

相关问题