Spark計算引擎原理

2021-07-23 22:15:49 字數 2086 閱讀 8792

一、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平台上的通...