Spark 中 File,Block,Split,Task,Partition,RDD概念的理解

1,在 HDFS 中會以 Block 爲單位進行存儲不少的 File,也就是說每一個 File 可能會被拆分紅多個 Block 存儲在 HDFS 上;spa

2,當 Spark 讀取 HDFS 上的文件做爲輸入時,會根據具體數據格式對應的 InputFormat 進行解析,通常狀況下是將不少個 Block 合併成一個 InputSplit(InputSplit不能跨越文件);線程

3,而後,會將這些 InputSplit 生成具體的 Task,一個 InputSplit 對應一個 Task;orm

4,而後這些 Task 會被分配到集羣上的節點中每一個 Executor 去執行;cdn

注:blog

a,每一個節點上會起一個或多個 Executor ;get

b,每一個 Executor 是由若干個 core 組成(這裏的 core 是虛擬的 core,並非指物理機器的 cpu 核,通常來講 spark 配置的 executor 核數不該該超過該節點的物理 cpu 核數),每一個 core 一次只能執行一個 Task,其實這裏的每一個 Task 對應一個線程;it

5,每一個 Task 執行的結果就是生成了下一個 RDD 的一個 Partiotion;spark

具體能夠看下圖:io

圖解

參考:www.zhihu.com/question/33…class

相關文章
相關標籤/搜索