2012-02-23 5 views
3

これは私を狂わせてしまっている - 私はこれをどうやってどうやって解決しようとしているのだろうかと思う!oozieワークフローでhadoopサンプルjarを実行するにはどうすればよいですか?

私は、ワークフローを実行するためにOozieクライアントライブラリを使用するアプリケーションを構築しています。本当にシンプルなので、私はコードのテストをいくつかビルドしたいので、私は正しいコードを実行していることを確認できます - クライアントライブラリのおかげで - 非常に簡単です。

私はHadoopをインストールしており、問題なく標準のwordcountで提供されたサンプルを実行できますが、Oozieとそれを駆動するナットを介してどのように動作させるのかは分かりません。

だから私は、私が気をつけて知っている人(クリープクリープ)を尋ねると思った。

どのように変換します:

bin/hadoop jar hadoop*examples*.jar wordcount input/somedata output 

Oozieワークフローに?

私はそのJavaの動作を想定していますが、ワークフローxmlに何を書き込むのか分かりません!

ワークフローの外観とコマンドラインでの実行方法を教えてください。

多くのありがとうございます。

答えて

2

Oozieジョブを実行するには、workflow.xmlとプロパティファイルが必要です。
基本的なWordCountプログラムを実行するためには、workflow.xmlは次のようなものになります。

<workflow-app xmlns="uri:oozie:workflow:0.1" name="WorkflowRunnerTest"> 

    <start to="intersection0"/> 

    <action name="intersection0"> 
    <map-reduce> 
     <job-tracker>localhost:54101</job-tracker> 
     <name-node>hdfs://localhost:54100</name-node> 

     <prepare> 
     <delete path="hdfs://localhost:54100/user/user1/out1"/> 
     </prepare> 

     <configuration> 
     <property> 
      <name>mapred.job.queue.name</name> 
      <value>default</value> 
     </property> 
     <property> 
      <name>mapred.mapper.class</name> 
      <value>MapperClass</value> 
     </property> 
     <property> 
      <name>mapred.reducer.class</name> 
      <value>ReducerClass</value> 
     </property> 
     <property> 
      <name>mapred.output.key.class</name> 
      <value>org.apache.hadoop.io.Text</value> 
     </property> 
     <property> 
      <name>mapred.output.value.class</name> 
      <value>org.apache.hadoop.io.IntWritable</value> 
     </property> 
     <property> 
      <name>mapred.input.dir</name> 
      <value>/user/user1/inp</value> 
     </property> 
     <property> 
      <name>mapred.output.dir</name> 
      <value>/user/user1/out1</value> 
     </property> 
     </configuration> 
    </map-reduce> 

    <ok to="end"/> 
    <error to="fail"/> 
    </action> 

    <kill name="fail"> 
    <message>Map/Reduce failed, error message</message> 
    </kill> 
    <end name="end"/> 

</workflow-app> 


job.propertisファイルが
oozie.wf.application.path=hdfs://localhost:54100/user/user1/oozie/workflow-apps/sample-mr



workflow.xmlはHDFS中に存在しなければならないでしょう:// localhostを:54100 /ユーザー/ USER1/oozie /ワークフローアプリケーション/ sample-mrおよび必要なクラスを含むjarファイルをパスhdfs:// localhost:54100/user/user1/oozie/workflow-apps/sample-mr/libにコピーします。


Oozieジョブが

oozie job -oozie http://localhost:8080/oozie -config map-reduce-job.properties -run

+0

おかげで、コマンドラインから実行することができ、それは動作します! $ {oozie.wf.application.path}/lib /にコピーするのではなく、jarファイルを明示的に指定する方法はありますか? (OR) 2つの異なるワークフローに同じJARファイルをHDFSで複製せずに使用するにはどうすればよいですか? –

+0

@ThammeGowda $ {oozie.wf.application.path}/lib /は実際には共通のパスになります。 2つのワークフローに同じパスを使用できるので、jarsを複製する必要はありません.hdfs:// localhost:54100/user/user1/oozie/libはすべてのjarの共有場所にすることができます。このパスは、oozieジョブのoozie.libpathとして設定されます。 – WR10

関連する問題