[社内勉強会]春の嵐を巻き起こせ Storm補完計画
-
Upload
hirooooo -
Category
Engineering
-
view
158 -
download
0
Transcript of [社内勉強会]春の嵐を巻き起こせ Storm補完計画
![Page 1: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/1.jpg)
1
春の嵐を巻き起こせ
Storm補完計画(概要編 )
![Page 2: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/2.jpg)
2
第壱話 ストー
ム
襲来、
![Page 3: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/3.jpg)
3
Stormとは
ビックデータのリアルタイム分散並列処理を簡単に行うためのフレームワーク
もともと米 BackType社 (ソーシャルメディア解析企業 )がつぶやき解析システムとして開発
2011年 7月に Twitter社が買収しオープンソース化
Clojureで実装されており、連続的に発生するデータを、継続的に処理し続けるフレームワーク
![Page 4: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/4.jpg)
4
Stormの背景
でも Hadoopって基本的にバッチ処理で、リアルタイムのニーズにはミスマッチングではないか
リアルタイム並列処理ならキューイング+非同期処理がセオリー
それだと信頼性とか拡張性の担保が大変でいかん
そもそもビックデータ処理は Hadoopが有名
そんな悩みを解決するフレームワーク
![Page 5: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/5.jpg)
5
Storm
![Page 6: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/6.jpg)
6
Stormの6つの特徴
1.シンプルStormの APIは非常にシンプル複雑な分散処理など特に意識することなく、システムを開発可能
2.拡張性Stromは膨大な数のメッセージに対しても低レイテンシを維持しつつ、スケール可能スケールするためには、マシンを増設して処理の並列数を増やすだけで OKプログラムを改修する必要はなし
![Page 7: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/7.jpg)
7
Stormの6つの特徴
3.耐障害性データ処理中に障害が発生し、ノードがダウンした場合でも、 Stormは必要に応じてタスクの再割当てやノードの再起動を行うそのため、処理が完全に停止してしまうことがなく、データ処理をし続けることが保証される
4.データ欠損無しの保障何らかの理由により、データの処理に失敗したり、タイムアウトが発生した場合でも、 Stromはそれを検知し、再処理する仕組みがあるこれにより全てのメッセージが処理されることを担保する
![Page 8: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/8.jpg)
8
Stormの6つの特徴
5.プログラム言語非依存Storm自体は内部で Clojureという言語で実装されているが、 Java、 Scala、 Ruby、 Python、 Perl、JavaScript、 PHP等の様々な言語で開発可能
6.簡単なデプロイと運用Stormは簡単にデプロイし、動作させることが可能システム構成もわずかな設定で変更でき、 Amazon EC2などのクラウド環境でも動作できる
![Page 9: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/9.jpg)
9
以上6つが主な特徴
![Page 10: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/10.jpg)
10
で
![Page 11: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/11.jpg)
11
ぶっちゃけ何ができるの?
![Page 12: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/12.jpg)
12
Stormができること
其の壱 継続的な並列処理• Stormの基本的な機能•通常はストリームデータであるメッセージを一時的メッセージキューに保存し、そのメッセージを継続的、かつ並列的に処理し続ける
![Page 13: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/13.jpg)
13
Stormができること
其の弐 グルーピング•メッセージは特定のルールに従って、グルーピングして処理できる
最も頻繁に使われる方法が、ShuffleGrouping各Boltすべてが等しい数のTupleを受け取るように、TupleがランダムにBoltタスクへ送信される。
FieldsGrouping指定されたフィールドの値によってグルーピングされるTupleの1つ以上のフィールドを使って、同じ値を持つTupleは必ず同じBoltに送信されるようになる。
AllGrouping受信Boltのすべてに各tupleのコピーが複製され送信される。
使い方には注意が必要
それ以外にも全6種類のグルーピングとカスタムグルーピングがある
![Page 14: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/14.jpg)
14
Stormができること
其の参 トランザクション• Stormはメッセージが必ず処理されることを保証するが、障害が発生し、メッセージが再送された場合、重複して処理される可能性がある•たった 1 度だけの処理としたい場合は、 Transactional Topologies機能を使用する•すると、メッセージにはトランザクション IDが自動で付与され、 Spout/boltの処理を一つのトランザクションの処理として扱うことができる
![Page 15: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/15.jpg)
15
以上Stormができる主な機能は3つだけ
継続的な並列処理
グルーピング
トランザクション
Stormができること
![Page 16: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/16.jpg)
16
ここまで駆け足できましたが
![Page 17: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/17.jpg)
17
知らない用語ばかりだ…
![Page 18: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/18.jpg)
18
第弐話
見知ら
ぬ用語、
![Page 19: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/19.jpg)
19
用語の説明も踏まえStormの内部を簡単に見てみる
![Page 20: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/20.jpg)
20
Stormの基本アーキテクチャと用語
ここからが本番
![Page 21: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/21.jpg)
クラスタの要素
タスクを実行するプロセスTopologyのサブセットを実行
21
Stormの基本アーキテクチャと用語Stormのプロセス構成Stormは複数マシンにまたがって動作するそれら全体を「クラスタ」と呼ぶクラスタは基本的に Master-Slave構成となる
Nimbusクラスタ内における Masterノードであり、 SupervisorやWorkerプロセスの管理を行う
クラスタ内における Slaveノードであり、タスク (Spoutや Bolt)が該当アサイン待受や、 Workerプロセスの起動 /停止を行うZookeeperは ApacheFoundationのプロダクトの1つとして開発されたStormでは Nimbusと Supervisor 間の協調管理に用いられる
Worker
Supervisor
Zookeeper
![Page 22: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/22.jpg)
22
Stormの基本アーキテクチャと用語クラスタを具体的に図にすると
Nimbus
Supervisor
Zookeeper
StormクラスタNimbus
StormクラスタのMasterノード・ Workerプレセスへのタスクの割り振り・ Workerプロセスのモニタリング
Stormクラスタの Slaveノード・タスクアサイン待ち受け・ Workerプロセスの起動 /停止
Supervisor
Zookeeper
Worker
Nimbusと Supervisoer 間の協調・各ノードで動作するデーモンの状態管理
タスクを実行するプロセス・ Topologyのサブセットの実行
Zookeeper
Zookeeper
WorkerWorkerWorker
SupervisorWorkerWorkerWorker
SupervisorWorkerWorkerWorker
SupervisorWorkerWorkerWorker
![Page 23: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/23.jpg)
23
Stormの基本アーキテクチャと用語
続いてここからが本当の
本番
![Page 24: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/24.jpg)
Topologyの要素
Streamの変換処理を行う単一または複数の Streamから Tupleを受信し、加工したうえで新たな Streamにメッセージの送信を行う
24
Stormの基本アーキテクチャと用語Stormのアプリケーション構成Storm上で動作するアプリケーションを Topology(トポロジー )Topologyは Spoutと Boltからなるネットワーク構成
Tuple Stormで処理されるメッセージinteger,long,byte,string等標準的な型をサポート
途切れずに連続する Tupleを意味するどのような Tupleが流れるかはグルーピング機能により決定
Streamのソースとなるもので、外部からデータを取得したり、受け付けたりして Tupleを生成 /送出を行うStormの起点となる要素Spout
Stream
Bolt
![Page 25: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/25.jpg)
25
Stormの基本アーキテクチャと用語Topologyを具体的に図にすると
Topology(トポロジー )Spout & Boltからなるネットワーク構造
Spout StreamTuple
Bolt Bol
t
Stream
Stream
TupleTuple
Tuple
Tuple Tuple Tuple Tuple
Tuple Tuple Tuple Tuple
Stream
Stream
Stream
Tuple TupleTuple
TupleTuple
Tuple
Tuple Tuple Tuple
![Page 26: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/26.jpg)
26
Stormの基本アーキテクチャと用語さらに Stormを利用したシステム全体像を図にすると
イベント
メッセージキュー
(イベントの一時保存 )
RDBやKVS
ユーザへ通知
ユーザへ通知
①イベント受付 ②イベント処理 ③ 結果の処理
![Page 27: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/27.jpg)
27
Stormの基本アーキテクチャと用語
つまるところ
![Page 28: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/28.jpg)
28
Stormの基本アーキテクチャと用語
Topologyが Storm処理の心臓
![Page 29: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/29.jpg)
29
だから今日は Topologyだけ覚えていってね
![Page 30: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/30.jpg)
30
第参話
Topologyと実行
![Page 31: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/31.jpg)
31
Topologyの構築
// 新規の Topologyを生成 TopologyBuilder builder = new TopologyBuilder(); // Spout を設定 builder.setSpout(“spout1", new TestWordSpout(true), 5); builder.setSpout(“spout2", new TestWordSpout(true), 3); // Bolt を設定 builder.setBolt(“bolt1", new TestWordCounter(), 3) .fieldsGrouping("spout1", new Fields("word")) .fieldsGrouping(“spout2", new Fields("word")); // Topologyの設定を指定 Map conf = new HashMap(); conf.put(Config.TOPOLOGY_WORKERS, 4); // TopologyをStormのクラスタへ登録 StormSubmitter.submitTopology("mytopology", conf, builder.createTopology());
http://www.slideshare.net/AdvancedTechNight/twitterstorm
Spout、 Bolt 共に スレッド数を指
定
Worker数を“ 4”で指定 ( 1つの Supervisorで 起動する最大Work
Topologyの構築は非常に簡単(分散処理を、これだけで実現)
とのこと ( 苦笑 )
![Page 32: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/32.jpg)
32
ということでワードカウントで実行イメージ例
![Page 33: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/33.jpg)
33
Topologyの実行イメージ
http://www.slideshare.net/AdvancedTechNight/twitterstorm
![Page 34: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/34.jpg)
34
実行イメージを元にTopologyを
おさらいしてみる
![Page 35: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/35.jpg)
35
Topologyのおさらい
http://www.slideshare.net/AdvancedTechNight/twitterstorm
![Page 36: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/36.jpg)
36
Topologyのおさらい
http://www.slideshare.net/AdvancedTechNight/twitterstorm
☚これが
![Page 37: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/37.jpg)
37
Topologyのおさらい
Spoutデータを取得 → Tuple生成 → Tuple送信
スパウト
![Page 38: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/38.jpg)
38
Topologyのおさらい
http://www.slideshare.net/AdvancedTechNight/twitterstorm
こいつらが
![Page 39: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/39.jpg)
39
Topologyのおさらい
Boltボルト
Tuple受信 → 処理・加工 → Tuple送信
![Page 40: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/40.jpg)
40
Topologyのおさらい
http://www.slideshare.net/AdvancedTechNight/twitterstorm
やり取りされてるこいつらが
![Page 41: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/41.jpg)
41
Topologyのおさらい
Tupleタプル
Stormでやり取りされるデータ
連続した Tupleのことを Stream
![Page 42: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/42.jpg)
42
Topologyのおさらい
http://www.slideshare.net/AdvancedTechNight/twitterstorm
この辺りの機能が
![Page 43: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/43.jpg)
43
Topologyのおさらい
グルーピング機能
いろいろ種類がある
![Page 44: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/44.jpg)
44
Topologyわかってきました?
![Page 45: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/45.jpg)
45
第四話 Hadoop
vsStorm
![Page 46: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/46.jpg)
46
Hadoopと Storm 比較
Stormの構成は Hadoopと比較するとわかりやすい
![Page 47: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/47.jpg)
47
Hadoopと Storm 比較
ただし、 Stormは Hadoopと競合するものではない導入するシステムの特性を見極め、使い分けることが重要
Hadoop Storm
対象 バッチ処理 リアルタイム処理実行 • 巨大で有限なジョブ
• たくさんのデータを一度だけ処理する
• 長い待ち時間
• 小さい無限のジョブ• 無限のストリームデータを連続して処理する
• 短い待ち時間処理構成 MapReduce → Mapper + Reducer
Topology → Spout + Bolt
ノード JobTrackerTaskTracker
NimbusSupervisor
![Page 48: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/48.jpg)
48
まとめ
Stormはリアルタイム分散並列処理を継続的に行うフレームワーク
• シンプル• 拡張性• 耐障害性
• データ欠損なしの保障• プログラム言語非依存• 簡単なデプロイと運用
Stormを構成する要素クラスタ /Topology/Stream/Tuple/Spout/Bolt
6つの特徴
![Page 49: [社内勉強会]春の嵐を巻き起こせ Storm補完計画](https://reader036.fdocuments.net/reader036/viewer/2022062306/58f18b951a28abe44a8b45ab/html5/thumbnails/49.jpg)
49
ご清聴、ありがとうございました
参考文献• SoftwareDesign(2013年 6月号 )• Twitterのリアルタイム分散処理システム「 Storm」入門 http://www.slideshare.net/AdvancedTechNight/twitterstorm