http://oozie.apache.org/docs/4.0.0/DG_Examples.html
命令行示例 - Command Line Examples
创建示例
Oozie示例被打包在Oozie发行版的 oozie-examples.tar.gz 文件中。展开这个文件将在本地文件系统中创建一个examples/目录。examples/目录必须复制到HDFS中的用户主目录:
$ hadoop fs -put examples examples
注意:如果示例目录已经存在于HDFS中,则必须在再次复制之前删除它。否则可能无法复制文件。
运行示例
对于Streaming和Pig示例,必须在HDFS中安装Oozie共享库(Oozie Share Library)。
将Oozie bin/添加到环境PATH。
示例假设 JobTracker 是 localhost:8021 , NameNode 是 hdfs://localhost:8020 。如果实际值不同,则必须将示例目录中的作业属性文件( job.properties )编辑为正确的值。
示例应用程序位于examples/app 目录下,每个示例一个目录。该目录包含:
- 应用程序XML文件(
workflow.xml,或worklfow.xml和coordinator.xml)。 - 提交作业的
job.properties文件。 - 示例可能需要的
lib/目录中任何*.jarJAR文件(各jar包中的类共享命名空间)。
所有示例的输入都在 examples/input-data/ 目录中。
示例在 examples/output-data/${EXAMPLE_NAME} 目录下创建输出。
注意:在提交期间(during submissions),job.properties 文件需要是本地文件,而不是HDFS路径。
如何运行一个示例应用:
$ oozie job -oozie http://localhost:11000/oozie -config examples/apps/map-reduce/job.properties -run.job: 14-20090525161321-oozie-tucu
检查工作流程状态:
$ oozie job -oozie http://localhost:11000/oozie -info 14-20090525161321-oozie-tucu..----------------------------------------------------------------------------------------------------------------------------------------------------------------Workflow Name : map-reduce-wfApp Path : hdfs://localhost:8020/user/tucu/examples/apps/map-reduceStatus : SUCCEEDEDRun : 0User : tucuGroup : usersCreated : 2009-05-26 05:01 +0000Started : 2009-05-26 05:01 +0000Ended : 2009-05-26 05:01 +0000Actions.----------------------------------------------------------------------------------------------------------------------------------------------------------------Action Name Type Status Transition External Id External Status Error Code Start Time End Time.----------------------------------------------------------------------------------------------------------------------------------------------------------------mr-node map-reduce OK end job_200904281535_0254 SUCCEEDED - 2009-05-26 05:01 +0000 2009-05-26 05:01 +0000.----------------------------------------------------------------------------------------------------------------------------------------------------------------
要通过Oozie web控制台检查工作流作业状态,可以使用浏览器转到 “http://loaclhost:11000/oozie” 。
为了避免在每个Oozie命令中使用Oozie URL提供 -oozie 选项,可以在shell环境中将 OOZIE_URL 环境变量设置为Oozie URL。例如:
$ export OOZIE_URL="http://localhost:11000/oozie"$$ oozie job -info 14-20090525161321-oozie-tucu
Java API的例子
Oozie提供了一个Java Client API示例,简化了Oozie与Java应用程序的集成。这个Java客户端API是一个与Oozie web服务API交互的方便API。( Java Client API 404 不存在)
下面的代码片段展示了如何使用Java客户端API提交Oozie作业。
import org.apache.oozie.client.OozieClient;import org.apache.oozie.client.WorkflowJob;.import java.util.Properties;.....// get a OozieClient for local OozieOozieClient wc = new OozieClient("http://bar:11000/oozie");.// create a workflow job configuration and set the workflow application pathProperties conf = wc.createConfiguration();conf.setProperty(OozieClient.APP_PATH, "hdfs://foo:8020/usr/tucu/my-wf-app");.// setting workflow parametersconf.setProperty("jobTracker", "foo:8021");conf.setProperty("inputDir", "/usr/tucu/inputdir");conf.setProperty("outputDir", "/usr/tucu/outputdir");....// submit and start the workflow jobString jobId = wc.run(conf);System.out.println("Workflow job submitted");.// wait until the workflow job finishes printing the status every 10 secondswhile (wc.getJobInfo(jobId).getStatus() == Workflow.Status.RUNNING) {System.out.println("Workflow job running ...");Thread.sleep(10 * 1000);}.// print the final status o the workflow jobSystem.out.println("Workflow job completed ...");System.out.println(wf.getJobInfo(jobId));...
Local Oozie的例子
Oozie提供了一个内嵌的Oozie实现 LocalOozie ,它对于在IDE的便利下开发、调试和测试工作流应用程序非常有用。 (LocalOozie 404 不存在)
下面的代码片段显示了 LocalOozie 类的用法。与Oozie的所有交互都是使用Oozie OozieClient Java API完成的,如前一节所示。
与Oozie绑定的示例包括完整的、正在运行的类 LocalOozieExample ,这个代码片段就是从这个类获得的。
import org.apache.oozie.local.LocalOozie;import org.apache.oozie.client.OozieClient;import org.apache.oozie.client.WorkflowJob;.import java.util.Properties;....// start local OozieLocalOozie.start();.// get a OozieClient for local OozieOozieClient wc = LocalOozie.getClient();.// create a workflow job configuration and set the workflow application pathProperties conf = wc.createConfiguration();conf.setProperty(OozieClient.APP_PATH, "hdfs://foo:8020/usr/tucu/my-wf-app");.// setting workflow parametersconf.setProperty("resourceManager", "foo:8032");conf.setProperty("inputDir", "/usr/tucu/inputdir");conf.setProperty("outputDir", "/usr/tucu/outputdir");....// submit and start the workflow jobString jobId = wc.run(conf);System.out.println("Workflow job submitted");.// wait until the workflow job finishes printing the status every 10 secondswhile (wc.getJobInfo(jobId).getStatus() == WorkflowJob.Status.RUNNING) {System.out.println("Workflow job running ...");Thread.sleep(10 * 1000);}.// print the final status of the workflow jobSystem.out.println("Workflow job completed ...");System.out.println(wc.getJobInfo(jobId));.// stop local OozieLocalOozie.stop();...
