1. 程式人生 > >Storm的基本知識

Storm的基本知識

         上篇文章本人簡單的介紹了Storm的起源,今天本人又繼續學習了Storm的基本的一些知識,基本瞭解了他的基本用法,還好,不算太難,如果大家瞭解了Hadoop的MapReduce模型的話,看這個也是非常類似的。在瞭解Storm的原型時,首先了解一些概念。

1.Tuple(元組),作為訊息傳遞的基本單元,元組中的欄位可以是任何型別的物件。元組會用於後面提到的Bolt方法的execute方法。

2.Spout(噴口),是拓撲的流的來源,就是產生源資料流的元件。噴口的資料來源可以有幾種方式。(1).直接連線資料來源 (2).從訊息佇列中讀取訊息 (3).通過DRPC的形式,簡單的說,Spout相當於Hadoop中的Map。

3.Bolt(螺栓),在拓撲中處理所有的邏輯。在Bolt中可以完成連線運算,統計分析,等等各種邏輯操作。執行的方法就是剛剛說的那個execute()方法。

4.Topology(拓撲),是Storm中執行的一個實時應用程式,一個完整的Spout--Bolt就是在一個Topology中執行的。Storm中的拓撲相當於Hadoop中的作業job,在MapReduce的作業會最終完成,而一個拓撲會永遠執行直到他被殺死。在java裡,用的是TopologyBuilder來構建拓撲。

5.Nimbus程序與Supervisor程序。主控結點執行Nimbus的守護程序。負責分配節點任務,並監視主機故障,類似Hadoop的jobTracker。每個工作節點執行的是Supervisor守護程序,監聽主機上的已經分配好的作業。

6.Worker(工作程序),Task(任務),Executor(執行器),三者的關係非常相近,用一張圖表示直接明瞭。這3個關係的在一定程度上也控制著Storm拓撲的並行度。在一個節點中可以有1個或多個工作程序執行在1個或多個拓撲中。


,所以這也表明了在Storm可以並行執行任務。下面給出一個非常簡單的拓撲的例子:

public class SimpleTopology {
    public static void main(String[] args) {
        try {
            // 例項化TopologyBuilder類。
            TopologyBuilder topologyBuilder = new TopologyBuilder();
            // 設定噴發節點並分配併發數,該併發數將會控制該物件在叢集中的執行緒數。
            topologyBuilder.setSpout("SimpleSpout", new SimpleSpout(), 1);
            // 設定資料處理節點並分配併發數。指定該節點接收噴發節點的策略為隨機方式。
            topologyBuilder.setBolt("SimpleBolt", new SimpleBolt(), 3).shuffleGrouping("SimpleSpout");
            Config config = new Config();
            config.setDebug(true);
            if (args != null && args.length > 0) {
                config.setNumWorkers(1);
                StormSubmitter.submitTopology(args[0], config, topologyBuilder.createTopology());
            } else {
                // 這裡是本地模式下執行的啟動程式碼。
                config.setMaxTaskParallelism(1);
                LocalCluster cluster = new LocalCluster();
                cluster.submitTopology("simple", config, topologyBuilder.createTopology());
            }
            
        } catch (Exception e) {
            e.printStackTrace(); 
        }
    }
}

上面的例子給出了本地測試模式和正式開發模式的的拓撲提交例子。為了比較Hadoop和Storm的區別。我做了表格:

對比項                        Hadoop                       Storm

系統角色                    JobTracker                  Nimbus

                                    TaskTracker                Supervisor

應用名稱                     Job                              Topology

元件介面                     Map/Reduce              Spout/Bolt

以上就是個人在最近一段時間學習Storm的一點小小總結