一、spark內部原理
——通過rdd,建立dag(邏輯計畫)
——為dag生成物理查詢計畫
——呼叫並執行task
二、生成邏輯執行圖:產生rdd
生成rdd的dag圖。
三、生成邏輯執行圖:rdd之間關係
依賴關係分為兩類。
完全依賴前面的partition只對應後面的乙個partition,不會是多個。重點關注部分依賴(shuffle)
四、生成邏輯執行圖:shuffle
—每個reduce task要從每個map task端讀取一部分資料,網路連線數是:m*r。
—shuffle是分布式計算框架的核心資料交換方式,其實現方式直接決定了計算框架的效能和擴充套件性。
—產生shuffle的運算元:join、cogroup、和*bykey(reducebykey,groupbykey,sortbykey)
五、生成邏輯執行圖:運算元舉例(1)
運算元舉例(2)
運算元舉例(3)
運算元舉例(4)
六、生成物理執行圖:劃分stage
物理計畫分兩步:劃分stage;產生task。
前兩個stage沒有依賴關係可以並行的算。
綜合例項(看圖)
//vidcount vid=>
1//vidtosidnbc vid=> sid for show of nbc
//vidtosidabc vid=> sid for show of abc
vidcounts=vidcount.reducebykey(_+_)
vidtosid=vidtosidnbc.union(vidtosidabc)
vidtosidcount=vidtosid.join(vidtosidabc)
sidcount=vidtosidcount
.map(item=> item._2)
.reducebykey(_+_)
邏輯執行圖
沒有依賴關係可以平行計算。下面分成五個stage。
生成13個task。
七、排程和提交任務
1.作業排程
——fifo(預設)或fair
——優化機制:資料本地性和推測執行
2.任務執行
——task被序列化後,被driver傳送到executor上執行,executor還原task進行本地計算。
——shufflemaptask將中間資料寫到本地(必須寫磁碟,如果不寫磁碟容錯、效率等都會非常差),resulttask遠端讀取資料
——資料用的時候再算,而且資料是流到要計算的位置的
八、生成job(遇到action開始執行)
Spark計算引擎 概述
spark的計算引擎主要包括執行記憶體和shuffle兩部分 執行記憶體主要包括執行記憶體 任務記憶體管理器 taskmemorymanager 記憶體消費者 memorycosumer 等內容。執行記憶體包括在jvm堆上進行分配的執行記憶體池 executionmemorypool 和在作業系統的...
高效能平行計算引擎Storm和Spark比較
對spark storm以及spark streaming引擎的簡明扼要 深入淺出的比較,原文發表於踏得網。spark基於這樣的理念,當資料龐大時,把計算過程傳遞給資料要比把資料傳遞給計算過程要更富效率。每個節點儲存 或快取 它的資料集,然後任務被提交給節點。所以這是把過程傳遞給資料。這和hadoo...
Spark(六) Spark計算模型
整個spark框架都是基於rdd運算元來進行計算的。what is rdd?resilient distributed dataset rdd 分布式彈性資料集,是spark上的乙個核心抽象 表示用於平行計算的,不可修改的,對資料集合進行分片的資料結構 簡單地,可以將rdd看成是spark平台上的通...