2010年8月21日土曜日

1台でOozieを試してみる(CentOS + Cloudera(CDH3 beta2))

概要
・1台のLinux環境で、簡単に、Oozieを試してみます。
・CentOS(1台)でCloudera社のHadoop(CDH3beta2)が動いていることを前提とします。 → 構築方法はこちら

※この記事はCDH3beta2用です、CDH3beta3の人はこちら

その他の記事

Hadoop(1台構成)HBase,Hive,Pig,HUE,Oozie等(1台構成)Hadoop(複数台構成)
CentOSこちらHBase,Hive,Pig, HUE(旧Cloudera Desktop), Oozieこちら
UbuntuこちらHBase,Hive,Pig,HUE(旧Cloudera Desktop)

必要なもの
・Linux(CentOS)+Cloudera版Hadoop環境(1台) → 構築方法はこちら
・インターネット接続
・Cloudera社のOozieのパッケージ(yumでインターネットからインストール)

作業手順

1. インストール

Linux環境にて、rootで作業します。

1-0. Cloudera社のCDH3リポジトリ確認

Cloudera社のCDH3リポジトリが必要ですので、既に設定されていないか確認します。
ls /etc/yum.repos.d/
で、cloudera-cdh3.repoが存在すれば、OKのはずです。無い場合は、
cd /etc/yum.repos.d/
wget http://archive.cloudera.com/redhat/cdh/cloudera-cdh3.repo
とします。

1-1. Oozieパッケージのインストール

インストール
yum -y install oozie oozie-client

確認
yum list oozie* | grep installed

1-2. Oozieサーバーまわりの設定

・MySQLのインストール

インストール
yum -y install mysql mysql-server

初期設定(ここでは、DBサービスを起動して、コマンドラインの設定ウィザードで初期設定を行いました)
service mysqld start
mysql_secure_installation
すべてデフォルト(DBのrootパスワードは、覚えておきましょう)

・Tomcatのインストール

yum -y install tomcat5
(ここでは、まだ起動させません)
本来(Oozieやcloudera社のドキュメント)ではtomcat6を使っているようですが、ここでは、CentOS5で容易に利用できるTomcat5を使いました。

・ExtJS libraryの設定
http://www.sencha.com/learn/Ext_Version_Archives
からext-2.2.zipをダウンロードします。 (2.2.1とか3は不可です)
ダウンロードファイルを、例えば/tmp/ext-2.2.zipとして配置したとして、

cd /usr/lib/oozie
./installextjs.sh /tmp/ext-2.2.zip
Oozie WAR '/usr/lib/oozie/wars/oozie.war' file now contains ExtJS library

・MySQL JDBC connector library

http://www.mysql.com/downloads/connector/j/5.1.htmlから、mysql-connector-java-5.1.13.tar.gzを、ダウンロードします。
ダウンロードファイルを、例えば/tmp/mysql-connector-java-5.1.13.tar.gzとして配置したとして、

mkdir /tmp/jdbc/
cd /tmp/jdbc/
tar xzf /tmp/mysql-connector-java-5.1.13.tar.gz
cp /tmp/jdbc/mysql-connector-java-5.1.13/mysql-connector-java-5.1.13-bin.jar /usr/share/tomcat5/common/lib/

・OozieをTomcatに配備

cp /usr/lib/oozie/wars/oozie.war /var/lib/tomcat5/webapps/

設定ファイル/etc/tomcat5/tomcat5.confを編集します。以下の行をファイルの最後にでも追加します。
# oozie
JAVA_OPTS="$JAVA_OPTS -Doozie.config.dir=/usr/lib/oozie/conf"

・Oozieの設定ファイル

vi /usr/lib/oozie/conf/oozie-site.xml
二か所のコメントアウト部分(「Disable automatic DB schema creation」と「DBコネクション関連の設定」で、<!--と-->で囲まれている部分)を、有効にします。
特に、oozie.db.schema.createのvalueはtrueに変更(もとはfalse)します。
以下のような設定を有効にします。
<property>
<name>oozie.db.schema.create</name>
<value>true</value>
<description>
Creates Oozie DB.
</description>
</property>

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

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

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

<property>
<name>oozie.service.DataSourceService.jdbc.password</name>
<value>oozie</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.
</description>
</property>

・MySQL
mysql -u root -p
mysql> grant all privileges on oozie.* to 'oozie'@'localhost' identified by 'oozie';
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye

・Oozie Server(Tomcat)の起動と自動DB作成

Tomcatを起動させます。初回起動時に、自動で必要なDBが作成されます。
service tomcat5 start

初回起動時にDBが作成されるので、確認します。
mysql -u oozie -p
Enter password:(パスワードは、上記の設定通りなら"oozie")
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 20
Server version: 5.0.77 Source distribution

sType 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| oozie |
+--------------------+
2 rows in set (0.00 sec)

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 |
+---------------------+
| ACTIONS |
| VERSION |
| WF_PROCESS_INSTANCE |
| WORKFLOWS |
+---------------------+
4 rows in set (0.00 sec)
mysql> exit
Bye
1-3. 動作確認
コマンドラインから動作確認
OOZIE_URL=http://localhost:8080/oozie oozie admin -version
Oozie server build version: 1.6.2-0.20.2-320--SNAPSHOT

ブラウザから動作確認
http://ホスト名:8080/oozie
画面例


(おまけ)
ドキュメントを入れたいならば、
cp /usr/lib/oozie/wars/ooziedocs.war /var/lib/tomcat5/webapps/
として、
http://ホスト名:8080/ooziedocs

2. exampleを動かしてみる

2-1. example準備

exampleのファイルを展開します。
mkdir /tmp/oozie-example
cd /tmp/oozie-example/
tar xzf /usr/lib/oozie/oozie-examples.tar.gz
cd examples/

prepare-examples.shを編集します。ファイル下の方の、以下の部分を変更します。
echo "jobTracker=localhost:9001" >> ${example}-job.properties
echo "nameNode=hdfs://localhost:8020" >> ${example}-job.properties
例えば、Clouderaのお手軽デフォルト設定のHadoopなら、以下のように変更します。
echo "jobTracker=localhost:8021" >> ${example}-job.properties
echo "nameNode=hdfs://localhost:8020" >> ${example}-job.properties

example用の設定やテストファイルを作成
./prepare-examples.sh
hadoop fs -put input-data input-data
hadoop fs -put workflows /tmp/`whoami`/workflows

2-2. exampleを実行してみる

・実行
oozie job -oozie http://localhost:8080/oozie -config map-reduce-job.properties -run
job: 0000000-100820220527261-oozie-tomc

・ジョブの様子を確認(実行時に表示されるJob Idを引数に)
oozie job -oozie http://localhost:8080/oozie -info 0000000-100820220527261-oozie-tomc
Job Id: 0000000-100820220527261-oozie-tomc
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Workflow Name : map-reduce-wf
App Path : hdfs://localhost:8020/tmp/root/workflows/map-reduce
Status : RUNNING
Run : 0
User : root
Group : users
Created : 2010-08-20 14:30 +0000
Started : 2010-08-20 14:30 +0000
Last Modified : 2010-08-20 14:30 +0000
Ended : -

Actions
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Action Name Type Status Transition Ext. Id Ext. Status Error Code Started Ended
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
hadoop1 map-reduce RUNNING - job_201008202153_0002 RUNNING - 2010-08-20 14:30 +0000 -
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

・同様に他の.propertiesファイルも試すことができます。

oozie job -oozie http://localhost:8080/oozie -config map-reduce-job.properties -run
job: 0000000-100820214321863-oozie-tomc

oozie job -oozie http://localhost:8080/oozie -config hive-job.properties -run
job: 0000005-100820220527261-oozie-tomc

oozie job -oozie http://localhost:8080/oozie -config pig-job.properties -run
job: 0000004-100820220527261-oozie-tomc

それぞれの実行内容はworkflowsの中のディレクトリに書いてあります。

0 件のコメント:

コメントを投稿