Spark教程之Spark中併發度的概念

2021-12-30 03:35:49 字數 1069 閱讀 1121

梳理一下spark中關於併發度涉及的幾個概念file,block,split,task,partition,rdd以及節點數、executor數、core數目的關係。

輸入可能以多個檔案的形式儲存在 hdfs 上,每個 file 都包含了很多塊,稱為block。當 spark 讀取這些檔案作為輸入時,會根據具體資料格式對應的 inputformat 進行解析,一般是將若干個 block 合併成乙個輸入分片,稱為inputsplit,注意 inputsplit 不能跨越檔案。隨後將為這些輸入分片生成具體的task。inputsplit 與 task是一一對應的關係。隨後這些具體的 task 每個都會被分配到集群上的某個節點的某個executor去執行。

每個節點可以起乙個或多個executor。

每個 executor 由若干core組成,每個 executor 的每個 core一次只能執行乙個task 。

每個 task 執行的結果就是生成了目標rdd的乙個partiton

注意: 這裡的 core 是虛擬的 core 而不是機器的物理 cpu 核,可以理解為就是 executor 的乙個工作執行緒。

而 task 被執行的併發度 = executor 數目 * 每個 executor 核數。

至於 partition 的數目:

對於資料讀入階段,例如 sc.textfile,輸入檔案被劃分為多少 inputsplit 就會需要多少初始 task。在 map 階段 partition 數目保持不變。在 reduce 階段,rdd 的聚合會觸發 shuffle 操作,聚合後的 rdd 的 partition 數目跟具體操作有關,例如 repartition 操作會聚合成指定分割槽數,還有一些運算元是可配置的。

spark 程式設計教程

參考 英文 中文 1.2.1版本的 一 快速入門 老規矩,先看乙個簡單示例,有個認識。這個示例來自官方example的sparkpi package org.lujinhong.demo.spark 官方的sparkpi示例 import scala.math.random import org.a...

20 Spark核心程式設計之Spark架構原理

driver driver 程序 我們編寫的spark程式就在driver上,由driver程序執行 master master是個程序,主要是負責資源的排程和分配,還有集群的監控等等職責 worker worker是個程序,主要負責有兩個,乙個是用自己的記憶體,儲存rdd的某個或某些partiti...

Spark中executor memory引數詳解

我們知道,spark執行的時候,可以通過 executor memory 來設定executor執行時所需的memory。但如果設定的過大,程式是會報錯的,如下 555.png 那麼這個值最大能設定多少呢?本文來分析一下。文中安裝的是spark1.6.1,安裝在hadoop2.7上。1 相關的2個引...