4

Oozie には、oozie.launcher.action.main.class という構成プロパティがあり、map-reduce アクション (またはシェル アクション) の「メイン クラス」の名前を次のように渡すことができます。

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

しかし、引数をメイン クラスに渡す必要があり、それを行う方法がわかりません。何か案は?

Oozie 内から Cascading クラス/フローを起動しようとしていて、これまでに試したすべてのオプションが失敗したため、質問しています。誰かが Oozie から Cascading を動作させた場合は、私に知らせてください。特にそれを尋ねる別の質問を投稿します。

4

1 に答える 1

4

Oozie 3 の時点で (Oozie 4 はまだ試していません)、主な質問に対する答えは次のとおりです。oozie.launcher.action.main.classプロパティで定義されたメイン クラスに引数を指定するための (奇妙なことに) 機能はありません。

Oozie java アクションのみを使用するというコメント内の @Dmitry の提案は、Oozie がジョブの起動時にすべての Hadoop jar をクラスパスに配置するため、Cascading ジョブ (または任意の Hadoop 依存ジョブ) で機能します。

私のブログで、Oozie からカスケーディング ジョブを起動する実際の例を文書化しました

これが私のために働いた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>

workflow.xml に付随するjob.propertiesファイルでは、EXEC プロパティが次のように定義されています。

EXEC=mybig-shaded-0.0.1-SNAPSHOT.jar

ジョブは、これら 2 つの定義ファイルがある lib ディレクトリの下に配置されます。

于 2013-10-12T15:20:36.343 に答える