Asakusa Framework Advent Calendar 2015の1日目です。
アドベントカレンダーの初日ということで、2015年時点のAsakusa Frameworkの紹介を書いておきたいと思います。
Asakusa Frameworkは、分散バッチアプリケーションを開発・実行する為のフレームワークです。
実行基盤にはHadoopを使うのが基本でしたが、今年の7月から、Sparkを使うことも出来るようになりました(ただし、まだexperimentalですが)。
(ちなみに、去年の目玉はスモールジョブ実行エンジンでした)
AsakusaFWは、公開された当初(2011年)から「実行基盤としてHadoopを使っている」と言っていました。つまり、実行基盤としてHadoopの他に良いものが出てくれば、それで動くようにするかもしれないというスタンスでした。
その一環として去年はスモールジョブ実行エンジンが動くようになったわけですが、これはHadoopの代わりとなって動くものであり、基本的にMapReduceであることは変わりませんでした。
そして今年はSpark上で動くようになり、完全にMapReduceとは違う実行基盤に対応したことになります。
(スモールジョブ実行エンジンは実行時に自動的に切り替わるものでしたが)Spark版は、Asakusaアプリケーションのコンパイルを行うことでSpark用実行バイナリー(jarファイル等)を生成します。
実行時のHadoop版とSpark版の切り替えは、YAESSの引数によって行います。(もちろん、HadoopクラスターにSparkをインストールしておく必要はあります)
$ $ASAKUSA_HOME/bin/yaess-batch.sh HogeBatch $ $ASAKUSA_HOME/bin/yaess-batch.sh spark.HogeBatch
大抵はSpark版の方が早い(実行時間が短い。だいたい、3~5倍くらい)ようですが、比べてみるのは簡単に出来るので、早い方を採用すればいいわけです。
Asakusaアプリケーションのコーディング方法は基本的に公開された当初から変わっていないので(後方互換性を維持しているので)、昔からあるAsakusaアプリケーションも、AsakusaFWのバージョンさえ上げれば(あと、HadoopクラスターでSparkを使えるようにすれば)Spark版で実行することは出来ると思います。
つまり、以前からAsakusaFWを使ってきた人にとってメリットがあると思います。
逆に、これからAsakusaFWを使ってみるか?という人にもメリットがあると思います。
異なる実行基盤で動くことが実証されたので、今後も新しい実行基盤が出てくればそれに対応するかもしれないという話が現実味を帯びてきたわけですから。
AsakusaFWは後方互換性を考慮しているので、昔からコーディング方法(Asakusa DSL)は特に変わっていません。(インストール方法やコンパイル方法等は変わってきましたが)
が、AsakusaFW0.7.3等で新しい機能がだいぶ追加になっています。(「追加」なので、今までの機能はそのまま使えます)
- Direct I/Oのデータフィルター・パスフィルター
- core.emptyやextend等でasを使った書き方が出来るようになった
- Direct I/O API(Operatorのメソッドの中から自由にファイルが読める)
- @directio.line(Direct I/Oで1行ずつ読む)
それから、スモールジョブ実行エンジンを使ってWindows上でフローのテストを行う方法が正式になったのも今年になってからでしたね。当たり前になっていてすっかり忘れていました^^;
それから、AsakusaFWの公式ドキュメントのURLが「http://docs.asakusafw.com
」になったんですよね。まぁ、大抵はググって探すのであまり関係ないかもしれませんが(爆)