Successfully reported this slideshow.
Your SlideShare is downloading. ×

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

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 27 Ad

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

Download to read offline

鈴木 貴典+木村 宗太郎

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

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

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

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

鈴木 貴典+木村 宗太郎

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

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

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

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

Advertisement
Advertisement

More Related Content

Slideshows for you (20)

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

Advertisement

More from AdvancedTechNight (18)

Recently uploaded (20)

Advertisement

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. Topology 3. Stormが生まれた 8. TaskとWorker 背景 9. Stream Groupings 4. 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ができること? 9 Advanced Tech Night
  11. 11. 分散処理 のみ 10 Advanced 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ノード Worker Nimbus 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. Topology Topologyの構築は非常に簡単!(分散処理を、これだけで実現) // 新規の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文を Bolt Tupleとして 単語に ["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つの基本ユースケース ①ストリーム処理 ②継続的な計算 ③分散RPC 4. Stormを構成する要素 • クラスタ/ Topology / Stream / Tuple / Spout / Bolt 5. 「ローカルモード」と「分散モード」で実行可能 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 you Try Storm! 26 Advanced Tech Night

×