2012-02-23 3 views
3

이것은 내 견과를 몰고있다 - 나는 이것을하는 방법을 해결하려고 노력하는 바보 같이 느낀다!oozie 워크 플로우에서 어떻게 hadoop 예제 jar를 실행할 수 있습니까?

워크 플로를 실행하기 위해 Oozie 클라이언트 라이브러리를 사용하는 응용 프로그램을 만들고 있습니다. 정말 간단합니다. 코드에 대한 몇 가지 테스트를 작성하고 싶습니다. 따라서 실제 코드가 클라이언트 라이브러리 덕분에 제대로 작동하는지 확인할 수 있습니다. 매우 간단합니다.

나는 Hadoop을 설치했고 문제없이 표준 예제를 실행할 수 있지만, Oozie와 그것의 운전 견해를 통해 물건을 실행하는 법을 배울 수는 없다.

그래서 나는 속임수를 쓰고 알고있는 사람들 (크립 크립)을 물었습니다.

어떻게 변환합니까 :

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

Oozie 워크 플로우에?

나는 자바 동작을 가정하지만, 워크 플로 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 파일은 workflow.xml는 HDFS에 존재하는
oozie.wf.application.path=hdfs://localhost:54100/user/user1/oozie/workflow-apps/sample-mr



될 것입니다 : // 로컬 호스트 : 54100/사용자/사용자 1/oozie/워크 플로우 애플리케이션/sample-mr 및 경로 hdfs : // localhost : 54100/user/user1/oozie/workflow-apps/sample-mr/lib에 필요한 클래스가 들어있는 jar 파일을 복사하십시오.


Oozie 작업이

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

+0

감사에 의해 명령 줄에서 실행할 수 있습니다, 그 작품! $ {oozie.wf.application.path}/lib /로 복사하는 대신 jar 파일을 명시 적으로 지정하는 방법이 있습니까? (OR) HDFS에서 복제하지 않고 2 개의 다른 워크 플로우에 대해 동일한 JAR 파일을 사용하려면 어떻게해야합니까? –

+0

@ThammeGowda $ {oozie.wf.application.path}/lib /는 실제로 공통 경로가 될 수 있습니다. 두 개의 워크 플로우에 동일한 경로를 사용할 수 있으므로 jars를 복제 할 필요가 없습니다. hdfs : // localhost : 54100/user/user1/oozie/lib는 모든 병에 대한 공유 위치가 될 수 있습니다. 이 경로는 oozie 작업에 대해 oozie.libpath로 설정됩니다. – WR10

관련 문제