作者:王燚光
鏈接:https://www.zhihu.com/question/33270495/answer/93424104
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
梳理一下Spark中關於並發度涉及的幾個概念File,Block,Split,Task,Partition,RDD以及節點數、Executor數、core數目的關系。
輸入可能以多個文件的形式存儲在HDFS上,每個File都包含了很多塊,稱為
Block。
當Spark讀取這些文件作為輸入時,會根據具體數據格式對應的InputFormat進行解析,一般是將若干個Block合並成一個輸入分片,稱為 InputSplit,注意InputSplit不能跨越文件。
隨后將為這些輸入分片生成具體的 Task。InputSplit與Task是 一一對應的關系。
隨后這些具體的Task每個都會被分配到集群上的某個節點的某個 Executor去執行。
當Spark讀取這些文件作為輸入時,會根據具體數據格式對應的InputFormat進行解析,一般是將若干個Block合並成一個輸入分片,稱為 InputSplit,注意InputSplit不能跨越文件。
隨后將為這些輸入分片生成具體的 Task。InputSplit與Task是 一一對應的關系。
隨后這些具體的Task每個都會被分配到集群上的某個節點的某個 Executor去執行。
- 每個節點可以起一個或多個Executor。
- 每個Executor由若干core組成,每個Executor的每個core一次只能執行一個Task。
- 每個Task執行的結果就是生成了目標RDD的一個partiton。
作者:王燚光
鏈接:https://www.zhihu.com/question/33270495/answer/93424104
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。