Y's note

Web技術・プロダクトマネジメント・そして経営について

本ブログの更新を停止しており、今後は下記Noteに記載していきます。
https://note.com/yutakikuchi/

Hadoop Oozie設定からPigのPythonUDFを利用するまでのまとめ

Hadoop 第2版

Hadoop 第2版

Oozie

OozieとはHadoop MapReduceのジョブ管理システムの事でMapReduceの定期処理化や複数MapReduceの実行し結果を一つにまとめるなど一連の処理フローとして定義することができる優れものです。Oozie自体はJava/Tomcatで作られているようです。Oozieを動かすために開発者は以下のものを用意しなければなりません。

ファイル 必須 記述方式 用途 設置場所
MapReduceプログラム 必須 Java,Streaming,Pig/Hive等 MapReduce実行 HDFS
workflow 必須 xml OozieJobの実行 HDFS
coordinator 定期化する場合必須 xml Ooziejobの定期化 HDFS
properties 必須 設定ファイル Ooziejobの実行パラメータファイル Oozie client

Oozieを動かすためのパラメータファイル以外は全てHDFSのパスに設置する必要があります。workflowがMapReduceの一連処理の流れを定義し、coordinatorは定期処理をしたい場合に定義するxmlファイルです。propertiesはJobTracker,NameNodeやOozieのjobに渡すパラメータの設定ファイルです。
Oozieの設定ファイルの定義は厳格(記述書式、順番に厳しい)でありながら、設定間違いのWarningが大変分かりづらいためDebugに相当時間を費やす事になりますが、一度設定をしてしまえば大変強力なものになるので、一度導入を検討してみると良いかもしれません。

Install on CentOS

Oozie Installation - Cloudera Support はてなブックマーク - Oozie Installation - Cloudera Support
Oozieインストール - Meta Search はてなブックマーク - Oozieインストール - Meta Search
Oozie OuickStart はてなブックマーク - Oozie -
ここら辺を参考にinstallしてみます。

Install Package

Oozieの設定をCentOs1台で行います。OsのバージョンはCentOS release 6.3 (Final)です。まずはinstall済みのhadoopパッケージの確認と追加でoozieのパッケージをinstallします。Oozie以外にもmysql,tomcatをinstallする必要があるので、それらも入れます。

$ yum list installed | grep hadoop   
hadoop-0.20.noarch     0.20.2+923.421-1 @cloudera-cdh3                          
hadoop-0.20-conf-pseudo.noarch
hadoop-0.20-datanode.noarch
hadoop-0.20-jobtracker.noarch
hadoop-0.20-namenode.noarch
hadoop-0.20-secondarynamenode.noarch
hadoop-0.20-tasktracker.noarch
hadoop-pig.noarch      0.8.1+28.39-1    @cloudera-cdh3  

$ yum install oozie oozie-client -y
$ yum list installed | grep oozie
oozie.noarch           2.3.2+27.23-1    @cloudera-cdh3                          
oozie-client.noarch    2.3.2+27.23-1    @cloudera-cdh3   

$ yum install mysql mysql-server tomcat6 -y
$ yum list installed | grep mysql     
mysql.x86_64           5.1.66-2.el6_3   @updates                                
mysql-libs.x86_64      5.1.66-2.el6_3   @updates                                
mysql-server.x86_64    5.1.66-2.el6_3   @updates

$ yum list installed | grep tomcat
tomcat6.noarch         6.0.24-45.el6    @base                                   
tomcat6-el-2.1-api.noarch
tomcat6-jsp-2.1-api.noarch
tomcat6-lib.noarch     6.0.24-45.el6    @base                                   
tomcat6-servlet-2.5-api.noarch
各種Path

InstallやOozieを実行することによって作成されるOozieディレクトリパスです。※私の環境では/var/oozie/tmpは自分で作成する必要がありました。

path 説明
/usr/lib/oozie shファイル、libファイル
/usr/share/doc/oozie* Documentファイル
/etc/oozie Configファイル
/var/log/oozie logファイル
/var/run/oozie ProcessIDファイル
/var/tmp/oozie tempファイル
Mysqlの設定

mysqlを起動&接続してoozieDBの作成とoozieユーザを登録します。またTomcatからmysqlで接続を行うためにmysql-connector-javaをdownloadして展開しておきます。

$ sudo /etc/rc.d/init.d/mysqld start
mysqld を起動中:                                           [  OK  ]

$ mysql -u root -p

mysql> create database oozie;
Query OK, 1 row affected (0.03 sec)

mysql> grant all privileges on oozie.* to 'oozie'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on oozie.* to 'oozie'@'%' identified by 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

Oozieアプリケーションからmysql接続が行えるようにJDBC Connectorを設定します。

$ wget "http://www.mysql.com/downloads/mirror.php?id=409559"
2012-12-22 14:23:24 (2.11 MB/s) - `mysql-connector-java-5.1.22.tar.gz' へ保存完了 [4028047/4028047]

$ tar -xzf mysql-connector-java-5.1.22.tar.gz
設定ファイルをMysql用に書き換え

jdbcmysqlに設定するように/etc/oozie/oozie-site.xmlを編集します。

$ sudo vim /etc/oozie/oozie-site.xml

    <property>
        <name>oozie.service.StoreService.jdbc.driver</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>
            JDBC driver class.
        </description>
    </property>

    <property>
        <name>oozie.service.StoreService.jdbc.url</name>
        <value>jdbc:mysql://localhost:3306/oozie</value>
        <description>
            JDBC URL.
        </description>
    </property>

    <property>
        <name>oozie.service.StoreService.jdbc.username</name>
        <value>oozie</value>
        <description>
            DB user name.
        </description>
    </property>

    <property>
        <name>oozie.service.StoreService.jdbc.password</name>
        <value>password</value>
        <description>
            DB user password.

            IMPORTANT: if password is emtpy leave a 1 space string, the service trims the value,
                       if empty Configuration assumes it is NULL.

            IMPORTANT: if the StoreServicePasswordService is active, it will reset this value with the value given in
                       the console.
        </description>
    </property>
ExtJSのdownload

Oozieのwebconsole表示にはExtJSというJavascriptライブラリが必要です。注意としては2.2のVersionを指定しなければならない事です。

$ wget http://extjs.com/deploy/ext-2.2.zip
oozie-setup

Oozieのsetupコマンドを実行します。ここでdownloadしたjdbcのjarとExtjsのコピーを行います。

$ sudo -u oozie /usr/lib/oozie/bin/oozie-setup.sh -jars work/jdbc/mysql-connector-java-5.1.22/mysql-connector-java-5.1.22-bin.jar -extjs work/extjs/ext-2.2.zip
xtjs work/extjs/ext-2.2.zip
  setting OOZIE_CONFIG=/etc/oozie
  setting OOZIE_DATA=/var/lib/oozie
  setting OOZIE_LOG=/var/log/oozie
  setting CATALINA_BASE=${OOZIE_DATA}/oozie-server
  setting CATALINA_TMPDIR=/var/tmp/oozie
  setting CATALINA_PID=/var/run/oozie/oozie.pid

New Oozie WAR file with added 'ExtJS library, JARs' at /var/lib/oozie/oozie-server/webapps/oozie.war
INFO: Oozie is ready to be started
Oozieの起動と確認

Oozieの起動と確認コマンンドを実行してみます。確認コマンドで大量のエラーが発生し、http://localhost:11000/oozieにアクセスしてもアプリケーションの確認ができませんでした。Oozieのログファイルも確認してみると/var/tmp/oozieが無いということで怒られています。ということでoozieユーザで/var/tmp/oozieを作成し、oozieを再起動します。また後から怒られないようにoozie関連のディレクトリは全て所有者をoozieに変更しておきます。Oozieの起動確認コマンドもSystem mode: NORMALとなっていて正常に起動していることが分かります。

$ sudo -u oozie /usr/lib/oozie/bin/oozie-start.sh

$ /usr/bin/oozie admin -oozie http://localhost:11000/oozie -status
Error: AUTHENTICATION : Could not authenticate, Authentication failed, status: 404, message: Not Found

$ sudo -u oozie usr/lib/oozie/bin/oozie-run.sh
Setting OOZIE_HOME:          /usr/lib/oozie
Sourcing:                    /usr/lib/oozie/bin/oozie-env.sh
  setting OOZIE_CONFIG=/etc/oozie
  setting OOZIE_DATA=/var/lib/oozie
  setting OOZIE_LOG=/var/log/oozie
  setting CATALINA_BASE=${OOZIE_DATA}/oozie-server
  setting CATALINA_TMPDIR=/var/tmp/oozie
  setting CATALINA_PID=/var/run/oozie/oozie.pid
Using   OOZIE_CONFIG:        /etc/oozie
Sourcing:                    /etc/oozie/oozie-env.sh
Setting OOZIE_CONFIG_FILE:   oozie-site.xml
Using   OOZIE_DATA:          /var/lib/oozie
Using   OOZIE_LOG:           /var/log/oozie
Setting OOZIE_LOG4J_FILE:    oozie-log4j.properties
Setting OOZIE_LOG4J_RELOAD:  10
Setting OOZIE_HTTP_HOSTNAME: localhost
Setting OOZIE_HTTP_PORT:     11000
Setting OOZIE_ADMIN_PORT:     11001
Setting OOZIE_BASE_URL:      http://localhost:11000/oozie
Using   CATALINA_BASE:       /var/lib/oozie/oozie-server
Setting CATALINA_OUT:        /var/log/oozie/catalina.out
Using   CATALINA_PID:        /var/run/oozie/oozie.pid

Using   CATALINA_OPTS:        -Dderby.stream.error.file=/var/log/oozie/derby.log
Adding to CATALINA_OPTS:     -Doozie.home.dir=/usr/lib/oozie -Doozie.config.dir=/etc/oozie -Doozie.log.dir=/var/log/oozie -Doozie.data.dir=/var/lib/oozie -Doozie.config.file=oozie-site.xml -Doozie.log4j.file=oozie-log4j.properties -Doozie.log4j.reload=10 -Doozie.http.hostname=localhost -Doozie.admin.port=11001 -Doozie.http.port=11000 -Doozie.base.url=http://localhost:11000/oozie

Using CATALINA_BASE:   /var/lib/oozie/oozie-server
Using CATALINA_HOME:   /usr/lib/oozie/oozie-server
Using CATALINA_TMPDIR: /var/tmp/oozie
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/lib/oozie/oozie-server/bin/bootstrap.jar
Using CATALINA_PID:    /var/run/oozie/oozie.pid
2012/12/22 15:15:56 org.apache.catalina.startup.Embedded initDirs
致命的: Cannot find specified temporary folder at /var/tmp/oozie
2012/12/22 15:15:57 org.apache.catalina.core.AprLifecycleListener init
情報: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2012/12/22 15:15:58 org.apache.coyote.http11.Http11Protocol init
致命的: エンドポイントを初期化中のエラーです
java.net.BindException: Address already in use <null>:11000

$ cat /var/log/oozie/oozie.log
2012-12-22 15:15:58,898  INFO XLogService:525 - Log4j configuration file [oozie-log4j.properties]
2012-12-22 15:15:58,899  INFO XLogService:525 - Log4j configuration file loaded from [/etc/oozie]
2012-12-22 15:15:58,899  INFO XLogService:525 - Log4j reload interval [10 sec]
2012-12-22 15:15:58,912  INFO ConfigurationService:525 - USER[-] GROUP[-] Oozie home dir  [/usr/lib/oozie]
2012-12-22 15:15:58,917  INFO ConfigurationService:525 - USER[-] GROUP[-] Oozie conf dir  [/etc/oozie]
2012-12-22 15:15:58,917  INFO ConfigurationService:525 - USER[-] GROUP[-] Oozie conf file [oozie-site.xml]
2012-12-22 15:15:58,953  INFO ConfigurationService:525 - USER[-] GROUP[-] Configuration change via System Property, [oozie.base.url]=[http://localhost:11000/oozie]
2012-12-22 15:15:58,956  WARN ConfigurationService:528 - USER[-] GROUP[-] System property [oozie.admin.port] no defined in Oozie configuration, ignored
2012-12-22 15:15:58,959  INFO Services:525 - USER[-] GROUP[-] Exiting null Entering NORMAL
2012-12-22 15:15:58,964 FATAL Services:519 - USER[-] GROUP[-] java.io.IOException: No such file or directory
java.io.IOException: No such file or directory
$ sudo chown -R oozie /var/lib/oozie
$ sudo chown -R oozie /var/log/oozie
$ sudo -u oozie mkdir /var/tmp/oozie
$ sudo chown -R oozie /var/tmp/oozie
$ sudo -u oozie /usr/lib/oozie/bin/oozie-stop.sh
$ sudo -u oozie /usr/lib/oozie/bin/oozie-start.sh
$ /usr/bin/oozie admin -oozie http://localhost:11000/oozie -status
System mode: NORMAL


http://localhost:11000/oozieにアクセスすると上のようなjob管理画面が表示されます。

Pig on Oozie

PigでHadoopをより便利に使う!PigでのMapReduceまとめ - Yuta.Kikuchiの日記 はてなブックマーク - PigでHadoopをより便利に使う!PigでのMapReduceまとめ - Yuta.Kikuchiの日記
User Defined Functions はてなブックマーク - User Defined Functions
今回はPigのUDFという独自関数をPythonで作り、PigのMapReduceを定期処理するための設定について記述します。

PythonUDF

Pigの独自関数はJava,Python,Javascriptで記述する事ができます。Pigは文字列操作などの関数が無いためPiggyBank はてなブックマーク - PiggyBankで探しても見つからない場合は自分で処理を書くしかありません。Pythonで書いたUDFはJythonというJavaとお喋りするためのIFでやり取りをするのでPythonと少し仕様が変わったりします。今回は以下のように与えられた引数に対して+1をするような簡単な処理を書いてみます。これをudf.pyというファイル名で保存して、HDFSにアップします。

#!/usr/bin/python

@outputSchema("ryear:int")
def addyear(year):
  return year + 1

上のUDFを呼び出すPigScriptは以下のように定義します。

REGISTER udf.py USING jython AS myfuncs;

input_data = LOAD input.txt USING PigStorage() AS (label:chararray,year:int,day:chararray,time:chararray);
filter_data = FOREACH input_data GENERATE label, myfuncs.addyear(year), day, time;
group_data = GROUP filter_data BY year;
max_data = FOREACH group_data GENERATE group, MAX(input_data.time);
STORE max_data INTO result;
$  zipinfo /usr/lib/pig/contrib/piggybank/java/piggybank.jar
Archive:  /usr/lib/pig/contrib/piggybank/java/piggybank.jar
-rw-r--r--  2.0 unx     1786 b- defN 12-Oct-05 19:14 org/apache/pig/piggybank/evaluation/ExtremalTupleByNthField$HelperClass.class
-rw-r--r--  2.0 unx     6391 b- defN 12-Oct-05 19:14 org/apache/pig/piggybank/evaluation/ExtremalTupleByNthField.class
-rw-r--r--  2.0 unx     1497 b- defN 12-Oct-05 19:14 org/apache/pig/piggybank/evaluation/MaxTupleBy1stField$Final.class
-rw-r--r--  2.0 unx     1553 b- defN 12-Oct-05 19:14 org/apache/pig/piggybank/evaluation/MaxTupleBy1stField$Initial.class
-rw-r--r--  2.0 unx     1518 b- defN 12-Oct-05 19:14 org/apache/pig/piggybank/evaluation/MaxTupleBy1stField$Intermediate.class
-rw-r--r--  2.0 unx     3752 b- defN 12-Oct-05 19:14 org/apache/pig/piggybank/evaluation/MaxTupleBy1stField.class
-rw-r--r--  2.0 unx     3611 b- defN 12-Oct-05 19:14 org/apache/pig/piggybank/evaluation/datetime/DiffDate.class
-rw-r--r--  2.0 unx     3119 b- defN 12-Oct-05 19:14 org/apache/pig/piggybank/evaluation/datetime/convert/CustomFormatToISO.class
-rw-r--r--  2.0 unx     2758 b- defN 12-Oct-05 19:14 org/apache/pig/piggybank/evaluation/datetime/convert/ISOToUnix.class
-rw-r--r--  2.0 unx     2761 b- defN 12-Oct-05 19:14 org/apache/pig/piggybank/evaluation/datetime/convert/UnixToISO.class
-rw-r--r--  2.0 unx     3079 b- defN 12-Oct-05 19:14 org/apache/pig/piggybank/evaluation/datetime/diff/ISODaysBetween.class
-rw-r--r--  2.0 unx     3088 b- defN 12-Oct-05 19:14 org/apache/pig/piggybank/evaluation/datetime/diff/ISOHoursBetween.class
-rw-r--r--  2.0 unx     3106 b- defN 12-Oct-05 19:14 org/apache/pig/piggybank/evaluation/datetime/diff/ISOMinutesBetween.class
-rw-r--r--  2.0 unx     3097 b- defN 12-Oct-05 19:14 org/apache/pig/piggybank/evaluation/datetime/diff/ISOMonthsBetween.class
-rw-r--r--  2.0 unx     3102 b- defN 12-Oct-05 19:14 org/apache/pig/piggybank/evaluation/datetime/diff/ISOSecondsBetween.class
Pig Oozie Setting

まずはPig,jythonyumパッケージがinstallされていることを確認します。

$ yum list installed | grep pig
hadoop-pig.noarch      0.8.1+28.39-1    @cloudera-cdh3

$ yum list installed | grep jython
jython.x86_64          2.2.1-4.8.el6    @base

PigのMapReduceをOozie経由で実行するためにはPigファイルをHDFS上に設置する必要があります。HDFS上へのファイルアップもディレクトリの設置ルールがあったり、workflowで呼び出したいファイルを定義するなど幾つか覚えなければならない事項があります。ここではHDFS上の設定ファイルの設置の仕方について記述します。workflowを呼び出すファイルは後述するproperitesで記述します。workflowの中で呼び出したいPig Scriptファイルパスを自由に定義できたりしますが、ここでは分かりやすくworkflowが呼び出されるディレクトリに実行したいpigファイルと自分で記述したUDFファイルを設置します。workflowのディレクトリ直下にlibというディレクトリを設置し、pigやjythonなどのjarファイルを設置します。このlibディレクトリに設置したファイルは自動的に読み込まれます。

/user/username/tmp/workflow.xml
/user/username/tmp/coordinator/coordinator.xml
/user/username/tmp/script/test.pig
/user/username/tmp/script/udf.py
/user/username/tmp/lib/pig-core.jar
/user/username/tmp/lib/pig-0.8.1-cdh3u5-core.jar
/user/username/tmp/lib/piggybank.jar
/user/username/tmp/lib/jython.jar
/user/username/tmp/lib/jython-2.2.1.jar

$ alias hdfs
hdfs='/usr/lib/hadoop-0.20/bin/hadoop fs'
$ hdfs -put workflow.xml tmp
$ hdfs -put test.pig tmp/script
$ hdfs -put udf.py tmp/script
$ hdfs -put /usr/lib/pig/pig-* tmp/lib
$ hdfs -put /usr/lib/pig/contrib/piggybank/java/piggybank.jar tmp/lib
$ hdfs -put /usr/share/java/jython*.jar tmp/lib
Pig Oozie Workflow

Pig Cookbook はてなブックマーク - Pig Cookbook
Oozie Specification, a Hadoop Workflow System はてなブックマーク - Oozie -
この辺を参考にしながら以下のようなworkflowを定義しHDFSにアップします。簡単な説明を加えておくと${}で定義される箇所は変数です。変数の値はoozie clientのpropertiesファイルから渡ってきます。job-tracker,name-nodeを指定したり、outputディレクトリを自動で消したりできます。使用するPIgのスクリプトはscriptタグの中に記述します。またPigスクリプトから呼び出すUDFはfileタグで記述します。

<workflow-app xmlns="uri:oozie:workflow:0.1" name='pig-wf'>
     <start to='pig-test'/>
     <action name='pig-test'>
        <pig>
          <job-tracker>${jobTracker}</job-tracker>
          <name-node>${nameNode}</name-node>
          <prepare> <delete path="${nameNode}/${output_dir}"/></prepare>
          <configuration>
            <property>
              <name>mapred.map.output.compress</name>
              <value>false</value>
            </property>
            <property>
              <name>mapred.job.queue.name</name>
              <value>${queueName}</value>
            </property>
            <property>
              <name>mapred.child.java.opts</name>
              <value>-server -Xmx1024M -Djava.net.preferIPv4Stack=true -Dtest=QA</value>
            </property>
          </configuration>
          <script>test.pig</script>
          <param>input_file=${input_file}</param>
          <param>output_dir=${output_dir}</param>
          <file>test.udf</file>
        </pig>
     <ok to="end"/>
        <error to="fail"/>
     </action>
     <kill name="fail">
         <message>Pig failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
     </kill>
     <end name="end"/>
</workflow-app>
Pig Oozie Properties

propertiesファイルはworkflowを呼び出すパスの定義、workflowに渡すパラメータの設定ファイルです。以下にサンプルを記載します。このサンプルをpig-job.propertiesファイルとして保存し、oozieコマンドでjobを登録します。また登録したjobが正常に動作していることも確認します。

nameNode=hdfs://localhost:8020
jobTracker=localhost:8021
queueName=default
examplesRoot=tmp
user.name=yuta

oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/
input_file=/user/${user.name}/${examplesRoot}/input/input.txt
output_dir=/user/${user.name}/${examplesRoot}/output/

$ /usr/bin/oozie job -oozie http://localhost:11000/oozie -config pig-job.properties -run
$ /usr/bin/oozie jobs -oozie http://localhost:11000/oozie      
Job ID                                   App Name     Status    User      Group     Started                 Ended                   
------------------------------------------------------------------------------------------------------------------------------------
0000020-121223110114595-oozie-oozi-W     pig-wf       SUCCEEDED yuta      users     2012-12-23 05:13        2012-12-23 05:15
Pig Oozie Coordinator

Oozie Coord Use Cases · yahoo/oozie Wiki · GitHub はてなブックマーク - Oozie Coord Use Cases · yahoo/oozie Wiki · GitHub
定期処理化を設定するためにOozie Coordinatorを作成します。workflowと同様にxmlファイルを定義します。以下のサンプルでは60分毎にJobを実行するような設定を書きます。${変数名}にはpropertiesファイルで書かれた変数が渡ってきます。

<!-- coordinator -->
<coordinator-app name="pig_test" frequency="${freq}" start="${startTime}" end="${endTime}" timezone="${timezone}" xmlns="uri:oozie:coordinator:0.1">
   <controls>
      <timeout>${timeout}</timeout>
   </controls>
   <action>
      <workflow>
         <app-path>${workflowPath}</app-path>
      </workflow>
   </action>     
</coordinator-app>

<!-- properties -->
nameNode=hdfs://localhost:8020
jobTracker=localhost:8021
queueName=default
examplesRoot=tmp
user.name=yuta

freq=60
startTime=2012-01-01T05:00Z
endTime=2013-01-01T06:00Z
timezone=UTC
timeout=10

oozie.coord.application.path=${nameNode}/user/${user.name}/${examplesRoot}/coordinator
workflowPath=${nameNode}/user/${user.name}/${examplesRoot}/
input_file=/user/${user.name}/${examplesRoot}/input/input.txt
output_dir=/user/${user.name}/${examplesRoot}/output/
$ usr/bin/oozie job -oozie http://localhost:11000/oozie -run -config pig-coordinator.properties job: 0000008-121229133003678-oozie-oozi-C
$ /usr/bin/oozie job -oozie http://localhost:11000/oozie -info 0000008-121229133003678-oozie-oozi-C
Job ID : 0000008-121229133003678-oozie-oozi-C
------------------------------------------------------------------------------------------------------------------------------------
Job Name : pig_test
App Path : hdfs://localhost:8020/user/yuta/tmp/coordinator/coordinator.xml
Status   : RUNNING
------------------------------------------------------------------------------------------------------------------------------------
ID                                       Status    Ext ID                               Err Code  Created          Nominal Time     
0000008-121229133003678-oozie-oozi-C@1   SUCCEEDED 0000009-121229133003678-oozie-oozi-W -         2012-12-29 04:49 2012-01-01 05:00 
その他

oozieの実行に関するデータはMysqlに格納されています。実行データを奇麗にしたい場合はoozieコマンドのkillで消す事ができますが一つずつのJobしか消せないので、一括で消したい場合はMysqlのDELETEを使ってやると良いと思います。

mysql> use oozie
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+-----------------+
| Tables_in_oozie |
+-----------------+
| COORD_ACTIONS   |
| COORD_JOBS      |
| SLA_EVENTS      |
| WF_ACTIONS      |
| WF_JOBS         |
+-----------------+
5 rows in set (0.01 sec)

mysql> show create table COORD_ACTIONS;
| COORD_ACTIONS | CREATE TABLE `COORD_ACTIONS` (
  `id` varchar(255) NOT NULL,
  `action_number` int(11) DEFAULT NULL,
  `action_xml` text,
  `console_url` varchar(255) DEFAULT NULL,
  `created_conf` text,
  `error_code` varchar(255) DEFAULT NULL,
  `error_message` varchar(255) DEFAULT NULL,
  `external_status` varchar(255) DEFAULT NULL,
  `missing_dependencies` text,
  `run_conf` text,
  `time_out` int(11) DEFAULT NULL,
  `tracker_uri` varchar(255) DEFAULT NULL,
  `job_type` varchar(255) DEFAULT NULL,
  `bean_type` varchar(31) DEFAULT NULL,
  `created_time` datetime DEFAULT NULL,
  `external_id` varchar(255) DEFAULT NULL,
  `job_id` varchar(255) DEFAULT NULL,
  `last_modified_time` datetime DEFAULT NULL,
  `nominal_time` datetime DEFAULT NULL,
  `rerun_time` datetime DEFAULT NULL,
  `sla_xml` text,
  `status` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `I_CRD_TNS_CREATED_TIME` (`created_time`),
  KEY `I_CRD_TNS_DTYPE` (`bean_type`),
  KEY `I_CRD_TNS_EXTERNAL_ID` (`external_id`),
  KEY `I_CRD_TNS_JOB_ID` (`job_id`),
  KEY `I_CRD_TNS_LAST_MODIFIED_TIME` (`last_modified_time`),
  KEY `I_CRD_TNS_RERUN_TIME` (`rerun_time`),
  KEY `I_CRD_TNS_STATUS` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |