Asakusa Frameworkを評価してみたところ…
Asakusa Frameworkは以前のバージョン(0.1.0)ではいくつかの懸念点が散見していたが、現バージョン(0.2.3)になってからは大幅に改善されたと日立ソリューションズでは評価している。
以下、バージョンアップに伴う改善点を示しておく(→が0.2.3で改善された点)。
- DB関連での制約:MySQL必須
→データモデル記述用DSL「DMDL」および任意のRDBとHadoopを連携する「WindGate」により他DBも対応可能に - 情報不足:ドキュメント不足やMLなどがない
→ドキュメントが拡充し、ウェブサイトやMLも開設 - 実行管理:Monkey Magic(現Tengine Framework)のみ
→外部システムと任意の方法で連携できる「Yaess」によりJP1/AJSなど他社運用管理ツールとの連携が容易に - 商用サポートなし
→商用サポート開始
では実際、Asakusa Frameworkではどのくらいの効果を得られるのだろうか。吉田氏が紹介した評価環境(ソフトウェア)は以下の通りとなる。
- CDH3u2(Cloudera's Distribution including Apache Hadoop 3 update 2)
- Asakusa FW 0.2.3-RC
- MySQL 5.1.52
ハードウェアには日立のブレードサーバ「HA8000-bd/BD10」を使用した。あえてHadoopにもMySQLにも特別なチューニングをいっさい施さず、Hadoopの設定も最低限に留めている。データベースに対する入出力はWindGateを利用し、入出力するMySQLテーブルには変更を加えていない。試作した処理は、登録IDが1000万件の顧客テーブルと、1億件の履歴からなる履歴テーブルをもとにCREATE TABLEで登録店ID(100店)と利用顧客数および総ポイント数を表示する結果テーブルを生成する。データサイズはHDFS上に展開して4GB程度だ。
開発に要したステップはJavaで10ファイル/222ステップ、DMDLで6ファイル/153ステップのみ。実装はこれだけで完了する。あとはフロー処理部分およびデータモデルからJavaファイルが自動生成されている(28ファイル/2231ステップ)。MapReduceやHDFSについての知識は必要ない。
処理速度に関しても、RDBMSでは29分かかっていた処理が、1ノードなら24分に、6ノードなら約16分に、10ノードなら約14分にと、ノード数が増えるほど処理時間を削減できている。ただし吉田氏は「MapReduce処理はノード数が増えるごとに処理時間が短くなっているが、インポート/エクスポートの処理時間にはほとんど変化がない。ここが今後の改善ポイントになるかもしれない」と指摘する。