Asakusa Framework Advent Calendar 2014の1日目です。
アドベントカレンダー初日なので、まずは、今年時点のAsakusa Frameworkの紹介を書いておきたいと思います。
Asakusa Frameworkは、分散バッチアプリケーションを開発・実行する為のフレームワークです。
もうちょっと言うと、複数のサーバーで分散して実行するバッチアプリケーションを開発する為のフレームワークです。実行基盤にはHadoopを使っています。
AsakusaFWは、公開された当初から「実行基盤としてHadoopを使っている」と言っていました。つまり、実行基盤としてHadoopの他に良いものが出てくれば、それで動くようにするかもしれないというスタンスでした。
そして、現在の最新バージョンであるAsakusaFW0.7.1では、「スモールジョブ実行エンジン」という実行基盤が実装されました。これにより、初めてHadoop以外の実行基盤が実際に使えるようになったという事になります。
実行時にデータ量に応じて自動的に通常のHadoopとスモールジョブ実行エンジンが切り替わります。
まさにHadoopの上位層のフレームワークに欲しい機能でした。
逆にHadoopの立場から見た場合。
Hadoopの使い道は、データの蓄積、分析(機械学習)、バッチ処理に大別されると思います。
今年はSQL on Hadoop、つまりHDFS上のファイルをSQLを使って操作するプロダクト(Impala・Presto・Drill)が話題の中心でした。つまりデータの分析系ですかね。
Asakusaアプリケーションの出力結果を抽出/集計して見たい、というような場合には、SQLを使えると便利なのは確かです(笑)
バッチ処理に使いたい場合は未だにAsakusaFW一択!と言いたいところですが(笑)、昔からPigやCascadingがあり、今年はSparkも脚光を浴びていました。(Azareaはどうなったんだろう、最近全然聞かないけど)
→Spark, SQL on Hadoop etc. Advent Calendar 2014
素のHadoopのプログラミングであるMapReduceは大変なので、今どきはMapReduceを直接実装することは無いでしょう。ひとまとまりの処理をしようと思ったら複数のMapReduceを組み合わせる必要があるので、上位層のフレームワーク(プロダクト)は必須です。
噂によると、Hadoopが流行りだした初期の頃に作られた大量のMapReduceプログラムは、メンテが出来なくて大変だとか(汗)
Pigは実際のデータで試しながらプログラムを構築していくには便利なスクリプト言語です。
しかし、項目数が数十にもなったら、(IDEのサポートも無いので)記述していくのは大変そうです。
やはり大規模なアプリケーションでは、コンパイラーによるチェックは重要だと思います。
Cascadingは「Pigのような処理をJavaで書けるようにしたらこうなりそう」という感じのライブラリーです。
項目名を文字列でいちいち記述しないといけないので、間違っていても、実行するまで分かりません。
SparkはHDFSやYARNを利用するというだけで、PigやCascadingほどHadoopと密接な関係は無いんですが、Hadoop界隈で注目されています。
(HiveをSpark上で動かすHive on Sparkや、Pigを動かすPig on Spark(Sporkという名前らしいw(pork=豚肉))なんてものも考えられているようです)
Scalaで処理を記述できるので、Sparkも楽しそうではあるのですが。
作ったアプリケーションのテスト方法や本番環境への配置方法・実行方法など、業務アプリケーションを作る上では、AsakusaFWの方が考えられていると思います。
また、AsakusaFWは現在0.7.1ですが、後方互換性を重視しているので、たぶん文法的には0.1の頃からほぼ変わっていません。環境のマイグレーションとリコンパイルだけ行えば、ソース自体はたぶん無修正で使えるでしょう。
今後も可能な限り後方互換性は考慮されると思います。そういう点も業務で使うには重要な事だと思います。
※コメント投稿者のブログIDはブログ作成者のみに通知されます