Command Line Examples

提供的例子有三种: 命令行例子 Java API例子 Local Oozie例子

命令行

  1. 解压oozie-examples.tar.gz到本地examples/目录.并复制到HDFS的HOME目录:

    $ hadoop fs -put examples examples

  2. 以Streaming和Pig为例,HDFS必须按照Oozie Share Library.添加Oozie bin/到环境变量PATH.

  3. 假设JobTracker为localhost:8021 并且NameNode是hdfs://localhost:8020..

例子在examples/app目录.目录包含应用XML文件(workflow,或worklfow和coordinator), job.properties文件用来提交作业和任何需要的jar文件.

样例输入examples/input-data/目录.

输出在examples/output-data/${EXAMPLE_NAME}目录.

  1. 运行

    $ oozie job -oozie http://localhost:11000/oozie -config examples/apps/map-reduce/job.properties -run

    job: 14-20090525161321-oozie-tucu

  2. 检查工作流状态:

    $ oozie job -oozie http://localhost:11000/oozie -info 14-20090525161321-oozie-tucu

    .---------------------------------------------------------------------------------------------------------------------------------------------------------------- Workflow Name : map-reduce-wf App Path : hdfs://localhost:8020/user/tucu/examples/apps/map-reduce Status : SUCCEEDED Run : 0 User : tucu Group : users Created : 2009-05-26 05:01 +0000 Started : 2009-05-26 05:01 +0000 Ended : 2009-05-26 05:01 +0000 Actions .......

  3. 浏览控制台:http://localhost:11000/oozie

  4. 避免在每个oozie命令提交-oozie 设置OOZIE_URL 变量:

    $ export OOZIE_URL="http://localhost:11000/oozie"

    $ oozie job -info 14-20090525161321-oozie-tucu

Java API例子

提交Oozie作业使用Java Client API

import org.apache.oozie.client.OozieClient;
import org.apache.oozie.client.WorkflowJob;
.
import java.util.Properties;
.
...
.
// get a OozieClient for local Oozie
OozieClient wc = new OozieClient("http://bar:11000/oozie");
.
// create a workflow job configuration and set the workflow application path
Properties conf = wc.createConfiguration();
conf.setProperty(OozieClient.APP_PATH, "hdfs://foo:8020/usr/tucu/my-wf-app");
.
// setting workflow parameters
conf.setProperty("jobTracker", "foo:8021");
conf.setProperty("inputDir", "/usr/tucu/inputdir");
conf.setProperty("outputDir", "/usr/tucu/outputdir");
...
.
// submit and start the workflow job
String jobId = wc.run(conf);
System.out.println("Workflow job submitted");
.
// wait until the workflow job finishes printing the status every 10 seconds
while (wc.getJobInfo(jobId).getStatus() == Workflow.Status.RUNNING) {
System.out.println("Workflow job running ...");
Thread.sleep(10 * 1000);
}
.
// print the final status o the workflow job
System.out.println("Workflow job completed ...");
System.out.println(wf.getJobInfo(jobId));
...

Local Oozie例子

用于本地调试等

import org.apache.oozie.local.LocalOozie;
import org.apache.oozie.client.OozieClient;
import org.apache.oozie.client.WorkflowJob;
.
import java.util.Properties;
.
...
// start local Oozie
LocalOozie.start();
.
// get a OozieClient for local Oozie
OozieClient wc = LocalOozie.getClient();
.
// create a workflow job configuration and set the workflow application path
Properties conf = wc.createConfiguration();
conf.setProperty(OozieClient.APP_PATH, "hdfs://foo:8020/usr/tucu/my-wf-app");
.
// setting workflow parameters
conf.setProperty("jobTracker", "foo:8021");
conf.setProperty("inputDir", "/usr/tucu/inputdir");
conf.setProperty("outputDir", "/usr/tucu/outputdir");
...
.
// submit and start the workflow job
String jobId = wc.run(conf);
System.out.println("Workflow job submitted");
.
// wait until the workflow job finishes printing the status every 10 seconds
while (wc.getJobInfo(jobId).getStatus() == Workflow.Status.RUNNING) {
System.out.println("Workflow job running ...");
Thread.sleep(10 * 1000);
}
.
// print the final status o the workflow job
System.out.println("Workflow job completed ...");
System.out.println(wf.getJobInfo(jobId));
.
// stop local Oozie
LocalOozie.stop();
...