O’Reillyの方からStormをはじめようを献本して頂いて読んだのでレビュー!
感想
最近増えてきている100ページくらいの本なので,さっくり読めました.
簡単にまとめると ”英語は読みたくないので情報が古くてもStormの概要を日本語で読みたい” という方向けの本.
大きな理由は以下:
- Stormの対象バージョンが0.7.1と古い.俺でもTridentというのが0.8から入っているのを知っているので,その辺の目玉機能は書かれていない
- 多分原著の方も少し書き方が雑.なんの説明もなく実装のクラス名を使って説明している所とかあるので「?」となる所がある
- サンプルコードも少し雑で,使ってない変数があったり説明と実装があってなかったりもたまにある
- 翻訳が少し微妙.Cursorが”カーサー”だったり,原著の方の構成の不味さもあるのか,日本語的に理解しにくい文がちょくちょく混じっている (監訳はいない?)
メッセージングの信頼性に関しては,Storm本家のWikiの方が詳しく書かれていたりするので,本当に「Stormってどういう構成でどういう感じに機能追加するんだろう?ユースケースとかは?」みたいなのを日本語で読みたい場合には,とっかかりにもなるし,これで十分な感じ.
英語が読める人は,本家のWikiとか漁った方が情報も新しく結構細かに書かれているため,そちらの方が正確かもしれない.
正誤表
読んでて気になった所はgistにまとめておきました
Stormについてのてきとうな所感
NimbusはImpalaのstatestoreみたいな感じで,最初はいるけど落ちても致命的ではない
Tupleは基本単体で送られて,それぞれにトポロジーのack tracker(Acker)がついてトラッキングされる
- tupleが増えるとAckerも増え,数が増えると結構重そうに見えるけど,そこんところどうなのか
- 再送は基本Spoutが判断.まぁこれは分からなくもない
0.8からのTridentはBatchをガリガリ使っていると聞いてるけど,通常の利用だとあまりない? 1 Tupleでトポロジー内forwardしまくるのは結構パフォーマンス的に厳しそう
トランザクションはSpout / Boltの両方が頑張る.この辺は今時のストリーミング処理系と同じ.コアで担保は難しい
各ワーカーのコアのメソッドはシングルスレッドで呼ばれるようなので,この辺で重い処理すると多分詰まる.at-least-onceっぽいので,多分これが連鎖するとデータ重複する.
multilangはHadoop Streamingと同じ
ZooKeeperに依存しているので,そこがまた面倒くさそう
とりあえずこんな感じ.0.8や0.9でもっと改善されているかもしれないので,その辺は必要があれば追う.