1. 程式人生 > >理解Storm並行度

理解Storm並行度

一個Topology可以執行多個Worker上,這樣可以提高資料處理能力,因為一個worker就是一個程序,更確切的說是一個JVM,很自然的,我們可以想到如果一個worker中可以再起多個執行緒的話效率就會很高。事實上storm就是這麼幹的,worker並不是storm叢集中最小執行單位。Executer才是storm叢集中最小的執行單位。Executer其實是一個執行緒,你可以這樣理解,worker是拓撲的最小執行單位,而Executer是Spout或者Bolt(其實spout也是bolt)最小執行單位。什麼意思?執行一個拓撲就是啟動一個jvm程序,啟動一個spout或者bolt就是啟動一個Executer執行緒(執行器執行緒)。
然後我們再看幾個跟設定並行度有關的引數:
1.setSpout(String id, IRichSpout spout, Number parallelism_hint)
2.setNumTasks(Number val)
3.setNumWorkers(int workers)
4.setNumAckers(int numExecutors)

對於:parallelism_hint (並行度暗示)
其實就是Executor執行緒的個數,如果配置了worker就會平均分配到可用的worker上
對於:setNumTasks(Number val)
每個Executor執行器執行幾個執行緒去做這件事,可以理解為多執行緒中同時執行幾個run方法裡
對於setNumWorkers
顧名思義及時jvm的數量
對於setNumAckers
訊息處理的acker數量,輔助用,根據需求修改
其實在官網上有一個非常好的圖片可以說清楚他們的關係:

這裡寫圖片描述
關於動態修改需要知道的是:其實就是在調整executor的數量
在命令列動態修改並行度
除了使用程式碼進行調整,還可以在shell命令列下對並行度進行調整。
storm rebalance mytopology -w 10 -n 2 -e spout=2 -e bolt=2
表示 10秒之後對mytopology進行並行度調整。把spout調整為2個executor,把bolt調整為2個executor
注意:並行度主要就是調整executor的數量,但是調整之後的executor的數量必須小於等於task的數量,如果分配的executor的執行緒數比task數量多的話也只能分配和task數量相等的executor。

相關推薦

理解Storm並行

一個Topology可以執行多個Worker上,這樣可以提高資料處理能力,因為一個worker就是一個程序,更確切的說是一個JVM,很自然的,我們可以想到如果一個worker中可以再起多個執行緒的話效率就會很高。事實上storm就是這麼幹的,worker並不是s

Storm並行和流分組詳解

並行度 對於一個拓撲來說,並行度其實就是task,task是最小的計算單元,每個spout/bolt的相關程式碼副本都會執行在一個task中。並不是executor,因為預設情況下一個executor只有一個task,executor的數量和task是相等的。

Storm並行詳解

注意:並行度主要就是調整executor的數量,但是調整之後的executor的數量必須小於等於task的數量,如果分配的executor的執行緒數比task數量多的話也只能分配和task數量相等的executor。 TASK的存在只是為了topology擴充套件的靈活性,與並行度無關。 executor的數

【原】【譯文】理解storm拓撲並行

rec 分享 矩形 bolt pos div pro out data 原文地址: http://storm.apache.org/releases/1.2.1/Understanding-the-parallelism-of-a-Storm-topology.html 什

Apache Storm 官方文件 —— 理解 Storm 拓撲的並行(parallelism)概念

原文連結    譯者:魏勇 一個執行中的拓撲是由什麼構成的:工作程序(worker processes),執行器(executors)和任務(tasks) 在一個 Storm 叢集中,Storm 主要通過以下三個部件來執行拓撲: 工作程序(worker processes) 執行器(exec

kafka中topic的partition數量和customerGroup的customer數量關係以及storm消費kafka時並行設定問題總結:

前段時間通過網上查詢和自己測試仔細研究了partition和customer關係以及工作中遇到的storm並行度調整的問題,認真梳理了一下現總結如下: 一、先說kafka部分: produce方面: 如果有多個分割槽,傳送的時候按照key值hashCode%partit

storm並行

storm的並行度 是什麼組成了一個執行中的topology:工作程序(worker processes),執行器(executors)和任務(tasks) 在一個 Storm 叢集中,Storm 主要通過以下三個部件來執行拓撲: 工作程序(worker processes) 執

Storm並行詳解

文章來源:http://www.bubuko.com/infodetail-822074.html Storm的並行度詳解 Storm的並行度是非常重要的,通過提高並行度可以提高storm程式的計算能力。 那strom是如何提高並行度的呢? Strom程式的執

Storm學習筆記(5)- 並行

文章目錄 並行度概念詳解 Storm作業執行UI頁面上的引數詳解 並行度設定 worker數量的設定 executor數量的設定 task數量的設定 acker的設定 並行

Storm(四)並行和流分組

並行度(parallelism)概念 一個執行中的拓撲是由什麼構成的:工作程序(worker processes),執行器(executors)和任務(tasks) 在 Worker 中執行的是拓撲的

Storm(五)拓撲並行

        Apache Storm分散式叢集主要節點由控制節點(Nimbus節點)和工作節點(Supervisor節點),一個工作節點執行一個或者多個Worker 程序,Worker 是Topol

storm(四) 並行

概念 worker 一個實體機可以執行一個或者多個worker 一個worker只能執行一個topology上的部分或全部component 一個worker是一個獨立的程序 在執行過程中可以調整worker的數量 executor 一個worker中可以

線程池與並行

資源 start 創建 sta tel span nds sys 不同的 本節將展示線程池如何工作於大量的異步操作,以及它與創建大量單獨的線程的方式有和不同。 代碼Demo: using System;using System.Threading;using System.

MapReduce並行機制

最小值 blocks 結束 完成 多個 its get file 執行時間 1. MapTask並行度機制MapTask的並行度指的是map階段有多少個並行的task共同處理任務。map階段的任務處理並行度,勢必影響到整個job的處理速度。那麽,MapTask並行實例是否越

Hadoop中MapTask的並行的決定機制

在MapReduce程式的執行中,並不是MapTask越多就越好。需要考慮資料量的多少及機器的配置。如果資料量很少,可能任務啟動的時間都遠遠超過資料的處理時間。同樣可不是越少越好。 MapTask的數量根據資料分片來決定,那麼該如何切分呢? 假如我們有一個300M的檔案,它會在HDFS中被切成3塊。0-1

關於對比損失(contrasive loss)的理解(相似越大越相似的情況):

def contro_loss(self): ''' 總結下來對比損失的特點:首先看標籤,然後標籤為1是正對,負對部分損失為0,最小化總損失就是最小化類內損失(within_loss)部分, 讓s逼近margin的過程,是個增大的過程;標籤為0

理解Storm Topology的併發機制

執行時topology的組成:worker processes、executors(執行者執行緒)以及tasks Storm區分了以下三個主要的實體並用來在Storm叢集上執行起一個topology: 1.Worker processes 2.Executors(執行緒) 3.Tas

SEO關鍵詞優化:如何理解被百快速索引?

經常會有SEO人員討論,為什麼我的SEO關鍵詞總是不被快速索引,而實際上這裡主要指的是,針對特定關鍵詞的核心內容,那麼,它主要涉及如下兩個指標: ①索引 ②快速收錄 這裡值得說明的是:索引並不等於收錄,索引只是被百度抓取後,進入百度的索引庫中,它並不一定會在百度搜索結果中展現。 而經

大資料教程(8.5)mapreduce原理之並行

        上一篇部落格介紹了mapreduce的移動流量分析的實戰案例,本篇將繼續分享mapreduce的並行度原理。     一、mapTask並行度的決定機制   

Spark專案實戰-實際專案中常見的優化點-分配更多的資源和調節並行

1、分配更多的資源 (1)分配哪些資源?executor、cpu per executor、memory per executor、driver memory。 (2)在哪裡分配這些資源?在我們在生產環境中,提交spark作業時,用的spark-submit shell指