Storm 並行度分配原理及最佳化
ps:都是學習的別人的部落格,只是做了個整理所有就寫成了原創,其實都是人家的東西
當一個topology在storm cluster中執行時,它的併發主要跟3個邏輯物件相關:worker,executor 和task
1. Worker 是執行在工作節點上面,被Supervisor守護程式建立的用來幹活的JVM程式。每個Worker對應於一個給定topology的全部執行任務的一個子集。反過來說,一個Worker裡面不會執行屬於不同的topology的執行任務。
2. Executor可以理解成一個Worker程式中的工作執行緒。一個Executor中只能執行隸屬於同一個component(spout/bolt)的task。一個Worker程式中可以有一個或多個Executor執行緒。在預設情況下,一個Executor執行一個task。
3. Task則是spout和bolt中具體要乾的活了。一個Executor可以負責1個或多個task。每個component(spout/bolt)的併發度就是這個component對應的task數量。同時,task也是各個節點之間進行grouping(partition)的單位。
conf.setNumWorkers(workers); //設定worker數量
uilder.setBolt("2", new WordSpliter(),4) //設定Executor併發數量
builder.setBolt("2", new WordSpliter(),4).setNumTasks(1); //設定每個執行緒處理的Task數量
任務分配時有兩種情況:
3 : [host1:port1] 4 : [host2:port1]}
(b)如果task數目比worker少,例如task是[1 2],而worker有[host1:port1 host1:port2 host2:port1 host2:port2],那麼首先會將woker排序,將不同host間隔排列,保證task不會全部分配到同一個機器上,也就是將worker排列成
透過Config.setNumWorkers(int))來指定一個storm叢集中執行topolgy的程式數量, 所有的執行緒將在這些指定的worker程式中執行. 比如說一個topology中要啟動300個執行緒來執行spout/bolt, 而指定的worker程式數量是60個, 那麼storm將會給每個worker分配5個執行緒來跑spout/bolt, 如果要對一個topology進行調優, 可以調整worker數量和spout/bolt的parallelism數量(調整引數之後要記得重新部署topology. 後續會為該操作提供一個swapping的功能來減小重新部署的時間).
對於worker和task之間的比例, nathan也給出了, 即1個worker包含10~15個左右, 當然這個參考, 實際情況還是要根據配置和測試情況
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29754888/viewspace-1263921/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何設定Storm並行度ORM並行
- Storm系列(四)並行度和流分組ORM並行
- Storm架構與執行原理ORM架構
- ORACLE最佳化器工作原理及及執行方式Oracle
- 【筆記】oracle 並行原理深入解析及案例精粹筆記Oracle並行
- oracle 並行查詢時並行資源分配追蹤測試Oracle並行
- storm 架構和原理ORM架構
- Android系統Bitmap記憶體分配原理與最佳化Android記憶體
- MySQL 並行複製方案演進歷史及原理分析MySql並行
- Java物件記憶體分配原理及原始碼分析Java物件記憶體原始碼
- 檢視錶並行度並行
- RMAN並行度衝突並行
- mysql group by 執行原理及千萬級別count 查詢最佳化MySql
- mysql 並行複製原理MySql並行
- 多專案並行時人員怎麼分配並行
- Pulsar負載均衡原理及最佳化負載
- 並行查詢並行度Degree與instances 設定並行
- 分割槽索引的並行度索引並行
- 理解storm的ACKER機制原理ORM
- MySQL索引原理及慢查詢最佳化MySql索引
- oracle表查詢的並行度Oracle並行
- storm安裝、執行ORM
- mpls標籤分配原理——VecloudCloud
- Oracle Freelist和HWM原理及效能最佳化(轉)Oracle
- 什麼是並行查詢及其原理並行
- 聊聊Spark的分割槽、並行度 —— 前奏篇Spark並行
- EXPDP/IMPDP 中的並行度PARALLEL引數並行Parallel
- LLM並行訓練6-啟用最佳化並行
- 【Data Pump】Data Pump的並行引數原理並行
- MySQL並行複製(MTS)原理(完整版)MySql並行
- 【原創】Oracle 並行原理與示例總結Oracle並行
- Spark效能優化:提高並行度、使用reduceByKeySpark優化並行
- 重要 | Spark分割槽並行度決定機制Spark並行
- 使用resource_manager限制使用者並行度並行
- Java執行緒池原理及分析Java執行緒
- oracle parallel並行及px檢視viewOracleParallel並行View
- 在no_ui中使用多程式實現多賬戶並行執行,並分配各自獨立的工作環境和策略UI並行
- ORACLE優化器工作原理及及執行方式《轉》Oracle優化