Storm拓撲的並行度(parallelism)介紹

Storm拓撲的並行度(parallelism)介紹

    一、Storm分爲3個主要實體,用於在Storm集羣中運行拓撲
        工做進程:Worker Process,也稱爲Worker
        執行器:Executor,即線程Thread
        任務:Task
        工做進程、執行器、任務三者之間關係以下圖:
        
       Topology由一個或多個Spout/Bolt組件構成。
        運行中的Topology由一個或多個Supervisor節點中的Worker構成。默認狀況下一個Supervisor節點運行4個Worker,由defaults.yaml/storm.yaml中的屬性決定:
          supervisor.slots.ports:
            - 6700
            - 6701
            - 6702
            - 6703
        在代碼中能夠使用new Config().setNumWorkers(3),最大數量不能超過配置的supervisor.slots.ports數量。
        Worker爲特定拓撲的一個或多個組件Spout/Bolt產生一個或多個Executor。默認狀況下一個Worker運行一個Executor。
        Executor爲特定拓撲的一個或多個組件Spout/Bolt實例運行一個或多個Task。默認狀況下一個Executor運行一個Task。
        Task執行真正的數據處理,代碼中實現的每一個Spout/bolt做爲不少任務跨集羣執行。一個Spout/Bolt組件的Task數量始終貫穿Topology的整個生命週期,但一個Spout/Bolt組件的Executor數量會隨着時間而改變。這意味着Threads≤Tasks條件成立。默認狀況下Task數量與Executor數量相同,即Storm會使用每一個Executor運行一個Task。
    
    二、配置拓撲的並行度
        工做進程Worker數量
            Config config = new Config();
            config.setNumWorkers(3);    //注意此參數不能大於supervisor.slots.ports數量。
        執行器Executor數量
            TopologyBuilder builder = new TopologyBuilder();
            builder.setSpout(id, spout, parallelism_hint);        //設置Spout的Executor數量參數parallelism_hint
            builder.setBolt(id, bolt, parallelism_hint);        //設置Bolt的Executor數量參數parallelism_hint
        任務Task數量
            TopologyBuilder builder = new TopologyBuilder();
            builder.setSpout(id, spout, parallelism_hint).setNumTasks(val);;        //設置Spout的Executor數量參數parallelism_hint,Task數量參數val
            builder.setBolt(id, bolt, parallelism_hint).setNumTasks(val);            //設置Bolt的Executor數量參數parallelism_hint,Task數量參數val
    
    三、改變運行中拓撲的並行度
        Storm一個很好的特性是能夠增長或減小工做進程Worker和Executor的數量而不須要重啓集羣或拓撲,這樣的行爲成爲再平衡(rebalancing)。目前有兩種方式可實現拓撲再平衡,以下:
            使用Storm的WebUI                
            使用Storm的命令行工具,以下
                # 從新配置拓撲
                # 「myTopology」 拓撲使用5個Worker進程
                # 「blue-spout」 Spout使用3個Executor
                # 「yellow-blot」 Bolt使用10個Executor
                storm rebalance myTopology -n 5 -e blue-spout=3 -e yellow-blot=10工具

相關文章
相關標籤/搜索