五 storm調優,調整並行度

2021-12-30 10:48:42 字數 2309 閱讀 9112

實際上就是用多執行緒。沒有真的對集群做擴容。

官網介紹

storm中執行topology的實體主要有三個:

worker processes:? ? 乙個supervisor可以啟多個worker。乙個topology可以執行在乙個worker或者接worker中。每個worker執行乙個topology的子集。乙個worker程序只服務於乙個指定的topology。

executors(threads): 乙個worker程序上可以執行多個executor。

tasks:? ?task實際上是storm裡面最小的運算單元,執行實際的資料處理。 乙個executors上可以執行多個相同元件(spout、bolt)的task。每個spout、bolt可以作為多個task在集群中被處理。

對於乙個元件(spout、bolt)在它的生命週期中,task的數量時不變的,executor的數量可變。這意味著,執行緒(executor)的數量可能小於等於task的數量。預設情況下task的數量等於executor的數量。

預設情況下:

1個supervisor節點啟動4個worker程序。

每乙個topology預設占用乙個worker程序。

每個worker會啟動executor。

每個executor預設啟動乙個task。

(這裡用單機版storm演示。即解壓storm.tar後 ,什麼配置檔案都不用改,只用加個環境變數就行了。

單機版安裝及啟動)

執行作業:提交作業到storm伺服器上執行

檢視ui會發現。只啟動了乙個work來執行我們的clustersumstormtopology作業。

我們的storm作業只有乙個spout和乙個bolt,但是在預設情況下卻啟動了3個executor。因為其中有乙個是acker。

設定介紹

原始碼中的defaults.yaml配置檔案

worker processes數量設定(設定執行某個具體的topology使用幾個worker,而不是乙個supervisor啟動幾個worker。乙個supervisor啟動幾個worker的設定是修改storm.yaml配置檔案,給supervisor.slots.ports新增幾個埠。)

**中配置:

修改之前的**mian中的config部分

public static void main (string args) catch (alreadyaliveexception e) catch (invalidtopologyexception e) catch (authorizationexception e)

}重新打包,上傳到nimbus所在節點,關閉原來執行的clustersumstormtopology作業,重新執行。

重新檢視ui。這時就只啟動了2個executor(因為這個topology程式只有乙個spout和乙個bolt,我們把acker關掉了。這裡只是做個測試,生產中不要關掉acker,不然不能保證資料有且只有一次被執行,很可能資料被重**送,或者漏了。)

用了2個worker來執行這個topology(我們在**中設定的2)。

executor數量設定

public static void main (string args) catch (alreadyaliveexception e) catch (invalidtopologyexception e) catch (authorizationexception e)

}task數量設定

public static void main (string args) catch (alreadyaliveexception e) catch (invalidtopologyexception e) catch (authorizationexception e)

}topology在執行中可以動態調整worker和executor的數量,並不需要重啟集群。

1.在storm的ui上調整。

2.使用客戶端工具來調整。

spark調優 並行度調優

乙個job的劃分為乙個action操作觸發 乙個job可以被分為多個stage,在乙個lineage中,發生shuffle操作時會拆分乙個stage,shuffle操作一般發生在以下的幾個運算元中,distinct groupbykey reducebykey aggregatebykey join...

spark調優,調節並行度

spark並行度指的是什麼?並行度 其實就是指的是,spark作業中,各個stage的task數量,也就代表了sprark作業的各個階段 stage 的並行度。如果不調節,那麼導致並行度過低,會怎麼樣?假設,現在已經在spark submit指令碼中給我們的spark作業分配了足夠的資源,比如50個...

效能調優之調節並行度

以 spark 中的 wordcount 作業為例,每個spark作業其實都是乙個 application,每個 application 對應多個 jobs,乙個 action 操作 比如 collect 觸發乙個 job,在wordcount程式中有乙個 job,每個 job 拆成多個 stage...