Advanced Tech Night No.04          Twitterの     リアルタイム分散処理システム              Storm                   入門                    ...
自己紹介 氏名      : 鈴木 貴典 所属      : Acroquest Technology Twitter : @takanorig 本職は SEPG      (Software Engineering Process G...
目次1. Stormとは?               6. Stormクラスタ2. Stormの6つの特徴            7. Topology3. Stormが生まれた             8. TaskとWorker   背景...
Storm とは? 分散し、フォールトトレラントなリアルタイム処理フレームワーク
1. Stormとは?1.    元々は、米BackType社が開発      Twitter社がBackType社を買収し、オープンソースとして公開(2011/09/19)      Twitterでは、つぶやきのリアルタイム解析に利用2...
2. Stormの6つの特徴1. Extremely broad set of use cases   非常に幅広いユースケース    •「ストリーム処理」・・・ メッセージ処理や、データベースのリアルタイム更新    •「継続的な処理」・・・...
2. Stormの6つの特徴3. Guarantees no data loss   データ欠損がないことの保証    リアルタイム処理システムは、データが正常に処理されることを強く保証    しなければなりません。データが欠損するシステムは、...
2. Stormの6つの特徴5. Fault-tolerant   耐障害性    データ処理中に障害が起きた場合、Stormは必要に応じてタスクの再割当を    します。Stormは、データ処理をし続けること(またはデータ処理を停止させる  ...
3. Stormが生まれた背景大規模分散処理と言えば・・・                 Storm以前の     Hadoop                    リアルタイム処理は・・・                         ...
Stormができること?                      9Advanced Tech Night
分散処理 のみ                      10Advanced Tech Night
4. Stormができること? リアルタイムでの  分散処理の 実行のみに特化  シンプル   かつ   強力                  11
5. 3つの基本ユースケースStormの処理は以下の3つのユースケースが基本となる  ストリーム処理             継続的な計算                      分散RPC•QueueとWorkerによる処理   •継続的な...
6. StormクラスタStormクラスタ                                      Nimbus                     Supervisor                          ...
7. Topology                              Bolt Spout                                                                    Bol...
7. Topology Topologyの構成要素              Stormで処理されるメッセージを保持するデータのこと。 Tuple        デフォルトでは、integer, long, short, byte, strin...
7. TopologyTopologyの構築は非常に簡単!(分散処理を、これだけで実現)// 新規のTopologyを生成TopologyBuilder builder = new TopologyBuilder();// Spout を設定b...
8. TaskとWoker                                             Task                                                      Task  ...
8. TaskとWoker    :Spout(2スレッド) + :Bolt(4スレッド)の分散イメージ            ⇒Worker(プロセス)数とTask(スレッド)数を             考慮して、チューニングを行う    ...
9. Stream Groupings                                                                  Stream    Stream                     ...
9. Stream Groupings 6種類の Stream Groupings を知る Shuffle grouping   各Boltが等しい数のTupleを受けとるように、Tupleがランダムに                    B...
10. 実行イメージワードカウントの例                                             Word                                                      ...
11. 実行モードStormを実行する2つのモード Local mode     Stormクラスタをシミュレート可能な (ローカルモード)      モード。主に、Topologyの動作確認                として利用する。 D...
12. Hadoopとの比較Stormの構成は、Hadoopと比較すると分かりやすい                Hadoop                                  Storm対象     バッチ処理       ...
まとめ1. Stormは、『分散し、フォールトトレラントなリアルタイ   ム処理フレームワーク』である2. 6つの特徴 ①非常に幅広いユースケース ②拡張性 ③データ欠損がないことの保証 ④堅牢性 ⑤耐障害性          ⑥プログラミング...
Storm 0.7.0 released at 2012/02/28以下の機能が追加されました1. Transactional Topology   Spout/Bolt全体の処理をひとつのトランザクションとして    扱うことができる2. ...
Thank youTry Storm!                         26   Advanced Tech Night
Upcoming SlideShare
Loading in...5
×

Twitterのリアルタイム分散処理システム「Storm」入門

50,907

Published on

鈴木 貴典+木村 宗太郎

TwitterのNathan Marz氏が開発している 「Storm」 。
2011年9月に、オープンソースとして公開されましたが、まだまだ日本で得られる情報は少なく、
詳細は不明なところも多いです。

そこで、日本初(たぶん)の「Storm」セッションを行います。

「Storm」は、CEP(Complex Event Processing=複合イベント処理)に属するプロダクトであり、
分散リアルタイム処理を行うための基本セットを提供しています。

今回のセッションでは、その概念や特性などについて解説してみます。

Published in: Technology
2 Comments
151 Likes
Statistics
Notes
  • 内容はとても参考になるのですが
    Bolt の画像が Volt の画像に見えてしまう
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Hey guys, gotta tell U this, U can make money working from home too. I came across this site 4 mth ago, registered and till now I receive payments on a weekly basis. Find out more here to setup your account and start earning immediately. Makecash25.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
50,907
On Slideshare
0
From Embeds
0
Number of Embeds
24
Actions
Shares
0
Downloads
484
Comments
2
Likes
151
Embeds 0
No embeds

No notes for slide

Twitterのリアルタイム分散処理システム「Storm」入門

  1. 1. Advanced Tech Night No.04 Twitterの リアルタイム分散処理システム Storm 入門 2012/03/01 Acroquest Technology 鈴木 貴典
  2. 2. 自己紹介 氏名 : 鈴木 貴典 所属 : Acroquest Technology Twitter : @takanorig 本職は SEPG (Software Engineering Process Group) ★ プロセスとか、品質とか、マネジメントとか・・・ ★ その一方、OSSの開発・調査とか、フレームワークの開発 なんかもしています (たぶん、めずらしい存在です) 1 Advanced Tech Night
  3. 3. 目次1. Stormとは? 6. Stormクラスタ2. Stormの6つの特徴 7. Topology3. Stormが生まれた 8. TaskとWorker 背景 9. Stream Groupings4. Stormができること? 10.実行イメージ5. 3つの基本 11.実行モード ユースケース 12.Hadoopとの比較 2 Advanced Tech Night
  4. 4. Storm とは? 分散し、フォールトトレラントなリアルタイム処理フレームワーク
  5. 5. 1. Stormとは?1. 元々は、米BackType社が開発  Twitter社がBackType社を買収し、オープンソースとして公開(2011/09/19)  Twitterでは、つぶやきのリアルタイム解析に利用2. 一般的には、 「CEP(Complex Event Processing):複合イベント処理」 のシステムに分類される  同分類のOSSプロダクト →Yahoo S4、 Esper、Streambase、HStreaming など3. 連続的に発生するデータを、継続的に処理をし続ける4. コアプロセスはClojure、コンポーネントはJavaで実装されている  ノード間の通信にThriftを利用しているので、他の言語でも開発可能 4 Advanced Tech Night
  6. 6. 2. Stormの6つの特徴1. Extremely broad set of use cases 非常に幅広いユースケース •「ストリーム処理」・・・ メッセージ処理や、データベースのリアルタイム更新 •「継続的な処理」・・・ 連続的なクエリの実行や、クライアントへ処理結果を ストリーミングで表示する、などの継続的な計算 •「分散RPC」・・・ 即座に処理する検索クエリのような激しいクエリの並列処理 など、Stormの基本機能は、非常に多くのユースケースに対応します。2. Scalable 拡張性 Stormは、膨大なメッセージの処理に対してもスケールします。 Topology拡張のためにしなければならないことは、マシンの増設、並列処理数 を増やすだけです。 例として、Stormの最初のアプリケーションの1つにおいて、10ノードのクラスタ 上で、毎秒、1,000,000メッセージと数百回のデータベース呼び出し処理を実 現してます。 クラスタ調整のためにZookeeperと組み合わせて使えば、さらに大きなサイズ のクラスタへスケールすることもできます。 5 Advanced Tech Night
  7. 7. 2. Stormの6つの特徴3. Guarantees no data loss データ欠損がないことの保証 リアルタイム処理システムは、データが正常に処理されることを強く保証 しなければなりません。データが欠損するシステムは、非常に限られた ユースケースでしか使用できません。 Stormは、あらゆるメッセージが処理されることを保証します。そして、これが S4などの他のシステムと大きく異なる点です。4. Extremely robust 堅牢性 扱いが難しいHadoopのようなシステムと違って、Stormクラスタは、 簡単に動作します。 ユーザーができるだけ苦労せず、Stormクラスタを 動かせるようにする、というのは、 Stormプロジェクトの明確なゴールです。 6 Advanced Tech Night
  8. 8. 2. Stormの6つの特徴5. Fault-tolerant 耐障害性 データ処理中に障害が起きた場合、Stormは必要に応じてタスクの再割当を します。Stormは、データ処理をし続けること(またはデータ処理を停止させる まで継続すること)を保証します。6. Programming language agnostic プログラミング言語非依存 堅牢で拡張性のあるリアルタイム処理は、一つのプラットホームに限定される べきではありません。StormのTopologyと処理コンポーネントは、様々な言語 で定義でき、どんな開発者にとっても利用しやすくなっています。 7 Advanced Tech Night
  9. 9. 3. Stormが生まれた背景大規模分散処理と言えば・・・ Storm以前の Hadoop リアルタイム処理は・・・ ・キューとワーカーによる処理 →メッセージの取得 →DBの更新 →新たなメッセージをキューに登録 しかしながら、Hadoopで、 ① 退屈な仕事 リアルタイムの処理を ② 脆弱 実現するのは困難であった ③ 拡張が大変 Storm リアルタイム 分散 データの保証 耐障害性 拡張性 8 Advanced Tech Night
  10. 10. Stormができること? 9Advanced Tech Night
  11. 11. 分散処理 のみ 10Advanced Tech Night
  12. 12. 4. Stormができること? リアルタイムでの 分散処理の 実行のみに特化 シンプル かつ 強力 11
  13. 13. 5. 3つの基本ユースケースStormの処理は以下の3つのユースケースが基本となる ストリーム処理 継続的な計算 分散RPC•QueueとWorkerによる処理 •継続的なクエリ実行 •on the fly でのクエリ実行•フォールト・トレラント •処理結果のストリーミング •並列化•スケーラブル •膨大なデータの処理 12 Advanced Tech Night
  14. 14. 6. StormクラスタStormクラスタ Nimbus Supervisor StormクラスタにおけるMasterノード •Workerプロセスへのタスクの割り振り Worker •Workerプロセスのモニタリング Zookeeper Supervisor Supervisor StormクラスタにおけるSlaveノード WorkerNimbus Zookeeper •タスクのアサイン待ち受け •Workerプロセスの起動/停止 Supervisor Zookeeper Zookeeper Worker NimbusとSupervisoer間の協調 •各ノードで動作するデーモンの Supervisor 状態を管理 Worker Worker タスクを実行するプロセス •Topologyのサブセットの実行 13 Advanced Tech Night
  15. 15. 7. Topology Bolt Spout Bolt Tuple Tuple Tuple Topology Spout & Bolt からなるネットワーク構造 14 Advanced Tech Night
  16. 16. 7. Topology Topologyの構成要素 Stormで処理されるメッセージを保持するデータのこと。 Tuple デフォルトでは、integer, long, short, byte, string, double, float, boolean, byte配列などをサポート。 途切れずに連続するTupleを意味する。 Stream Streamのソースとなるもので、Tupleを送り出す。 Spout Stormのストリーム処理の起点となる。 Streamの変換処理を行う。 Bolt 単一、または、複数のStreamからTupleを受信し、 加工した上で、新たなStreamにメッセージを送信する。 Spout、Boltからなるネットワーク構造のこと。 Topology Stormで処理を実行する場合は、このTopologyの単位で Stromクラスタに渡す。 15 Advanced Tech Night
  17. 17. 7. TopologyTopologyの構築は非常に簡単!(分散処理を、これだけで実現)// 新規のTopologyを生成TopologyBuilder builder = new TopologyBuilder();// Spout を設定builder.setSpout(“spout1", new TestWordSpout(true), 5);builder.setSpout(“spout2", new TestWordSpout(true), 3); Spout、Bolt共に// Bolt を設定 スレッド数を指定builder.setBolt(“bolt1", new TestWordCounter(), 3) .fieldsGrouping("spout1", new Fields("word")) .fieldsGrouping(“spout2", new Fields("word")); Worker数を“4”で指定// Topologyの設定を指定Map conf = new HashMap(); (1つのSupervisorでconf.put(Config.TOPOLOGY_WORKERS, 4); 起動する最大Worker数)// TopologyをStormのクラスタへ登録StormSubmitter.submitTopology("mytopology", conf, builder.createTopology()); 16 Advanced Tech Night
  18. 18. 8. TaskとWoker Task Task Spout、Boltの実行単位のこと →スレッドとなる 各Taskは、クラスタ内の Task ノードで動作している、 Workerプロセスで実行される ※Taskは、Worker全体で Task できるだけ均等に 分散される 17 Advanced Tech Night
  19. 19. 8. TaskとWoker :Spout(2スレッド) + :Bolt(4スレッド)の分散イメージ ⇒Worker(プロセス)数とTask(スレッド)数を 考慮して、チューニングを行う Worker Woker 1つ (6スレッドまとめて) Bolt Spout Bolt Spout Bolt Bolt Worker Worker Woker 2つ (3スレッドずつ) Spout Bolt Spout Bolt Bolt Bolt Worker Worker Worker Woker 3つ (2スレッドずつ) Spout Spout Bolt Bolt Bolt Bolt ※プロセス数・スレッド数は指定できるが、どのように分散するかは、 あくまでStormが自動で決めます。 18 Advanced Tech Night
  20. 20. 9. Stream Groupings Stream Stream Groupings Boltが、インプットとして どのようなStreamを 読み込むかを Stream Groupings 指定する定義 builder.setBolt(“bolt1", new TestWordCounter(), 3) .fieldsGrouping("spout1", new Fields("word")) .fieldsGrouping(“spout2", new Fields("word")); Stream Stream Groupings この部分の指定 19 Advanced Tech Night
  21. 21. 9. Stream Groupings 6種類の Stream Groupings を知る Shuffle grouping 各Boltが等しい数のTupleを受けとるように、Tupleがランダムに Boltタスクへ配信される。 Fields grouping Streamは、グループで指定されたフィールドによって分割される。 同じ値を持つTupleは、必ず同じタスクへ送信され、異なる値を持つ Tupleは、他のタスクへ送信される。 All grouping Streamは複製され、すべてのBoltタスクへ送信される。 このグループは十分に注意して使用すること。 Global grouping Stream全体が、ただ一つのBoltタスクへ送信される。 具体的には、Streamは最も小さいIDのタスクへ送信される。 None grouping どのようにStreamがグループ化されるか気にしない。 現状このグループは Shuffle grouping と同じである。 だが、Stormは、このグループのBoltを(可能な場合)送信元のBolt またはSpoutと同じスレッドで実行させる。 Direct grouping これは、ある種特別なグループである。 このグループのStreamは、Tuple生成者がコンシューマの どのタスクに、Tupleを受けとらせるか決める。 20 Advanced Tech Night
  22. 22. 10. 実行イメージワードカウントの例 Word Count ["the”,2] 1文を BoltTupleとして 単語に ["the”] 送出 分割 Word Count [“cow”,1]Sentence Split Bolt Spout Bolt [“cow”] ・ 単語の "the cow jumped ・ 発現回数を over the moon“ ・ カウント [“moon”] ・・・ Word Count [“moon”,1] Shuffle Fields Bolt grouping grouping (同じ単語は同じBoltへ送信) 21 Advanced Tech Night
  23. 23. 11. 実行モードStormを実行する2つのモード Local mode Stormクラスタをシミュレート可能な (ローカルモード) モード。主に、Topologyの動作確認 として利用する。 Distributed mode Stormクラスタを、複数ノードに分散 (分散モード) して実行するモード。 実際の運用で利用する。 22 Advanced Tech Night
  24. 24. 12. Hadoopとの比較Stormの構成は、Hadoopと比較すると分かりやすい Hadoop Storm対象 バッチ処理 リアルタイム処理実行 • 巨大で有限のジョブ • 小さい無限のジョブ • たくさんのデータを一度だけ • 無限のストリームデータを 処理する 連続して処理する • 長い待ち時間 • 短い待ち時間処理構成 MapReduce Topology → Mapper + Reducer → Spout + Boltノード JobTracker Nimbus TaskTracker Supervisor ただし、Stormは、Hadoopと競合するものではない 導入するシステムの特性を見極め、使い分けることが重要 23 Advanced Tech Night
  25. 25. まとめ1. Stormは、『分散し、フォールトトレラントなリアルタイ ム処理フレームワーク』である2. 6つの特徴 ①非常に幅広いユースケース ②拡張性 ③データ欠損がないことの保証 ④堅牢性 ⑤耐障害性 ⑥プログラミング言語非依存3. 3つの基本ユースケース ①ストリーム処理 ②継続的な計算 ③分散RPC4. Stormを構成する要素 • クラスタ/ Topology / Stream / Tuple / Spout / Bolt5. 「ローカルモード」と「分散モード」で実行可能 24 Advanced Tech Night
  26. 26. Storm 0.7.0 released at 2012/02/28以下の機能が追加されました1. Transactional Topology  Spout/Bolt全体の処理をひとつのトランザクションとして 扱うことができる2. Component-specific configuration  個々のSpout/Boltに対して、設定をカスタマイズ可能 となる(これまでは、Topology単位での指定であった)。 25 Advanced Tech Night
  27. 27. Thank youTry Storm! 26 Advanced Tech Night
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×