不设置作业驱动程序配置,例如在oozie工作流xml中设置Inputformat映射器类等,我想调用我的ExampleDecision.java。ExampleDecision主要方法将负责作业设置和配置。怎么做?
Would II Java-Main Action决策节点在OOZIE_COOK_BOOK中的插图等于java ExampleDecision <strings...>
,并作为普通java作业提交作业
或
是否等于Hadoop jar SomeJar.ExampleDecision <strings...>
是的,您可以很好地使用Java创建map/reduce代码,其中主类像往常一样负责配置作业和作业调度。
那么你可以在Oozie工作流中使用java
动作标签来调用Jar中的Main类。
在这里,Main类将调度map/reduce作业,这将与使用map-reduce
标记的方法相同。
您必须断言的主要考虑因素是,您应该只使用main类中的job.waitForCompletion(true)
语句来调度作业。
这样做的重要原因是在Java操作节点上保持Oozie执行,直到Main类调度的map/reduce作业完成。
编辑:
调用hadoop jar
和java jar
之间的差异将是
-
hadoop
命令将预先安排一些env属性mapreduce作业执行,如JAVA_HOME,HADOOP_HOME,HADOOP_OPTS等。大多数情况下,您可能已经在环境变量中定义了当你使用java
执行时,这不会造成任何问题命令。 -
当您使用
java
动作使用Oozie工作流调用mapreduce作业时,Oozie将无法收集有关已调度mapreduce作业的统计数据,计数器,因为实际的mr作业将从为java action
调度的容器中生成。
所以Oozie执行的Java action node
将在一个单独的容器(MapTask)中运行,这只是Driver类,它准备作业并等待直到作业完成,到那时Oozie工作流也将等待java action MapTask
完成。您将能够从Oozie -info
命令中看到生成的mapreduce作业的作业id。