Oozie 触发 MapReduce 主类
Posted
技术标签:
【中文标题】Oozie 触发 MapReduce 主类【英文标题】:Oozie to Trigger a MapReduce Main Class 【发布时间】:2015-08-31 19:11:58 【问题描述】:我不想在 oozie 工作流 xml 中设置作业驱动程序配置,例如 Inputformat 映射器类等,而是要调用我的 ExampleDecision.java。 ExampleDecision 主要方法将负责作业设置和配置。该怎么做?
II Java-Main Action 决策节点会在OOZIE_COOK_BOOK 中说明
等于java ExampleDecision <strings...>
并将作业作为普通的java作业提交
或
是否等于Hadoop jar SomeJar.ExampleDecision <strings...>
【问题讨论】:
是的。您需要定义一个 java 操作来调用您的驱动程序类。 【参考方案1】:是的,您可以很好地使用 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。
希望这会有所帮助。
【讨论】:
因此,Java Action Tag.. 将等效于 Hadoop 调用的 MR 作业,即 ~= 用法:hadoop jaroozie.launcher.
用于每个特定的道具。
JAVA ACTION NODE 会不会像普通的 Java 代码一样触发它,相当于 JAVA 以上是关于Oozie 触发 MapReduce 主类的主要内容,如果未能解决你的问题,请参考以下文章
OOZIE HIVE 操作 - workflow.xml 属性不会传递给子任务
如何使用 hadoop-2.2 在 oozie 中执行 mapreduce 程序
Mesos 上的 Hadoop 因“无法找到或加载主类 org.apache.hadoop.mapred.MesosExecutor”而失败