Oozie触发MapReduce主类



不设置作业驱动程序配置,例如在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 jarjava 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。

相关内容

  • 没有找到相关文章