Asakusa Framework Advent Calendar 2016の1日目です。
アドベントカレンダーの初日ということで、2016年時点のAsakusa Frameworkの紹介を書いておきたいと思います。
Asakusa Frameworkは、分散バッチアプリケーションを開発・実行する為のフレームワークです。
実行基盤としてHadoopやSparkを使うことが出来ますが、今年、実行基盤にM3BPが加わりました!
(去年までは「メニーコア対応として開発中」だったものです)
HadoopやSparkは複数サーバーにまたがって分散処理しますが、M3BPは1台のサーバー上でマルチスレッドで分散処理するものです。
(M3BPのマルチスレッドはOSのネイティブスレッドなので、Javaのマルチスレッドより高速です)
昨今ではサーバーのメモリー搭載量が増え、数十~数百GBのデータなら1台のマシンに乗るようになりました。そこで、複数マシンでの分散でなく、1台のマシンで処理する方式が実装されたのです。HadoopやSparkのアンチテーゼと言えるかもしれません。
なお、M3BPではメモリーに乗り切らないデータは処理できませんが、AsakusaFWではAsakusaアプリケーションのコンパイルのみでSpark版とM3BP版の両方の実行バイナリーを作成することが出来るので、M3BPで処理できなければ(アプリケーションを変えずに)Sparkで処理する、ということが出来ます。
今のところ、自分が扱っているバッチは最大でもメモリー使用量270GB程度なので、メモリー512GBのサーバーで全てのバッチがM3BPで実行できています。
経験上、M3BPで動かすと、Sparkよりも平均で4~5倍速いです!
(実行時間の例は、Scala関西サミットの資料に少し載せてあります)
今までSpark(やHadoop)で動かしていたバッチが、リコンパイルのみでM3BPで動くようになるのは、なかなか感動的だと思います(笑)
※コメント投稿者のブログIDはブログ作成者のみに通知されます