[[index][::Go back to Oozie Documentation Index::]] ---+!! Oozie Examples %TOC% ---++ Command Line Examples ---+++ Setting Up the Examples Oozie examples are bundled within the Oozie distribution in the =oozie-examples.tar.gz= file. Expanding this file will create an =examples/= directory in the local file system. The =examples/= directory must be copied to the user HOME directory in HDFS: $ hadoop fs -put examples examples *NOTE:* If an examples directory already exists in HDFS, it must be deleted before copying it again. Otherwise files may not be copied. ---+++ Running the Examples Add Oozie =bin/= to the environment PATH. The examples assume the JobTracker is =localhost:9001= and the NameNode is =hdfs://localhost:9000=. If the actual values are different, the job properties files in the examples directory must be edited to the correct values. The example applications are under the examples/app directory, one directory per example. The directory contains the application XML file (workflow, or worklfow and coordinator), the =job.properties= file to submit the job and any JAR files the example may need. The inputs for all examples are in the =examples/input-data/= directory. The examples create output under the =examples/output-data/${EXAMPLE_NAME}= directory. *Note*: The =job.properties= file needs to be a local file during submissions, and not a HDFS path. *How to run an example application:* $ oozie job -oozie http://localhost:8080/oozie -config examples/apps/map-reduce/job.properties -run . job: 14-20090525161321-oozie-tucu Check the workflow job status: $ oozie job -oozie http://localhost:8080/oozie -info 14-20090525161321-oozie-tucu . .---------------------------------------------------------------------------------------------------------------------------------------------------------------- Workflow Name : map-reduce-wf App Path : hdfs://localhost:9000/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 .---------------------------------------------------------------------------------------------------------------------------------------------------------------- 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 .---------------------------------------------------------------------------------------------------------------------------------------------------------------- To check the workflow job status via the Oozie web console, with a browser go to =http://localhost:8080/oozie=. To avoid having to provide the =-oozie= option with the Oozie URL with every =oozie= command, set =OOZIE_URL= env variable to the Oozie URL in the shell environment. For example: $ export OOZIE_URL="http://localhost:8080/oozie" $ $ oozie job -info 14-20090525161321-oozie-tucu ---++ Examples Share Lib The streaming, pig, demo and custom-main examples pick up the streaming and pig JARs from an example share lib bundled with the examples =examples/apps/examples-lib/= . The setting for the share lib is done in the job properties using the =oozie.libpath= property. oozie.libpath=/user/${user.name}/examples/apps/examples-lib ---++ Java API Example Oozie provides a =[[./apidocs/org/org/apache/oozie/client/package-summary.html][Java Client API]] that simplifies integrating Oozie with Java applications. This Java Client API is a convenience API to interact with Oozie Web-Services API. The following code snippet shows how to submit an Oozie job using the 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:8080/oozie"); . // create a workflow job configuration and set the workflow application path Properties conf = wc.createConfiguration(); conf.setProperty(OozieClient.APP_PATH, "hdfs://foo:9000/usr/tucu/my-wf-app"); . // setting workflow parameters conf.setProperty("jobTracker", "foo:9001"); 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 Example Oozie provides a embedded Oozie implementation, =[[./apidocs/org/apache/oozie/local/LocalOozie.html][LocalOozie]]=, which is useful for development, debugging and testing of workflow applications within the convenience of an IDE. The code snipped below shows the usage of the =LocalOozie= class. All the interaction with Oozie is done using Oozie =OozieClient= Java API, as shown in the previous section. The examples bundled with Oozie include the complete and running class, =LocalOozieExample= from where this snipped was taken. 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:9000/usr/tucu/my-wf-app"); . // setting workflow parameters conf.setProperty("jobTracker", "foo:9001"); 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(); ... [[index][::Go back to Oozie Documentation Index::]]