4

Oozie 有一个名为 oozie.launcher.action.main.class 的配置属性,您可以在其中为 map-reduce 操作(或 shell 操作)传入“主类”的名称,如下所示:

  <configuration>
    <property>
      <name>oozie.launcher.action.main.class</name>
      <value>com.company.MyCascadingClass</value>
    </property>
  </configuration>

但是我需要将参数传递给我的主类并且看不到这样做的方法。有任何想法吗?

我之所以问是因为我试图从 Oozie 内部启动一个级联类/流,而到目前为止我尝试过的所有选项都失败了。如果有人让 Cascading 从 Oozie 工作,请告诉我,我会发布另一个问题,特别是问这个问题。

4

1 回答 1

4

从 Oozie 3 开始(还没有尝试过 Oozie 4),我的主要问题的答案是:你不能。没有工具(奇怪地)为使用该oozie.launcher.action.main.class属性定义的主类指定任何参数。

@Dmitry 在评论中建议仅使用 Oozie java 操作适用于级联作业(或任何 Hadoop 相关作业),因为 Oozie 在启动作业时将所有 Hadoop jar 放入类路径中。

我在我的博客中记录了一个从 Oozie 启动级联作业的工作示例:http: //thornydev.blogspot.com/2013/10/launching-cascading-job-from-apache.html

这是对我有用的 workflow.xml 文件:

<workflow-app xmlns='uri:oozie:workflow:0.2' name='cascading-wf'>
  <start to='stage1' />
  <action name='stage1'>
    <java>
      <job-tracker>${jobTracker}</job-tracker>
      <name-node>${nameNode}</name-node>

      <configuration>
        <property>
          <name>mapred.job.queue.name</name>
          <value>${queueName}</value>
        </property>
      </configuration>

      <main-class>com.mycompany.MyCascade</main-class>
      <java-opts></java-opts>
      <arg>/user/myuser/dir1/dir2</arg>
      <arg>my-arg-2</arg>
      <arg>my-arg-3</arg>
      <file>lib/${EXEC}#${EXEC}</file> 
      <capture-output />
    </java>
    <ok to="end" />
    <error to="fail" />
  </action>

  <kill name="fail">
    <message>FAIL: Oh, the huge manatee!</message>
  </kill>

  <end name="end"/>
</workflow-app>

job.propertiesworkflow.xml 随附的文件中,EXEC 属性定义为:

EXEC=mybig-shaded-0.0.1-SNAPSHOT.jar

并将作业放入这两个定义文件所在的lib目录中。

于 2013-10-12T15:20:36.343 回答