S4 は、連続した区切りのないデータストリームを処理するためのアプリケーションを簡単に開発することができる、汎用分散型スケーラブルで、ある程度の耐障害性を持つプラガブルなプラットフォームです。

開発の動機

S4 は、複雑なプロプライエタリシステムとバッチ指向のオープンソースコンピューティングプラットフォームとのギャップを埋める存在です。S4 チームが目標としているのは、並行処理につきものの複雑な側面をアプリケーションプログラマから隠蔽するハイパフォーマンスなコンピューティングプラットフォームを開発することです。

実装

コアプラットフォームは Java で記述されています。S4 プラットフォームに対して読み書きするためのドライバは、任意の言語で実装できるので、レガシーなデータソースやシステムとの統合も可能です。

オープンソース

S4 は 2010 年 10 月、Yahoo! Inc. により、Open Source Apache 2.0 ライセンスの下でリリースされました。このライセンスはソフトウェアのユーザーに対し、ライセンスの条件の下で、ソフトウェアを任意の目的のために自由に使用すること、ソフトウェアを配布すること、ソフトウェアを修正すること、および修正したバージョンのソフトウェアを配布することを許可しています。

概要

実績

S4 は、すでに Yahoo! で実働システムとしてデプロイされ、1 秒に数千の検索クエリを処理しています。

非集中的

すべてのノードは対称で、集中化されたサービスや SPOF (単一障害点) はありません。そのため、デプロイやクラスタ構成の変更も非常に容易です。

スケーラブル

クラスタにノードを追加することで、スループットがリニアに向上します。サポート可能なノード数に、あらかじめ決められた制限はありません。

拡張可能

シンプルな API を使って簡単にアプリケーションを記述、デプロイできます。すでに初期状態で、ストリームプロセッシングのための基本的なアプリケーションが多数用意されており、その数は現在も増え続けています。

クラスタ管理

S4 は、ZooKeeper を土台として構築された通信レイヤを使って、すべてのクラスタ管理タスクを隠蔽しています。ZooKeeper は、分散アプリケーションのためのオープンソースの分散コーディネーションサービスです。

ある程度の耐障害性

クラスタ内のサーバーに障害が発生すると、スタンバイサーバーが自動的にアクティベートされてタスクを引き継ぎます。サーバーの状態は失われる可能性がありますが、新しい入力データから速やかに状態を回復することができます。