Oozie >

note.pngDEPRECATED!: このバージョンのOozieは古いです。ご利用は非推奨です。Oozieインストールをご参照ください。

目次

Yahoo! 公式サイト配布版

  • 2010年7月現在、ソース配布のみです。

ビルド

Ver. 2.0.x

  • 以下の手順は、公式サイトの Installing and Running に基づく利用DBにはHSQLDBを用いたビルド方法です。
  1. 必要なソフトウェアをインストールしておきます。
    No.ソフトウェア要件検証したバージョン備考
    1Java6+OpenJDK 1.6.0_0
    2Maven2.0.10+2.2.1依存関係により2.0.11は不可*1
  2. このページのリンクからソースアーカイブをダウンロードし解凍します。2010/07/03時点でのバージョンは、2.0.2.1 です。
  3. ※通常、必要はないはずですが、ビルドを通すために以下の対応が必要でした。
    1. 検証時点で、java.net のリポジトリが正常に稼働していなかったため、pom.xml の105行目からを以下のようにコメントアウトします。もし、これをせずにビルドを実行し、Mavenのローカルリポジトリ(通常、${HOME}/.m2/)が壊れたライブラリで汚染された場合には、一度ローカルリポジトリを削除してから再ビルドしてください。
      1. <!--
      2. <repository>
      3.     <id>java.net</id>
      4.     <url>https://maven-repository.dev.java.net/nonav/repository</url>
      5.     <layout>legacy</layout>
      6.     <snapshots>
      7.         <enabled>false</enabled>
      8.     </snapshots>
      9. </repository>
      10.  -->
    2. 上記の影響またはライセンス関連のためか、com.oracle:ojdbc6:jar:11.1.0.7.0 の依存を満たせないため、手動でダウンロードしローカルリポジトリに追加します。
      $ mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.1.0.7.0 \
      > -Dpackaging=jar -Dfile=./ojdbc6-11.1.0.7.0.jar
  4. Mavenプラグインインストールのため、以下のようにシェルスクリプトを実行します。※ただし、これはbashスクリプトらしいのですが shebang が不適切(#!/bin/sh)なので、適切に変更してから実行します。
    $ build-setup/setup-maven.sh
    ...
    Maven documentation generation pluging for Oozie installed successfully
  5. Oozie Web Console には、ExtJS 2.2 ライブラリ*2が必要になりますので、以下の要領でソースに含めます。最後に、WARにExtJS 2.2 ライブラリを含める場合には、この手順を省略しても構いません。
    1. ExtJS 2.2 のZIPアーカイブをダウンロードします。
    2. このZIPアーカイブを webapp/src/main/webapp/ext-2 に解凍します。
  6. Oozieディストリビューション本体をビルドします。配布リソースは、distro/target 以下に生成されます。
    1. デフォルトでは、Hadoop 0.20.2 対応版がビルドされます。
      $ bin/mkdistro.sh -DskipTests
    2. Yahoo! Hadoop 0.20.S Virtual Machine (HadoopWithSecurity 0.20.104.1) 対応版をビルドする場合
      1. 依存が解決できない以下の JAR を Hadoop 本体のライブラリを使って Maven のローカルリポジトリに追加しておきます。
        $ mvn install:install-file -DgroupId=org.apache.hadoop -DartifactId=hadoop-core -Dversion=0.20.104.1 \
        > -Dpackaging=jar -Dfile=/usr/local/hadoop/hadoop-core-0.20.104.1.1006042001.jar
        $ mvn install:install-file -DgroupId=org.apache.hadoop -DartifactId=hadoop-test -Dversion=0.20.104.1 \
        > -Dpackaging=jar -Dfile=/usr/local/hadoop/hadoop-test-0.20.104.1.1006042001.jar
        $ mvn install:install-file -DgroupId=org.apache.hadoop -DartifactId=hadoop-streaming -Dversion=0.20.104.1 \
        > -Dpackaging=jar -Dfile=/usr/local/hadoop/contrib/streaming/hadoop-streaming-0.20.104.1.1006042001.jar
      2. ビルドします。
        $ bin/mkdistro.sh -DskipTests -DhadoopVersion=0.20.104.1 -Doozie.test.hadoop.security=kerberos
    3. Yahoo! Distribution of Hadoop 0.20.104.2 についても、上記と同様に要領でビルドできるでしょう。
  7. ExtJS 2.2 ライブラリをまだ含めていない場合には、ライブラリをダウンロードし、Oozie のWARモジュールに含めます。
    $ cd distro/target/oozie-<version>---distro.dir/oozie-<version>--/
    $ ./installextjs.sh /path/to/ext-2.2.zip
    Oozie WAR './wars/oozie.war' file now contains ExtJS library

Ver. 1.6.x

  • 2010/07/03時点でのバージョンは、1.6.2 です。
  • ビルド前に、上記と同様の修正が必要です。
  • しかし、Maven が以下の依存を解決できずにビルドに失敗します。3)は入手不可能のようです。
    1) org.apache.commons:commons-cli:jar:2.0-SNAPSHOT
    2) org.apache.hadoop:hadoop-core:jar:0.20.1
    3) org.apache.hadoop:pig:jar:0.2.0-H20-J660

インストール

  • 前節を参考にビルドします。

クライアント

  1. ビルドされたクライアントtarボールを展開して適当なところ(/usr/local/oozie-client など)に配備します。適宜、PATHを通します。
    $ tar xvzf oozie-client.tar.gz

サーバ

  1. 必要なランタイムをインストールしておきます。
    No.ソフトウェア要件検証したバージョン備考
    1Java6+OpenJDK 1.6.0_0
    2Hadoop0.20+0.20.2、0.20.104.1参考: Hadoopセットアップ
    3Pig0.7+0.7.0参考: Pig
    4Tomcat明示なし6.0.18、6.0.26サーブレットコンテナであれば他のものでも問題ないでしょう。
  2. ビルドされた配布物一式を適当な場所(例えば、/usr/local/oozie)に配備します。
  3. ビルドされた(上記の例であれば、/usr/local/oozie/wars にある) oozie.warooziedocs.war をサーブレットコンテナに配備します。Tomcat の場合、配備先は webapps/ になります。
  4. Tomcat の設定ファイル(Debian の場合には、/etc/default/tomcat6)に以下の要領で追加します。
    1. # Oozie のリスナ開始時に java.security.AccessControlException がスローされましたので
    2. # とりあえず無効にしておきます。※適切な変更が必要。
    3. TOMCAT6_SECURITY=no
    4. ...
    5. # Oozie の設定ファイル格納ディレクトリをポイントします。
    6. JAVA_OPTS="-Doozie.config.dir=/usr/local/oozie/conf"
  5. Oozie の設定ファイル(例えば、/usr/local/oozie/conf/oozie-site.xml)を必要に応じて変更します。MySQL を利用する場合には、Oozieインストール(Cloudera配布版)をご参照ください。
  6. Tomcat を起動させます。Webコンソールとドキュメントへのアクセスは以下の通りです。
  7. 【参考】起動および停止のログを確認すると、まだ動作が少々あやしいようです(使用しないドライバをロードする必要はないでしょう)。原因は不明(DB初期化不備?)ですが、Webコンソールも正常に動作しませんでした(ExtJSライブラリの参照に失敗しています)。
    # 起動ログ抜粋
    ...
    SEVERE: Null component Catalina:type=JspMonitor,name=jsp,WebModule=//localhost/oozie,
    J2EEApplication=none,J2EEServer=none
    ...
    # 停止ログ抜粋
    ...
    Jul 4, 2010 12:56:39 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
    SEVERE: A web application registered the JBDC driver [com.mysql.jdbc.Driver] but failed to unregister it
    when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
    Jul 4, 2010 12:56:39 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
    SEVERE: A web application registered the JBDC driver [oracle.jdbc.OracleDriver] but failed to unregister it
    when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
    Jul 4, 2010 12:56:39 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
    SEVERE: A web application registered the JBDC driver [org.hsqldb.jdbcDriver] but failed to unregister it
    when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
    Jul 4, 2010 12:56:39 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
    SEVERE: A web application appears to have started a thread named [HSQLDB Timer @1664a9b] but has failed to stop it.
    This is very likely to create a memory leak.
    Jul 4, 2010 12:56:39 PM org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
    SEVERE: A web application created a ThreadLocal with key of type [null]
    (value [org.apache.oozie.util.XLog$Info$1@efe27b]) and a value of type [org.apache.oozie.util.XLog.Info]
    (value [org.apache.oozie.util.XLog$Info@fe135d]) but failed to remove it when the web application was stopped.
    To prevent a memory leak, the ThreadLocal has been forcibly removed.
    ...

HadoopWithSecurity クラスタとのセキュアな連携設定

  • Oozie が HadoopWithSecurity クラスタとセキュアに連携することにより、Oozie サーバはジョブを発行したユーザの代わりに(Hadoop のスーパーユーザ権限で)そのユーザとしてジョブを実行します。
  • 以下は、設定の容易な同一サーバ上の Yahoo! Hadoop 0.20.S Virtual Machine と連携する想定で記述しています。ホスト名、アドレスやプリンシパルのドメインなどについては、適宜、読み替えてください。
  1. Oozie サーバの実行ユーザとKerberosプリンシパルのショートネームが同一である必要があるため、oozie ユーザを追加し、Kerberos プリンシパルを追加しその keytab ファイルを適当な場所に配備します。※ユーザについては、サーブレットコンテナのデフォルト実行ユーザ(例えば、tomcat6 など)をそのまま採用してそちらにプリンシパルをあわせても構いません。
    # adduser oozie
    ...
    # kadmin.local
    Authenticating as principal root/admin@LOCALDOMAIN with password.
    kadmin.local:  add_principal -randkey oozie/localhost
    WARNING: no policy specified for oozie/localhost@LOCALDOMAIN; defaulting to no policy
    Principal "oozie/localhost@LOCALDOMAIN" created.
    kadmin.local:  xst -k oozie.keytab oozie/localhost
    ...
    kadmin.local:  quit
    # mv oozie.keytab /usr/local/oozie/
    # chown oozie.oozie /usr/local/oozie/oozie.keytab
    # chmod 500 /usr/local/oozie/oozie.keytab
  2. サーブレットコンテナの実行ユーザを oozie に変更する設定を行います。
  3. oozie-site.xml: Oozie サーバの Kerberos 認証設定を有効にします。
    1. <property>
    2.     <name>oozie.service.HadoopAccessorService.kerberos.enabled</name>
    3.     <value>true</value>
    4.     <description>
    5.         Indicates if Oozie is configured to use Kerberos.
    6.     </description>
    7. </property>
    8.  
    9. <property>
    10.     <name>oozie.service.HadoopAccessorService.keytab.file</name>
    11.     <value>/usr/local/oozie/oozie.keytab</value>
    12.     <description>
    13.         Location of the Oozie user keytab file.
    14.     </description>
    15. </property>
    16.  
    17. <property>
    18.     <name>oozie.service.HadoopAccessorService.kerberos.principal</name>
    19.     <value>oozie/localhost@LOCALDOMAIN</value>
    20.     <description>
    21.         Kerberos principal for Oozie service.
    22.     </description>
    23. </property>
  4. core-site.xml: HadoopWithSecurity クラスタに、Oozie サーバを Proxy User として受け入れる設定を追加します。Oozie サーバのホスト名(またはアドレス)のリストと、Oozie が代理ができるユーザが所属するUNIXグループをリストします。※このグループは、Oozie が管理するグループとは関係なく、クラスタ側で解決できるUNIXグループであることが重要です。
    1. <property>
    2.     <name>hadoop.proxyuser.oozie.hosts</name>
    3.     <value>127.0.0.1</value>
    4.     <description>
    5.         プロパティ名は、hadoop.proxyuser.#Oozie サーバのプリンシパルのショートネーム#.hosts
    6.     </description>
    7. </property>
    8.  
    9. <property>
    10.     <name>hadoop.proxyuser.oozie.groups</name>
    11.     <value>oozies</value>
    12.     <description>
    13.         プロパティ名は、hadoop.proxyuser.#Oozie サーバのプリンシパルのショートネーム#.groups
    14.     </description>
    15. </property>
  5. 個々の Oozie ワークフローアプリケーションの設定ファイルには、利用する JobTrackerNameNode のプリンシパルをそれぞれ追加します。
    1. mapreduce.jobtracker.kerberos.principal=mapred/localhost@LOCALDOMAIN
    2. dfs.namenode.kerberos.principal=hdfs/localhost@LOCALDOMAIN
  • 参考ログ
    • 設定に問題がない場合には、NameNode の認証ログに以下のような内容が出力されます。oozie ユーザが Proxy User(alice の代理)として機能しているのが分かります。
      2010-07-31 11:43:43,656 INFO ipc.Server: Auth successfull for oozie/localhost@LOCALDOMAIN
      2010-07-31 11:43:43,695 INFO authorize.ServiceAuthorizationManager: Authorization successfull for alice
      via oozie/localhost@LOCALDOMAIN for protocol=interface org.apache.hadoop.hdfs.protocol.ClientProtocol
    • 設定に不備がある場合、ジョブ発行時に以下のようなエラーが発生します。
      $ oozie job -oozie http://localhost:8080/oozie -config map-reduce-job.properties -run
      Error: E0501 : E0501: Could not perform authorization operation,
      User: oozie/localhost@LOCALDOMAIN is not allowed to impersonate alice

サンプルジョブ検証


*1 「Error resolving version for 'org.apache.maven.plugins:maven-project-info-reports-plugin': Plugin requires Maven version 2.1.0」ソースの readme.txt でも、2.2.0 と記述されています。
*2 ライセンスの違いによりバンドルされていない。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-07-30 (月) 11:11:46 (2688d)