<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] # 并行度 當storm程序中某一個環節的計算能力跟不上的時候,需要增加多個線程同時執行,由此會產生一個概念叫并行度 **Bolt的個數** ![](https://box.kancloud.cn/ce5cb0738a22af9b09c9927c3421061e_1118x112.png) **work的個數(也就是幾個jvm)** ~~~ config.setNumWorkers(2); ~~~ 如果設置了work和Bolt的個數,Bolt會均勻的分布在work上 ## 并行度和work數設置現象 ![](https://box.kancloud.cn/fe6d65621fddbf6aed4b36af50b7b1d0_1612x592.png) ![](https://box.kancloud.cn/d0f2d75388ca2b4e81163dc9bf716b09_1767x183.png) 可以點進去看executors是線程 ![](https://box.kancloud.cn/0742e50459580a44312060f9e4179929_538x380.png) ![](https://box.kancloud.cn/917133fcecb66e42f32377901c1f0e2c_130x167.png) 一般將多個并行度中的實例,叫做task. 默認情況下,一個bolt的并行度是4,代表了4個task # Stream grouping Stream grouping:即消息的partition方法。 Stream Grouping定義了一個流在Bolt任務間該如何被切分。這里有Storm提供的6個Stream Grouping類型: 1.?隨機分組(Shuffle grouping):隨機分發tuple到Bolt的任務,保證每個任務獲得相等數量的tuple。 2.?字段分組(Fields grouping):根據指定字段分割數據流,并分組。例如,根據“user-id”字段,相同“user-id”的元組總是分發到同一個任務,不同“user-id”的元組可能分發到不同的任務。 3.?全復制分組(All grouping):所有tuple被復制到所有bolt的所有任務。這種類型需要謹慎使用。每個訂閱的數據流的task都會接收到tuple的拷貝. 4.?全局分組(Global grouping):將所有的tuples路由到唯一一個task上。明確地說,是分配給ID最小的那個task。注意當使用全局分組方式 5.?無分組(None grouping):你不需要關心流是如何分組。目前,無分組等效于隨機分組。但最終,Storm將把無分組的Bolts放到Bolts或Spouts訂閱它們的同一線程去執行(如果可能)。 6.?直接分組(Direct grouping):這是一個特別的分組類型。元組生產者決定tuple由哪個元組處理者任務接收。 # 并發機制 ## 概念 * Workers (JVMs): 在一個物理節點上可以運行一個或多個獨立的JVM 進程。一個Topology可以包含一個或多個worker(并行的跑在不同的物理機上), 所以worker process就是執行一個topology的子集, 并且worker只能對應于一個topology? * Executors (threads): 在一個worker JVM進程中運行著多個Java線程。一個executor線程可以執行一個或多個tasks。但一般默認每個executor只執行一個task。一個worker可以包含一個或多個executor, 每個component (spout或bolt)至少對應于一個executor, 所以可以說executor執行一個compenent的子集, 同時一個executor只能對應于一個component。? * Tasks(bolt/spout instances):Task就是具體的處理邏輯對象,每一個Spout和Bolt會被當作很多task在整個集群里面執行。每一個task對應到一個線程,而stream grouping則是定義怎么從一堆task發射tuple到另外一堆task。你可以調用TopologyBuilder.setSpout和TopBuilder.setBolt來設置并行度 — 也就是有多少個task。 ## 配置并行度 * 對于并發度的配置, 在storm里面可以在多個地方進行配置, 優先級為:defaults.yaml < storm.yaml < topology-specific configuration < internal component-specific configuration < external component-specific configuration? * worker processes的數目, 可以通過配置文件和代碼中配置, worker就是執行進程, 所以考慮并發的效果, 數目至少應該大于machines的數目? * executor的數目, component的并發線程數,只能在代碼中配置(通過setBolt和setSpout的參數), 例如, setBolt("green-bolt", new GreenBolt(), 2)? * tasks的數目, 可以不配置, 默認和executor1:1, 也可以通過setNumTasks()配置Topology的worker數通過config設置,即執行該topology的worker(java)進程數。它可以通過 storm rebalance 命令任意調整。 ![](https://box.kancloud.cn/19a8a6e15141a75194401f1e2843e001_754x364.png) ![](https://box.kancloud.cn/bb81f4d8f1cb14346ffd71543b04b9fd_825x764.png) 3個組件的并發度加起來是10,就是說拓撲一共有10個executor,一共有2個worker,每個worker產生10 / 2 = 5條線程。 綠色的bolt配置成2個executor和4個task。為此每個executor為這個bolt運行2個task。 ## 動態改變并行度 * 動態的改變并行度 Storm支持在不 restart topology 的情況下, 動態的改變(增減) worker processes 的數目和 executors 的數目, 稱為rebalancing. 通過Storm web UI,或者通過storm rebalance命令實現:? ~~~ storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10 ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看