2012-02-23 57 views
3

这使我疯狂 - 我觉得自己像一个白痴试图找出如何做到这一点!如何在oozie工作流中运行hadoop示例jar?

我建立一个使用Oozie的客户端库运行工作流应用程序。真的很简单,我想为我的代码构建一些测试,所以我可以检查我做的是正确的代码 - 感谢oozie客户端库 - 非常简单。

我已经安装了Hadoop和可以运行标准的单词计数提供的例子,没有问题,但我不能工作了如何通过Oozie的和我发疯运行的东西。

所以我想我会骗,询问一些人谁都会知道(蠕变蠕变)。

如何转换:

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

要在Oozie的工作流程?

我认为它的一个Java的动作,但我就是不知道是什么填补到工作流程的XML!

请帮助 - 将工作流程的样子和我将如何在命令行中运行它。

非常感谢。

回答

2

对于运行Oozie的工作,你需要workflow.xml和属性文件。
对于运行Basic 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://本地主机:54100 /用户/用户1/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

谢谢运行,该工程! 有没有明确的方式来指定jar文件,而不是复制到$ {oozie.wf.application.path}/lib /? (OR) 如何在不重复HDFS的情况下为两种不同的工作流程使用相同的JAR文件? – 2013-12-09 09:05:39

+0

@ThammeGowda $ {oozie.wf.application.path}/lib /实际上可以是一个通用路径。相同的路径可以用于两个工作流程,因此您不必复制您的jars.e.g hdfs:// localhost:54100/user/user1/oozie/lib可以是所有jar的共享位置。该路径将被设置为oozie作业的oozie.libpath。 – WR10 2013-12-11 07:06:00