Command Line Examples
提供的例子有三种: 命令行例子 Java API例子 Local Oozie例子
命令行
-
解压
oozie-examples.tar.gz
到本地examples/
目录.并复制到HDFS的HOME目录:$ hadoop fs -put examples examples
-
以Streaming和Pig为例,HDFS必须按照Oozie Share Library.添加Oozie
bin/
到环境变量PATH. - 假设JobTracker为localhost:8021 并且NameNode是hdfs://localhost:8020..
例子在examples/app
目录.目录包含应用XML文件(workflow,或worklfow和coordinator), job.properties
文件用来提交作业和任何需要的jar文件.
样例输入examples/input-data/
目录.
输出在examples/output-data/${EXAMPLE_NAME}
目录.
-
运行
$ 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-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 .......
-
浏览控制台:
http://localhost:11000/oozie
-
避免在每个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();
...