(2010/11/06) 続き書きました
自分用メモ。
注意:「リアルタイム」について
Yahoo! からの最初のリリースで「リアルタイム」MapReduce と書かれていたので仕方なくそう書いているが、人によっては聞いただけでキレるので注意すること。(特にOS屋さん相手のとき)
ちなみに下記公式サイトには "Realtime" という文字は一切出てこない。
リンクまとめ(紹介用)
- 公式
- 日本語のニュース
- Yahoo!からの第一報
リンクまとめ(技術者用)
- wiki
- github
- s4 (The S4 Project) · GitHub
- 今のところ5つのリポジトリがある
- core
- examples
- comm
- website
- sandbox
- s4 (The S4 Project) · GitHub
オーバービューまとめ
Overviewの内容を簡単にまとめた。
一見全訳してるように見えるがそうではない。
おまけに誤訳とか適当訳が多いのであまり信用しないように。
S4 って何?
- 汎用、分散、スケーラブル、部分フォールトトレラント、プラガブルなプラットフォーム
- 連続的なデータ処理を簡単に開発できる
- 秒間数千のイベントを処理できる
- イベントというのは要するにメッセージのこと
- keyed data(キー付きデータ,ハッシュのこと?)のイベントはプロセッシングエレメント(PE)と紐づけられる。PEはイベントを消費し以下のうちどちらかあるいは両方を実行する(この辺訳が怪しい)
- PEについては後述
- 他のPEによって消費された1つ以上のイベントをエミットする
- おそらく外部データストアあるいはコンシューマに対し結果を発行する
- アーキテクチャについて
主要な特徴
設計原理
アーキテクチャオーバービュー
- S4はメッセージパッシングシステム
- イベント(メッセージのこと)は任意のオブジェクト
- Adapter は外部データを S4 が処理可能なイベントに変換する
- イベントはストリームにディスパッチされる
- ストリームは文字列で識別される
- PEは以下の4つのコンポーネントによってユニークに識別される
- PEクラスと関連する設定により定義される機能性
- そのPEが消費する名前つきストリーム
- ストリーム内に入れられたキー付き要素
- キー付き要素の value
- PEはキーつきの値と関連するイベントだけを消費し、場合によっては出力イベントを作成する
- PEはキーつきの値ごとにインスタンス化されることに注意
- PEでカウント、集約、join などができる
- S4の開発ツール使えばカスタムPEを簡単に作れる
- キーなしPEとか value なし PE(PE プロトタイプ)なんかもある
- 処理ノード(Processing Node, PN) は PE の論理ホスト
- イベントを受け取って処理して投げる責任を持つ
今のところの疑問
- どうやって低レスポンスタイム処理してるか
- 多分誰もが一番気にしてるところ
- 可用性の仕組み
- ZooKeeper使ってるとはわかってるけどもう少し詳細知りたい
- 実際の性能
- Cent5,6あたりでも動くのか
- まあjavaだし動くと思うが一応
この辺はソース見ないと分かんないしまた後日。