ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

Asakusa Frameworkと次世代データ処理基盤技術

2018-12-06 00:09:22 | PG(分散処理)

Asakusa Framework Advent Calendar 2018の6日目およびJava Advent Calendar 2018の6日目です。


Javaでフレームワークと言うと、皆さんStrutsやSpring Bootといったウェブフレームワークを思い浮かべるかもしれませんが、フレームワークには当然バッチフレームワークもあります。
ただ、Javaのバッチフレームワークはあまり注目されませんねorz 有名どころはせいぜいSpring Batchのような気がしますが、これもどれくらい使われているのか…?

Asakusa Frameworkは、大規模なデータを分散処理するバッチフレームワーク(日本のノーチラス・テクノロジーズ社が開発しているOSS)です。
AsakusaFWの枠組みに従ってコーディングし、コンパイルする事で、Hadoop(MapReduce)Sparkの実行バイナリー(jarファイル)を生成することが出来ます。
当初はHadoop(MapReduce)のみが対象でしたが、後からSparkやM3BPが加わりました。すごいのは、共通のソースのまま、リコンパイルのみでこれらの実行バイナリーを生成できることです。
(Hadoopが流行った頃にMapReduceで実装したプログラムはメンテが大変で負の遺産になっているようですが、AsakusaFWだとアプリケーションはそのままで新基盤に対応できるのは、本当にすごい事だと思います)

個人的には、小容量のデータを扱うバッチアプリケーションでも、ファイル同士の結合(join)を行いたい場合はAsakusaFWは便利です。

AsakusaFWのプログラミングモデルは、公開当初は他人に説明するのが難しいものでした。今は簡単です。
要するに、Java8のStream APIと同様の考え方だからです。
AsakusaFW 0.1が公開されたのは2011年、Java6の頃だったと思います。この頃にJavaしかやってない人にfilterやらmapやらの考え方を伝えるのは難しかったです^^;(Scalaをやっている人には難しくなかったでしょうが)

AsakusaFWとStream APIの大きな違いは、AsakusaFWは2つの入力の結合(join)が出来ることです。
現時点(Java11)のStream APIには、Stream同士のconcat(SQLのUNION相当)はあってもjoin(SQLのJOIN相当)はありません。AsakusaFWはむしろjoinがメインの機能です。
また、AsakusaFWはバッチフレームワークだけあって、ファイルの入出力、特に大容量データを分散して読み込むところから考慮されています。


さて、話は変わりますが。

Pezyで有名になったNEDOの案件のひとつに、『高効率・高速処理を可能とするAIチップ・次世代コンピューティングの技術開発』というものがあるようです。
これの添付資料の委託予定先を見ると、『実社会の事象をリアルタイム処理可能な次世代データ処理基盤技術の研究開発』に、AsakusaFWを開発している会社の名前が入っています。(下の方には、M3BPを開発しているフィックスターズ社の名前もありますね)

「次世代データ処理基盤技術」が何なのかは書いてありませんが、ググってみると、東工大の研究員公募が引っかかりました。
それによると、「Online Transaction Processing (OLTP)と Online Analytical Processing (OLAP)を同時に実行する HTAP システム」ということらしいです。要するにデータベースですかね?

これが実際にどんなものなのかは分かりませんし、出てくるのは数年後かもしれません。
が、もし新しい基盤なのであれば、AsakusaFWがこれに対応する事は充分に考えられます。というか期待しています(笑)

数年後にこの基盤が注目されることを願い、そのときに「いち早くブログに書いてたぜ!」ってドヤ顔する為に、ブログに書いてみましたw

コメント (1)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする