Storm Topology Parallelism

不要亂摸發表於2018-02-03

Understanding the Parallelism of a Storm Topology


What makes a running topology: worker processes, executors and tasks

在一個Strom叢集中,實際執行一個topology有三個主要的實體

  1. Worker processes
  2. Executors (threads)
  3. Tasks

下面是一張草圖簡單說明他們之間的關係:

worker process executes a subset of a topology.

一個worker程式屬於一個特定的topology並且可能執行一個或者多個executors

一個執行中的topology由執行在叢集中的許多機器上的這樣的程式組成

一個executor是被一個worker程式啟動的一個執行緒。它可能執行一個或多個任務。

一個task執行實際的資料處理——在你的程式碼中實現的每一個spout或bolt執行許多工。一個元件的任務數量總是不變的,這是自始至終貫穿整個topology的,但是一個元件的executors(threads)的數量是可以隨時改變的。也就是說,下面這個表示式總是true:#threads ≤ #tasks。預設情況下,task的數量和executor的數量是相等的,也就是說每個執行緒執行一個任務。

Configuring the parallelism of a topology

注意,Storm中的術語"parallelism"也被叫做parallelism hint,表示一個元件初始的executor(threads)數量。

在這篇文件中我們將用"parallelism"來描述怎樣配置executor的數量,怎樣配置worker程式的數量,以及task的數量。

配置的方式有多種,它們之間的優先順序順序為:defaults.yaml < storm.yaml < topology-specific configuration < internal component-specific configuration < external component-specific configuration

下面是一個例子

上面這段程式碼片段配置了一個叫green-bolt的Bolt,初始數量為2個executors並且關聯4個task。也就是說,每個executor量執行2個task。

如果你沒有明確配置task的數量,那麼Strom將用預設的配置來執行,即:每個executor執行一個task。

Example of a running topology

下面這幅插圖顯示了一個簡單的topology。這個topology由三個元件組成:一個叫"BlueSpout"的spout和兩個bolt,分別叫"GreenBolt"和"YellowBolt"。

程式碼如下

How to change the parallelism of a running topology

補充一個Java API

 

參考  http://storm.apache.org/releases/1.1.1/Understanding-the-parallelism-of-a-Storm-topology.html

 

相關文章