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

TiDBのトランザクション
TiDBのトランザクションTiDBのトランザクション
TiDBのトランザクションAkio Mitobe
 
Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-Yuki Gonda
 
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...NTT DATA Technology & Innovation
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化Kumazaki Hiroki
 
ファントム異常を排除する高速なトランザクション処理向けインデックス
ファントム異常を排除する高速なトランザクション処理向けインデックスファントム異常を排除する高速なトランザクション処理向けインデックス
ファントム異常を排除する高速なトランザクション処理向けインデックスSho Nakazono
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理NTT DATA Technology & Innovation
 
時系列問題に対するCNNの有用性検証
時系列問題に対するCNNの有用性検証時系列問題に対するCNNの有用性検証
時系列問題に対するCNNの有用性検証Masaharu Kinoshita
 
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話Yuta Shimada
 
HDFSネームノードのHAについて #hcj13w
HDFSネームノードのHAについて #hcj13wHDFSネームノードのHAについて #hcj13w
HDFSネームノードのHAについて #hcj13wCloudera Japan
 
こわくない Git
こわくない Gitこわくない Git
こわくない GitKota Saito
 
1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門NVIDIA Japan
 
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜Preferred Networks
 
C++による数値解析の並列化手法
C++による数値解析の並列化手法C++による数値解析の並列化手法
C++による数値解析の並列化手法dc1394
 
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。hiyohiyo
 
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Yuki Morishita
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)NTT DATA Technology & Innovation
 
並行実行制御の最適化手法
並行実行制御の最適化手法並行実行制御の最適化手法
並行実行制御の最適化手法Sho Nakazono
 
分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろうShingo Omura
 
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
 

What's hot (20)

TiDBのトランザクション
TiDBのトランザクションTiDBのトランザクション
TiDBのトランザクション
 
OpenStack Swift紹介
OpenStack Swift紹介OpenStack Swift紹介
OpenStack Swift紹介
 
Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-
 
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
 
ファントム異常を排除する高速なトランザクション処理向けインデックス
ファントム異常を排除する高速なトランザクション処理向けインデックスファントム異常を排除する高速なトランザクション処理向けインデックス
ファントム異常を排除する高速なトランザクション処理向けインデックス
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
時系列問題に対するCNNの有用性検証
時系列問題に対するCNNの有用性検証時系列問題に対するCNNの有用性検証
時系列問題に対するCNNの有用性検証
 
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
 
HDFSネームノードのHAについて #hcj13w
HDFSネームノードのHAについて #hcj13wHDFSネームノードのHAについて #hcj13w
HDFSネームノードのHAについて #hcj13w
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門
 
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
 
C++による数値解析の並列化手法
C++による数値解析の並列化手法C++による数値解析の並列化手法
C++による数値解析の並列化手法
 
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
 
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
並行実行制御の最適化手法
並行実行制御の最適化手法並行実行制御の最適化手法
並行実行制御の最適化手法
 
分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろう
 
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 

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

Stormの注目の新機能TridentAPI
Stormの注目の新機能TridentAPIStormの注目の新機能TridentAPI
Stormの注目の新機能TridentAPIAdvancedTechNight
 
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~Takanori Suzuki
 
Open Source Study Session #3
Open Source Study Session #3Open Source Study Session #3
Open Source Study Session #3Satoshi Konno
 
ログ収集フレームワークの新バージョン「FlumeNG」
ログ収集フレームワークの新バージョン「FlumeNG」ログ収集フレームワークの新バージョン「FlumeNG」
ログ収集フレームワークの新バージョン「FlumeNG」AdvancedTechNight
 
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システムTomohiro Ohtake
 
「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisitedUptime Technologies LLC (JP)
 
リアルタイム処理エンジン Gearpumpの紹介
リアルタイム処理エンジンGearpumpの紹介リアルタイム処理エンジンGearpumpの紹介
リアルタイム処理エンジン Gearpumpの紹介Sotaro Kimura
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介AdvancedTechNight
 
Project Loom - 限定継続と軽量スレッド -
Project Loom - 限定継続と軽量スレッド - Project Loom - 限定継続と軽量スレッド -
Project Loom - 限定継続と軽量スレッド - Yuichi Sakuraba
 
「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と周辺技術の解説~ - ...VirtualTech Japan Inc.
 
第12回CloudStackユーザ会_ApacheCloudStack最新情報
第12回CloudStackユーザ会_ApacheCloudStack最新情報第12回CloudStackユーザ会_ApacheCloudStack最新情報
第12回CloudStackユーザ会_ApacheCloudStack最新情報Midori Oge
 
本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown本当にわかる Spectre と Meltdown
本当にわかる Spectre と MeltdownHirotaka Kawata
 
Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用kazuyas
 
分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーションMasahito Zembutsu
 
Tremaで試すFirewall
Tremaで試すFirewallTremaで試すFirewall
Tremaで試すFirewallM Hagiwara
 
cloudpack負荷職人結果レポート(サンプル)
cloudpack負荷職人結果レポート(サンプル)cloudpack負荷職人結果レポート(サンプル)
cloudpack負荷職人結果レポート(サンプル)iret, Inc.
 
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~Sotaro Kimura
 
20130329 rtm3
20130329 rtm320130329 rtm3
20130329 rtm3openrtm
 

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でもサクサク3DAdvancedTechNight
 
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
 
これから利用拡大?WebSocket
これから利用拡大?WebSocketこれから利用拡大?WebSocket
これから利用拡大?WebSocketAdvancedTechNight
 
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験AdvancedTechNight
 
TypeScriptのススメ ~JavaエンジニアのためのJava(like)Script
TypeScriptのススメ ~JavaエンジニアのためのJava(like)ScriptTypeScriptのススメ ~JavaエンジニアのためのJava(like)Script
TypeScriptのススメ ~JavaエンジニアのためのJava(like)ScriptAdvancedTechNight
 
three.jsで作る3Dの世界
three.jsで作る3Dの世界three.jsで作る3Dの世界
three.jsで作る3Dの世界AdvancedTechNight
 
分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4AdvancedTechNight
 
Twitterのリアルタイム分散処理システム「Storm」入門 demo
Twitterのリアルタイム分散処理システム「Storm」入門 demoTwitterのリアルタイム分散処理システム「Storm」入門 demo
Twitterのリアルタイム分散処理システム「Storm」入門 demoAdvancedTechNight
 
Hadoop scr第7回 hw2011フィードバック
Hadoop scr第7回 hw2011フィードバックHadoop scr第7回 hw2011フィードバック
Hadoop scr第7回 hw2011フィードバックAdvancedTechNight
 
ななめ45°から見たJavaOne
ななめ45°から見たJavaOneななめ45°から見たJavaOne
ななめ45°から見たJavaOneAdvancedTechNight
 
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 EMRAdvancedTechNight
 
ATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlersATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlersAdvancedTechNight
 

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

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 

Recently uploaded (9)

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 

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