这让我疯了 - 我觉得自己像个白痴,试图弄清楚如何做到这一点!
我正在构建一个使用Oozie客户端库来运行工作流的应用程序。非常简单,我想为我的代码构建一些测试,所以我可以检查我做的正确的实际代码 - 感谢oozie客户端库 - 非常简单。
我已经安装了Hadoop并且可以运行标准的wordcount提供的示例,没有任何问题,但我无法弄清楚如何通过Oozie运行它并让它疯狂。
所以我想我会欺骗并问一些会知道的人(蠕动蠕动)。
我如何转换:
bin/hadoop jar hadoop*examples*.jar wordcount input/somedata output
到Oozie工作流程?
我假设它是一个Java动作,但我无法弄清楚要填充xml工作流的内容!
请帮助 - 工作流程是什么样的,我将如何在命令行上运行它。
非常感谢。
答案 0 :(得分: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:// localhost:54100 / user / user1 / oozie / workflow-apps / 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