分散ストリーム処理フレームワーク「Apache Samza 1.0」リリース

 分散ストリーム処理フレームワーク「Apache Samza」開発チームは11月27日、「Apache Samza 1.0」を公開した。

 Apache Samzaはストリーム処理向けの非同期処理フレームワーク。ScalaとJavaで実装されており、ほぼリアルタイムで処理を実行できる。Apache Kafkaなど複数のデータソースからデータを取得してリアルタイムで処理するようなステートフルアプリケーションを構築できる。

 LinkeIn(米Microsoft)で開発がスタートし、その後Apache Software Foundation(ASF)に寄贈されて2014年にトップレベルプロジェクト(TLP)に昇格した。LinkedInでは異常検出、性能モニタリングなど3000以上のアプリケーションが運用環境でSamzaを利用しているという。

 Apache Samza 1.0では分散処理フレームワークであるHadoop(YARN)上で実行できるだけでなく、スタンドアロンモードも実装された。アプリケーション内の軽量ライブラリとして組み込むことでKubernetes、Mesosといった環境やクラウドでストリーム処理を動かすことができるようになる。現時点ではステートフルのストリーム処理はサポートしていないが、実現に向けて開発を進めるという。

 map、filter、joinなどの演算子を持つハイレベルのAPIを用意し、複雑なデータパイプラインを表現できるようにした。YARNおよびスタンドアロン実装の両方でシームレスに動き、コードを一度書いて任意の環境の上では知らせることができるという。

 Apache BeamのBeam APIを使って書いたアプリケーションを実行できるようになった。合わせて、イベント時間をベースとした処理をサポート、インプットデータの時間に関係なく正確な結果を生成できるようになった。

 SQLクエリとしてストリーム処理ロジックを定義できるSamza SQLを導入、Javaコードなしにストリームパイプラインを作成できるという。UDF(ユーザー定義関数)を特定することで。カスタムロジックの実装も可能という。

 このほかにも、新しいテストフレームワークの導入、Samza Table APIの導入などの新機能が加わっている。

Apache Samza
http://samza.apache.org/