梳理一下Spark中關於併發度涉及的幾個概念File,Block,Split,Task,Partition,RDD以及節點數、Executor數、core數目的關係。
輸入可能以多個文件的形式存儲在HDFS上,每一個File都包含了不少塊,稱爲Block。
當Spark讀取這些文件做爲輸入時,會根據具體數據格式對應的InputFormat進行解析,通常是將若干個Block合併成一個輸入分片,稱爲InputSplit,注意InputSplit不能跨越文件。
隨後將爲這些輸入分片生成具體的Task。InputSplit與Task是一一對應的關係。
隨後這些具體的Task每一個都會被分配到集羣上的某個節點的某個Executor去執行。併發
注意: 這裏的core是虛擬的core而不是機器的物理CPU核,能夠理解爲就是Executor的一個工做線程。
而 Task被執行的併發度 = Executor數目 * 每一個Executor核數。
至於partition的數目:線程