SlideShare a Scribd company logo
1 of 27
Download to read offline
Advanced Tech Night No.04

          Twitterの
     リアルタイム分散処理システム

              Storm
                   入門
                                      2012/03/01
                            Acroquest Technology
                                        鈴木 貴典
自己紹介


 氏名      : 鈴木 貴典
 所属      : Acroquest Technology
 Twitter : @takanorig


 本職は SEPG      (Software Engineering Process Group)

  ★ プロセスとか、品質とか、マネジメントとか・・・
  ★ その一方、OSSの開発・調査とか、フレームワークの開発
    なんかもしています
    (たぶん、めずらしい存在です)

                                                       1
                       Advanced Tech Night
目次

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
Storm とは?
 分散し、フォールトトレラントな
リアルタイム処理フレームワーク
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
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
2. Stormの6つの特徴

3. Guarantees no data loss
   データ欠損がないことの保証
    リアルタイム処理システムは、データが正常に処理されることを強く保証
    しなければなりません。データが欠損するシステムは、非常に限られた
    ユースケースでしか使用できません。
    Stormは、あらゆるメッセージが処理されることを保証します。そして、これが
    S4などの他のシステムと大きく異なる点です。

4. Extremely robust
   堅牢性
    扱いが難しいHadoopのようなシステムと違って、Stormクラスタは、
    簡単に動作します。 ユーザーができるだけ苦労せず、Stormクラスタを
    動かせるようにする、というのは、 Stormプロジェクトの明確なゴールです。




                                             6
                      Advanced Tech Night
2. Stormの6つの特徴

5. Fault-tolerant
   耐障害性
    データ処理中に障害が起きた場合、Stormは必要に応じてタスクの再割当を
    します。Stormは、データ処理をし続けること(またはデータ処理を停止させる
    まで継続すること)を保証します。


6. Programming language agnostic
   プログラミング言語非依存
    堅牢で拡張性のあるリアルタイム処理は、一つのプラットホームに限定される
    べきではありません。StormのTopologyと処理コンポーネントは、様々な言語
    で定義でき、どんな開発者にとっても利用しやすくなっています。




                                                7
                        Advanced Tech Night
3. Stormが生まれた背景

大規模分散処理と言えば・・・                 Storm以前の
     Hadoop                    リアルタイム処理は・・・
                                 ・キューとワーカーによる処理
                                  →メッセージの取得
                                  →DBの更新
                                  →新たなメッセージをキューに登録


 しかしながら、Hadoopで、                         ① 退屈な仕事
  リアルタイムの処理を                             ② 脆弱
 実現するのは困難であった                            ③ 拡張が大変



                   Storm
   リアルタイム   分散     データの保証                耐障害性   拡張性

                                                      8
                   Advanced Tech Night
Stormができること?




                      9
Advanced Tech Night
分散処理 のみ
                      10
Advanced Tech Night
4. Stormができること?

 リアルタイムでの
  分散処理の
 実行のみに特化


  シンプル
   かつ
   強力
                  11
5. 3つの基本ユースケース

Stormの処理は以下の3つのユースケースが基本となる




  ストリーム処理             継続的な計算                      分散RPC

•QueueとWorkerによる処理   •継続的なクエリ実行              •on the fly でのクエリ実行
•フォールト・トレラント         •処理結果のストリーミング           •並列化
•スケーラブル                                      •膨大なデータの処理




                                                              12
                       Advanced Tech Night
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
7. Topology
                              Bolt
 Spout
                                                                    Bolt




                                            Tuple   Tuple   Tuple




                     Topology
              Spout & Bolt からなるネットワーク構造

                                                                     14
                      Advanced Tech Night
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
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
8. TaskとWoker



                                             Task


                                                      Task
                                         Spout、Boltの実行単位のこと
                                                    →スレッドとなる
                                              各Taskは、クラスタ内の
 Task                                          ノードで動作している、
                                         Workerプロセスで実行される

                                           ※Taskは、Worker全体で
                Task
                                                できるだけ均等に
                                                    分散される
                                                           17
                   Advanced Tech Night
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
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
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
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
11. 実行モード

Stormを実行する2つのモード

 Local mode     Stormクラスタをシミュレート可能な
 (ローカルモード)      モード。主に、Topologyの動作確認
                として利用する。


 Distributed mode Stormクラスタを、複数ノードに分散
 (分散モード)          して実行するモード。
                実際の運用で利用する。



                                      22
                Advanced Tech Night
12. Hadoopとの比較

Stormの構成は、Hadoopと比較すると分かりやすい
                Hadoop                                  Storm
対象     バッチ処理                               リアルタイム処理
実行     • 巨大で有限のジョブ                         • 小さい無限のジョブ
       • たくさんのデータを一度だけ                     • 無限のストリームデータを
         処理する                                連続して処理する
       • 長い待ち時間                            • 短い待ち時間
処理構成 MapReduce                             Topology
      → Mapper + Reducer                    → Spout + Bolt
ノード    JobTracker                          Nimbus
       TaskTracker                         Supervisor

          ただし、Stormは、Hadoopと競合するものではない
          導入するシステムの特性を見極め、使い分けることが重要

                                                                23
                     Advanced Tech Night
まとめ

1. Stormは、『分散し、フォールトトレラントなリアルタイ
   ム処理フレームワーク』である
2. 6つの特徴
 ①非常に幅広いユースケース ②拡張性
 ③データ欠損がないことの保証 ④堅牢性
 ⑤耐障害性          ⑥プログラミング言語非依存
3. 3つの基本ユースケース
 ①ストリーム処理 ②継続的な計算 ③分散RPC
4. Stormを構成する要素
 • クラスタ/ Topology / Stream / Tuple / Spout / Bolt
5. 「ローカルモード」と「分散モード」で実行可能
                                              24
                    Advanced Tech Night
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
Thank you
Try Storm!

                         26
   Advanced Tech Night

More Related Content

What's hot

そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
shigeki_ohtsu
 

What's hot (20)

PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
 
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
 
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
 
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
 
CRDT in 15 minutes
CRDT in 15 minutesCRDT in 15 minutes
CRDT in 15 minutes
 
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
 
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理
 
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
 
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
 
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
 
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけRDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 

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

Stormの注目の新機能TridentAPI
Stormの注目の新機能TridentAPIStormの注目の新機能TridentAPI
Stormの注目の新機能TridentAPI
AdvancedTechNight
 
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
Takanori Suzuki
 
Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用
kazuyas
 
20130329 rtm3
20130329 rtm320130329 rtm3
20130329 rtm3
openrtm
 

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

Stormの注目の新機能TridentAPI
Stormの注目の新機能TridentAPIStormの注目の新機能TridentAPI
Stormの注目の新機能TridentAPI
 
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
 
Open Source Study Session #3
Open Source Study Session #3Open Source Study Session #3
Open Source Study Session #3
 
ログ収集フレームワークの新バージョン「FlumeNG」
ログ収集フレームワークの新バージョン「FlumeNG」ログ収集フレームワークの新バージョン「FlumeNG」
ログ収集フレームワークの新バージョン「FlumeNG」
 
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
 
「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited
 
リアルタイム処理エンジン Gearpumpの紹介
リアルタイム処理エンジンGearpumpの紹介リアルタイム処理エンジンGearpumpの紹介
リアルタイム処理エンジン Gearpumpの紹介
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
 
Project Loom - 限定継続と軽量スレッド -
Project Loom - 限定継続と軽量スレッド - Project Loom - 限定継続と軽量スレッド -
Project Loom - 限定継続と軽量スレッド -
 
「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~ - ...
「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~  - ...「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~  - ...
「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~ - ...
 
第12回CloudStackユーザ会_ApacheCloudStack最新情報
第12回CloudStackユーザ会_ApacheCloudStack最新情報第12回CloudStackユーザ会_ApacheCloudStack最新情報
第12回CloudStackユーザ会_ApacheCloudStack最新情報
 
本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown
 
Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用
 
分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション
 
Storm×couchbase serverで作るリアルタイム解析基盤
Storm×couchbase serverで作るリアルタイム解析基盤Storm×couchbase serverで作るリアルタイム解析基盤
Storm×couchbase serverで作るリアルタイム解析基盤
 
Tremaで試すFirewall
Tremaで試すFirewallTremaで試すFirewall
Tremaで試すFirewall
 
cloudpack負荷職人結果レポート(サンプル)
cloudpack負荷職人結果レポート(サンプル)cloudpack負荷職人結果レポート(サンプル)
cloudpack負荷職人結果レポート(サンプル)
 
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
 
20130329 rtm3
20130329 rtm320130329 rtm3
20130329 rtm3
 
OpenStack Updates
OpenStack UpdatesOpenStack Updates
OpenStack Updates
 

More from AdvancedTechNight

CSS3Rendererを使ってiOSでもサクサク3D
CSS3Rendererを使ってiOSでもサクサク3DCSS3Rendererを使ってiOSでもサクサク3D
CSS3Rendererを使ってiOSでもサクサク3D
AdvancedTechNight
 
D3.jsと学ぶVisualization(可視化)の世界
D3.jsと学ぶVisualization(可視化)の世界D3.jsと学ぶVisualization(可視化)の世界
D3.jsと学ぶVisualization(可視化)の世界
AdvancedTechNight
 
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
AdvancedTechNight
 
CSSだけで実現するグラフィック表現
CSSだけで実現するグラフィック表現CSSだけで実現するグラフィック表現
CSSだけで実現するグラフィック表現
AdvancedTechNight
 
ななめ45°から見たJavaOne
ななめ45°から見たJavaOneななめ45°から見たJavaOne
ななめ45°から見たJavaOne
AdvancedTechNight
 
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たちATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
AdvancedTechNight
 
ATN No.1 Hadoop vs Amazon EMR
ATN No.1 Hadoop vs Amazon EMRATN No.1 Hadoop vs Amazon EMR
ATN No.1 Hadoop vs Amazon EMR
AdvancedTechNight
 
ATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlersATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlers
AdvancedTechNight
 

More from AdvancedTechNight (18)

CSS3Rendererを使ってiOSでもサクサク3D
CSS3Rendererを使ってiOSでもサクサク3DCSS3Rendererを使ってiOSでもサクサク3D
CSS3Rendererを使ってiOSでもサクサク3D
 
D3.jsと学ぶVisualization(可視化)の世界
D3.jsと学ぶVisualization(可視化)の世界D3.jsと学ぶVisualization(可視化)の世界
D3.jsと学ぶVisualization(可視化)の世界
 
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
 
CSSだけで実現するグラフィック表現
CSSだけで実現するグラフィック表現CSSだけで実現するグラフィック表現
CSSだけで実現するグラフィック表現
 
これから利用拡大?WebSocket
これから利用拡大?WebSocketこれから利用拡大?WebSocket
これから利用拡大?WebSocket
 
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験
 
Backbone.js入門
Backbone.js入門Backbone.js入門
Backbone.js入門
 
TypeScriptのススメ ~JavaエンジニアのためのJava(like)Script
TypeScriptのススメ ~JavaエンジニアのためのJava(like)ScriptTypeScriptのススメ ~JavaエンジニアのためのJava(like)Script
TypeScriptのススメ ~JavaエンジニアのためのJava(like)Script
 
three.jsで作る3Dの世界
three.jsで作る3Dの世界three.jsで作る3Dの世界
three.jsで作る3Dの世界
 
Spine入門
Spine入門Spine入門
Spine入門
 
分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4
 
Twitterのリアルタイム分散処理システム「Storm」入門 demo
Twitterのリアルタイム分散処理システム「Storm」入門 demoTwitterのリアルタイム分散処理システム「Storm」入門 demo
Twitterのリアルタイム分散処理システム「Storm」入門 demo
 
Hadoop scr第7回 hw2011フィードバック
Hadoop scr第7回 hw2011フィードバックHadoop scr第7回 hw2011フィードバック
Hadoop scr第7回 hw2011フィードバック
 
ななめ45°から見たJavaOne
ななめ45°から見たJavaOneななめ45°から見たJavaOne
ななめ45°から見たJavaOne
 
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たちATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
 
ATN No.1 Hadoop vs Amazon EMR
ATN No.1 Hadoop vs Amazon EMRATN No.1 Hadoop vs Amazon EMR
ATN No.1 Hadoop vs Amazon EMR
 
ATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlersATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlers
 
ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 

Recently uploaded

研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
atsushi061452
 

Recently uploaded (14)

5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
 
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
 
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルLoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
 
情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイント
 
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
 
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
 
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
 
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )
 
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltd
 
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
 
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルLoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
 

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

  • 1. Advanced Tech Night No.04 Twitterの リアルタイム分散処理システム Storm 入門 2012/03/01 Acroquest Technology 鈴木 貴典
  • 2. 自己紹介  氏名 : 鈴木 貴典  所属 : Acroquest Technology  Twitter : @takanorig  本職は SEPG (Software Engineering Process Group) ★ プロセスとか、品質とか、マネジメントとか・・・ ★ その一方、OSSの開発・調査とか、フレームワークの開発 なんかもしています (たぶん、めずらしい存在です) 1 Advanced Tech Night
  • 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
  • 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. 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. 2. Stormの6つの特徴 3. Guarantees no data loss データ欠損がないことの保証 リアルタイム処理システムは、データが正常に処理されることを強く保証 しなければなりません。データが欠損するシステムは、非常に限られた ユースケースでしか使用できません。 Stormは、あらゆるメッセージが処理されることを保証します。そして、これが S4などの他のシステムと大きく異なる点です。 4. Extremely robust 堅牢性 扱いが難しいHadoopのようなシステムと違って、Stormクラスタは、 簡単に動作します。 ユーザーができるだけ苦労せず、Stormクラスタを 動かせるようにする、というのは、 Stormプロジェクトの明確なゴールです。 6 Advanced Tech Night
  • 8. 2. Stormの6つの特徴 5. Fault-tolerant 耐障害性 データ処理中に障害が起きた場合、Stormは必要に応じてタスクの再割当を します。Stormは、データ処理をし続けること(またはデータ処理を停止させる まで継続すること)を保証します。 6. Programming language agnostic プログラミング言語非依存 堅牢で拡張性のあるリアルタイム処理は、一つのプラットホームに限定される べきではありません。StormのTopologyと処理コンポーネントは、様々な言語 で定義でき、どんな開発者にとっても利用しやすくなっています。 7 Advanced Tech Night
  • 9. 3. Stormが生まれた背景 大規模分散処理と言えば・・・ Storm以前の Hadoop リアルタイム処理は・・・ ・キューとワーカーによる処理 →メッセージの取得 →DBの更新 →新たなメッセージをキューに登録 しかしながら、Hadoopで、 ① 退屈な仕事 リアルタイムの処理を ② 脆弱 実現するのは困難であった ③ 拡張が大変 Storm リアルタイム 分散 データの保証 耐障害性 拡張性 8 Advanced Tech Night
  • 10. Stormができること? 9 Advanced Tech Night
  • 11. 分散処理 のみ 10 Advanced Tech Night
  • 12. 4. Stormができること? リアルタイムでの 分散処理の 実行のみに特化 シンプル かつ 強力 11
  • 13. 5. 3つの基本ユースケース Stormの処理は以下の3つのユースケースが基本となる ストリーム処理 継続的な計算 分散RPC •QueueとWorkerによる処理 •継続的なクエリ実行 •on the fly でのクエリ実行 •フォールト・トレラント •処理結果のストリーミング •並列化 •スケーラブル •膨大なデータの処理 12 Advanced Tech Night
  • 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. 7. Topology Bolt Spout Bolt Tuple Tuple Tuple Topology Spout & Bolt からなるネットワーク構造 14 Advanced Tech Night
  • 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. 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. 8. TaskとWoker Task Task Spout、Boltの実行単位のこと →スレッドとなる 各Taskは、クラスタ内の Task ノードで動作している、 Workerプロセスで実行される ※Taskは、Worker全体で Task できるだけ均等に 分散される 17 Advanced Tech Night
  • 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. 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. 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. 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. 11. 実行モード Stormを実行する2つのモード Local mode Stormクラスタをシミュレート可能な (ローカルモード) モード。主に、Topologyの動作確認 として利用する。 Distributed mode Stormクラスタを、複数ノードに分散 (分散モード) して実行するモード。 実際の運用で利用する。 22 Advanced Tech Night
  • 24. 12. Hadoopとの比較 Stormの構成は、Hadoopと比較すると分かりやすい Hadoop Storm 対象 バッチ処理 リアルタイム処理 実行 • 巨大で有限のジョブ • 小さい無限のジョブ • たくさんのデータを一度だけ • 無限のストリームデータを 処理する 連続して処理する • 長い待ち時間 • 短い待ち時間 処理構成 MapReduce Topology → Mapper + Reducer → Spout + Bolt ノード JobTracker Nimbus TaskTracker Supervisor ただし、Stormは、Hadoopと競合するものではない 導入するシステムの特性を見極め、使い分けることが重要 23 Advanced Tech Night
  • 25. まとめ 1. Stormは、『分散し、フォールトトレラントなリアルタイ ム処理フレームワーク』である 2. 6つの特徴 ①非常に幅広いユースケース ②拡張性 ③データ欠損がないことの保証 ④堅牢性 ⑤耐障害性 ⑥プログラミング言語非依存 3. 3つの基本ユースケース ①ストリーム処理 ②継続的な計算 ③分散RPC 4. Stormを構成する要素 • クラスタ/ Topology / Stream / Tuple / Spout / Bolt 5. 「ローカルモード」と「分散モード」で実行可能 24 Advanced Tech Night
  • 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. Thank you Try Storm! 26 Advanced Tech Night