goo blog サービス終了のお知らせ 

ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

AsakusaFW0.6.0大変革

2014-02-17 23:31:52 | PG(分散処理)

Asakusa Framework 勉強会 2014冬で話題にしたAsakusa Framework0.6.0が出ましたよ。
リリースノート

今回は色々大きい機能変更・機能追加が!

まず、標準のビルドシステムが今までのMavenからGradleに変わった。
と言っても、当面はMavenでも今まで通り使用できるけど。
でもGradleプラグインの方が環境構築が簡単なので(Maven版だとMavenをインストールする必要があるが、GradleプラグインだとJavaだけ入っていればいい)、今後はGradleプラグインを使うのがお薦め。
Jinrikishaも、内部ではGradleを使うように変わった模様) 


それから、Shafuが公開された。(前からひっそり公開されていたけれど、ドキュメントが今回公開された)

ShafuはEclipseプラグインで、これをEclipseにインストールしておくと、Asakusaプロジェクト作りからDMDLコンパイルやバッチのビルドまで、全てEclipse上で行うことが出来る。
裏ではGradleのコマンドを実行しているだけなんだけど、手動でgradleコマンドを実行しなくてもいいので、とても便利♪(gradleコマンドの引数をよく忘れるから^^;)

開発環境作りが、LinuxならJinrikishaで一発だったけどWindowsは面倒だったのが、Shafuを使えばWindowsでもとっても簡単。

上で「Gradleプラグインがお薦め」と書いたけど、Shafuを使えばGradleを意識する必要も無い(笑)


テストドライバーのテストデータ指定方法の機能追加も大きい。

今までExcelファイルでFlow DSL(やBatch DSL)のテストデータを書いていたが(JSONも使えたけど)、Javaプログラムでデータをコーディングできるようになった
データをプログラムで生成したいような場合に便利。


そして今回びっくりした機能と思われるのが、(まだサンドボックスだから正式機能じゃないけど、)テスト用のエミュレーションモード

AsakusaFWではFlowやBatchのテスト時は実際にHadoopを実行する。この実行方式が、今まではhadoopシェルを経由して実行していた(つまりJavaVMが別だった)のが、AsakusaFWのテストドライバーと同一のJavaVM上で動かせるようになった。
これがどういう事かと言うと、Operatorクラスに(Eclipseのデバッグ機能で)ブレークポイントを指定しておくと、FlowやBatchのテストをデバッグ実行することで、ブレークポイントで止めてデータを見たりすることが出来るのだぁ!
(なお、Flow DSLやBatch DSLのクラスのdescribeメソッドにブレークポイントを指定しても駄目ですぜ。アドベントカレンダーにも書いた通り、Flow DSLやBatch DSLのクラスが実行されるのはコンパイル時なので、実行時には呼ばれないから)

テストドライバー以外に、バッチを実行するクラス(BatchTestRunner)も公開された。
YAESSの代わりにこのクラスにバッチIDを指定してEclipseからデバッグ実行することで、バッチを実行させ、ブレークポイントで止めることが出来る。


あと、もしかしたら大きいかもしれないのが、(これもサンドボックスだけど)ローカルモードでのジョブ実行の自動切り換え

これは開発用の機能ではなくて運用用の機能。
通常はHadoopクラスター上で実行するが、データが小さいときはローカルモードで実行する。
クラスターの切り替えは以前からジョブキューで出来たが、ジョブキューでスタンドアローンモードと切り替えるより、今回の機能の方が良さそう。(少なくとも設定は非常に簡単)


以上、0.6.0はかなり大きな変更が入っている。
大きめのサンドボックス機能もあるので0.5.4でも良かったんじゃないかなーと思わなくもないけど^^;、Gradleへ移行したという意味では0.6でもおかしくないかな。