Streaming Processing for Big Data (3)

Dempsy, Storm, (Streaming Processing for Big Data - なぜか数学者にはワイン好きが多い),Esper,HStreaming(Streaming Processing for Big Data(2) - なぜか数学者にはワイン好きが多い)と来て,忘れちゃいけないS4がありました.

S4 Incubation Status - Apache Incubator

Webサイトに載っている以下の文章は,2010 IEEE International Conference on Data Mining Workshops (ICDMW)で発表されたようです.

S4 distributed stream computing platform

What is S4?

S4 is a general-purpose, distributed, scalable, partially fault-tolerant, pluggable platform that allows programmers to easily develop applications for processing continuous unbounded streams of data. S4 was initially developed to personalize search advertising products at Yahoo!, which operate at a rate of thousands of events per second. MapReduce [1] excels at batch jobs, but is hard to apply to stream computation tasks.

In S4, keyed data events are routed with affinity to Processing Elements (PEs), which consume the events and do one or both of the following

emit one or more events which may be consumed by other PEs,
publish results, possibly to an external data store or consumer.

The architecture resembles the Actors [2] model, providing semantics of encapsulation and location transparency, thus allowing applications to be massively concurrent while exposing a simple programming interface to application developers. This design choice also makes it relatively easy to reason about correctness due to the general absence of side-effects.
Key Features

Scalable
Throughput increases linearly as additional nodes are added to the cluster. There is no predefined limit on the number of nodes that can be supported.
Decentralized
All nodes are symmetric with no centralized service and no single point of failure.
Partial Fault-Tolerance
A cluster management layer based on ZooKeeper re-routes events from a failed- to a other servers automatically. The state of the processing elements running on the failed server may be lost unless it is explicitly saved in a persistent store.
Elastic
Computing load is automatically distributed on a heterogeneous cluster to maximize resource utilization and adapt to the skewness of the data without operator intervention even in the presence of hardware failures.
Expandable
Applications can easily be written and deployed using a simple API. Many basic applications for stream processing are available and more are being written.
Object Oriented
Internode communication using “plain old Java objects” (POJOs) with efficient serialization is fully supported. The application developer is not required to write schemas or use Hash Maps to send tuples across nodes.


S4 分散ストリームコンピューティングプラットフォーム

S4とは何でしょう?

S4は汎用的・分散型・スケーラブル・不完全ながらフォールトトレラントプラグイン可能なプラットフォームで,連続的な際限の無いデータストリームを処理するアプリケーションをプログラマが容易に開発できるようにします.S4は当初,Yahoo!で検索広告製品をパーソナライズするために開発され,秒間数千イベント程度の割合で動作しました.MapReduceはバッチジョブには優れていますが,ストリーム計算処理に適用することは困難です.

S4では,キー付けされたデータイベントはプロセッシングエレメント(PE)に関連付けられて送られ,プロセッサエレメントはイベントを処理すると共に次の一つまたは両方を実行します.

  • 他のプロセッサエレメントによって処理された一つ以上のイベントをさら他に送る,
  • 恐らく外部データ記憶装置か処理装置に,結果を出力する


アーキテクチャはアクタモデルに似ており,透過的にカプセル化の意味と位置を提供し,それによりアプリケーション開発者にシンプルなプログラミングインターフェースを表しつつアプリケーションの大規模な並列性を可能にします.このデザインの選択は,一般的な副作用が無いことから比較的容易に正当性を判断できるようにします.


特徴的な機能

  • スケーラブル:スループットクラスタにノードが追加されるとともにリニアに増加します
  • 非集中型:全てのノードは対称的であり,集中化されたサービスや単一障害点は存在しません
  • ほぼフォールト・トレランス:ZooKeeperに基づくクラスタ運用レイヤは,自動的に障害の起こったサーバからイベントを他のサーバに送信します
  • 柔軟性:計算処理負荷は自動的に資源活用の最大化のために異種混合型クラスタに分散され,ハードウェア障害の際もオペレータの操作無しにデータの歪に対応します
  • 拡張性:アプリケーションはシンプルなAPIを用いて容易に記述し,デプロイすることができます.沢山の基本的なストリーム処理のアプリケーションが既に入手可能で,さらに現在作成されています
  • オブジェクト指向:"plain old Java Objects"(POJOs)を用いた効果的なシリアライズによるノード間通信が完全にサポートされます.アプリケーション開発者はノード間でタプルを送るためにスキーマを書いたりハッシュマップを使ったりする必要はありません

こう見ていくと,やはり候補はStormとS4でしょうか...