Asakusa Frameworkは、複数マシンで分散処理するバッチアプリケーションを開発する為のフレームワーク。
実行基盤としてHadoopやSpark等を使用する。
(公開当初はウルシステムズ社が開発していたが、ノーチラス・テクノロジーズ社に移った)
|
|
|
|
|
|
|
AsakusaFWは、(複数のマシンで)分散して処理を行うバッチアプリケーションを開発する為のフレームワーク。[/2015-07-04]
AsakusaFWの独自言語(Asakusa DSL)で処理を記述し、コンパイルすることで、実行用のバイナリーを生成する。
AsakusaFWを使って開発する/開発したアプリケーションのことを「Asakusaアプリケーション」と呼ぶ。
AsakusaアプリケーションはAsakusaFW独自の言語(Asakusa DSL)で記述する。
ただ、独自言語と言っても、ベースはJava。つまり、Javaをホスト言語とする内部DSLである。
“独自言語”と言うよりはライブラリーと言ってもいいんじゃないかと思う。
(ライブラリーの使い方(どのクラスを使ってどのメソッドを呼び出せばいいか)を覚えるのと大差ない)
また、Javaのコンパイラーの機能を用いて独自のチェックをしたり(Eclipseを使っている場合、EclipseのJavaエディター上でエラーが表示される)、一部のクラスを自動生成したりする。
AsakusaFWは、実行基盤としてHadoopやApache
SparkやM3BPを使用する。[/2016-04-12]
ソース(Asakusa DSL)をコンパイルすることで、それぞれの環境で実行する為のバイナリー(主にjarファイル)が生成される。(各環境向けにソース(Asakusa DSL)を修正する必要は無い)
M3BPは単一ノードで動作するので、小さめ(数十GB)のデータの処理に適している。[2016-04-12]
それより大きい場合はほとんどのケースでSparkが適している。
単純な集計処理で集計キーの種類が多いような場合はMapReduceが適している。
データが単ノードのメモリー上に乗り切る場合、M3BPが最速。
Asakusaアプリケーションの開発手法には、CI(継続的インテグレーション)の考え方が取り入れられている。
その一環として、単体テストを実行する方法が提供されている。
AsakusaFWのテストドライバーというクラスを使って単体テストを実行するのだが、単体テスト用の入力データと検証データをExcelで書けるのも面白い。
(Excelファイルの雛形もデータ定義から自動生成される)
単体テスト(JUnit)実行時にExcelファイルからデータが読まれ、出力結果をExcelファイル上の検証データと比較する。
AsakusaFWを使って開発する/開発したアプリケーションのことを「Asakusaアプリケーション」と呼ぶ。[2015-07-04]
Asakusaアプリケーションは概ね以下のような手順で開発する。
まずは、Asakusaアプリケーションの開発環境(Asakusaプロジェクト)を構築する必要がある。
Asakusaプロジェクトは(AsakusaFWのライブラリーを含んだ)普通のJavaプロジェクトである。
AsakusaアプリケーションはEclipseで開発することが想定されているが、別のIDEを使うことも可能。
(EclipseプラグインのShafuでAsakusaFWに必要なほとんど全ての作業が行えるので、Eclipseの方が便利だと思うが)
Asakusaアプリケーションの作成は、DSLを記述することで行う。
Asakusa DSLはバッチDSL・フローDSL・オペレーターDSLの三層に分かれている。
また、それとは別にDMDLというものがある。
データモデルを定義したら、DMDLのコンパイルを行う。
ここで生成したJavaクラスを、オペレーターDSLやジョブフローを記述するフローDSLで使用する。
バッチDSLまで記述が終わったら、バッチのコンパイルを行う。
これにより、実行に必要なjarファイル類が生成される。
コンパイルは、コマンドライン(シェル)ならGradle、EclipseならShafuを使って行う。
コンパイルして生成されたバイナリー(jarファイル等)を運用環境に配置(デプロイ)して実行する。
→運用環境の構築
Asakusaアプリケーションを実行する為のシェルも提供されている。
→YAESS