Asakusa Framework0.2.1の開発環境インストールのメモ。
|
|
batchappは当初から存在するアーキタイプだが、0.2.4でThunderGateに変更された。[2012-09-01]
したがって、0.2.4以降ではこのアーキタイプは存在せず、使用できない。というか使用する必要が無い。
AsakusaFWはLinuxが対象なのでWindowsは対象外だが、やるだけやってみた。[2011-07-24]
結論から言うと、Eclipseでプログラミング(コーディング・コンパイル)できる環境を作るまでは、Linuxへのインストール手順をWindows上で実施するだけで出来た。
ただしテストを実行するとなると、別途シェルを用意したりする必要がある。[/2011-11-16]
(0.7.1では変なことをしなくてもWindowsでフローのテストが出来る→スモールジョブ実行エンジン
[2014-12-13])
JAVA_HOME | C:\Program Files\Java\jdk1.6.0_22 |
|
ASAKUSA_HOME | C:/cygwin/home/ユーザー/asakusa |
Asakusa Frameworkをインストールする場所。 インストール前に環境変数を設定しておくと、この場所に作られる。 UNIXだと$HOME/asakusaが推奨されているので、Cygwinのその場所にしておこう。 左記の「ユーザー」は、Cygwinでログイン(bashを起動)したときのユーザー。 |
> cd /d C:\workspace > mvn archetype:generate -DarchetypeCatalog=http://asakusafw.s3.amazonaws.com/maven/archetype-catalog.xml途中で聞かれる選択肢は以下の様な感じで指定する。
Choose archetype: |
1 | 2011年7月時点では、選択肢は1つしか無いけど^^; |
Choose version: |
4 | AsakusaFWのバージョンを指定。 ここでは0.2.1を使う。 (0.2-SNAPSHOTが0.2系では最新らしい) |
Define value for property 'groupId': : |
afw-init | MavenのgroupIdのことだと思われる。 |
Define value for property 'artifactId': : |
afw-init | これがプロジェクトのディレクトリー名になる。 |
Define value for property 'version':
1.0-SNAPSHOT: : |
1.0 | どんな値でもいい。 |
Define value for property 'package': example:
: |
init | 生成されるクラスのパッケージ名。 |
Confirm properties configuration: |
y | 上で入力した値の確認。 これで良ければYを入れる。 nとか入れると再度groupIdから入力し直せる。 |
> cd afw-init > mvn assembly:single antrun:run実行が正常に終わると、afw-initの下にtargetというディレクトリーが出来ている他、ASAKUSA_HOMEで指定された場所に 実際にディレクトリーが作られる。
> del /s/q *.java > del /s ex*.sql > del /s *.xls
# The option whether to use a database for Model Generator and ThunderGate (true|false). asakusa.database.enabled=false
> echo dummy={dummy:TEXT;}; > src\main\dmdl\dummy.dmdl
> mvn eclipse:eclipse
> mvn -Declipse.workspace=C:\workspace eclipse:add-maven-repo
最初の方で行っている「mvn archetype:generate〜」の実行は、AsakusaFWでの開発用のプロジェクトディレクトリーを作成するもの。
それを利用して、Windowsでの環境構築用プロジェクトとしてafw-initを作った。
後は実際の開発用プロジェクトを作成してプログラミングしていく。
→WordCountを作る例
Windowsへのインストール手順の最後の方でinit.zip内のプログラムを実行している。[2011-08-05]
これは、以下の作業を毎回手動で実施するのが面倒なので、プログラムで実行できるようにしたもの。
Eclipseへのインポートまで出来れば、AsakusaFWのジョブ・バッチテストクラスまで作ることが出来る。[2011-07-31]
しかしそれを実行しようとすると、Hadoopの実行環境の整備が必要になる。
AsakusaFWはCDH3(Cloudera's Distribution for Apache Hadoop version 3)上で動作する。
CDH3はHadoop0.20ベースだが、AsakusaFWをHadoop0.20.2で動かしてみたところ、動作しなかった。
CDH3は色々パッチを当てているので、元のHadoop0.20とは違う部分がある。(AsakusaFWでは新APIのMultipleOutputsを使っているが、Hadoop0.20.2には入っていない)
そこで、試しにAsakusaFWで使っているHadoopのjarファイルをHadoop0.20.2にコピーしてやったらとりあえず動いた。(→作業手順)
このコピー作業を行うプログラムがinit.zipに入っている。(→作業手順)
が、CDH3は素直にWindowsにインストールできるのを発見したので、このプログラムを使う必要は無くなった。[2011-11-16]
AsakusaFWのジョブテストクラスを実行すると(上記で設定した)Hadoopが起動されるが、その為に$ASAKUSA_HOME/experimental/bin/hadoop_job_run.shというシェルが使われる。[2011-07-31]
(AsakusaFWのJavaプログラムがこのシェルを起動し、そこからHadoopが実行される)
UNIX環境であればそれで全く問題ないのだが、Windows(Cygwin)環境ではJavaからシェルを実行できない。
呼び出し側のプログラムをいじれるのであればbash.exe経由で呼び出すことが出来るのだが、今回は無理。
そこで、exeファイルを用意し、それを呼ばせてそこからシェルを起動する方法をとる。
(以下の方法は、DB(MySQL)を使わない場合の設定。MySQLを使うためには他のシェルも修正する必要がある)
$ cd $ASAKUSA_HOME/experimental/bin $ mv hadoop_job_run.sh hadoop_job_run.sh.org
$ gcc callwinsh.c -o hadoop_job_run.sh.exe※「〜.sh」と「〜.sh.exe」の両方が存在しているとexeの方は呼ばれない為、「〜.sh」は無くしておくこと。
$ cp hadoop_job_run.sh.org hadoop_job_run.win.sh $ vi hadoop_job_run.win.sh
hadoop_job_run.win.sh | hadoop_job_run.sh.org(変更元) | 説明 |
---|---|---|
ASAKUSA_HOME=$(cygpath -u $ASAKUSA_HOME) |
ASAKUSA_HOMEをUNIX用のパスに変換する処理を追加。 | |
LIBJAR=file:/$(cygpath -m $FLOW_JARNAME) |
LIBJAR=$FLOW_JARNAME |
パス区切り文字を「/」に変えてWindowsのフルパスにすると共に、スキーマ「file: 」を付与。 |
LIBJAR="$LIBJAR","file:/$(cygpath -m $i)" |
LIBJAR="$LIBJAR","$i" |
|
RUNCMD="$HADOOP_HOME/bin/hadoop jar
$(cygpath -m $BATCH_RUNTIME_JAR) $TOOL_LAUNCHER_CLASSNAME
$STAGE_CLIENT_CLASSNAME -conf $(cygpath -m $PLUGIN_CONF)
-libjars $LIBJAR $DPROP" |
RUNCMD="$HADOOP_HOME/bin/hadoop jar
$BATCH_RUNTIME_JAR $TOOL_LAUNCHER_CLASSNAME
$STAGE_CLIENT_CLASSNAME -conf $PLUGIN_CONF -libjars $LIBJAR
$DPROP" |
実行対象jarファイルとconfファイルの場所はWindows上のパスにする。 |
PATH | 〜;C:\cygwin\bin |
なお、$ASAKUSA_HOMEのディレクトリーは新しくAsakusaFWのプロジェクトを作る度に更新されるので、上記作業もやり直す必要がある(苦笑)