Spark執行流程

2021-10-05 18:51:56 字數 1972 閱讀 3023

參考博文:

apache spark 是專為大規模資料處理而設計的快速通用的計算引擎。

hadoop雖然已成為大資料技術的事實標準,但其本身還存在諸多缺陷,最主要的缺陷是其mapreduce計算模型延遲過高,無法勝任實時、快速計算的需求,因而只適用於離線批處理的應用場景。

磁碟io開銷大。每次執行時都需要從磁碟讀取資料,並且在計算完成後需要將中間結果寫入到磁碟中,io開銷較大

延遲高。一次計算可能需要分解成一系列按順序執行的mapreduce任務,任務之間的銜接由於涉及到io開銷,會產生較高延遲。而且,在前乙個任務執行完成之前,其他任務無法開始,難以勝任複雜、多階段的計算任務。

spark主要具有如下優點:

spark的計算模式也屬於mapreduce,但不侷限於map和reduce操作,還提供了多種資料集操作型別,程式設計模型比mapreduce更靈活;

spark提供了記憶體計算,中間結果直接放到記憶體中,帶來了更高的迭代運算效率;

spark基於dag的任務排程執行機制,要優於mapreduce的迭代執行機制。

spark最大的特點就是將計算資料、中間結果都儲存在記憶體中,大大減少了io開銷

spark提供了多種高層次、簡潔的api,通常情況下,對於實現相同功能的應用程式,spark的**量要比hadoop少2-5倍。

但spark並不能完全替代hadoop,主要用於替代hadoop中的mapreduce計算模型。實際上,spark已經很好地融入了hadoop生態圈,並成為其中的重要一員,它可以借助於yarn實現資源排程管理,借助於hdfs實現分布式儲存。

spark幾個重要的概念:

以wordcount為例(scala版本):

reducebykey() 會建立shuffledrdd,在shuffle階段會有區域性聚合和全域性聚合兩個步驟,區域性聚合後會將中間結果儲存在磁碟中,而全域性聚合之前需要將中間結果讀取出來再進行操作。

shuffle是切分stage的依據,圖中的橙色線切分兩個stage。因為有兩個分割槽所以stage1和stage2會各生成兩個task(乙個分割槽乙個task),一共4個task,乙個task包含多個rdd及作用於相應rdd上的各種操作

四個步驟

構建dag:呼叫rdd上的方法

切分stage

dagscheduler:將乙個dag切分成一到多個stage,dagscheduler切分的依據是shuffle(寬依賴);

先提交前面的stage,執行完後再提交後面的stage;

stage會生成task,乙個stage會生成很多業務邏輯相同的task,然後stage中生成的task以taskset的形式給taskscheduler

排程task:taskscheduler排程task,將task序列化,根據資源情況將task排程到相應的executor中

執行task:executor接收task,先將task反序列化,然後將task用乙個實現了runnable介面的實現類包裝起來,然後將該包裝類丟入到執行緒池中,包裝類的run方法就會被執行,進而呼叫task的計算邏輯

為什麼要切分stage?

寬依賴:父rdd的乙個分割槽的資料給了子rdd的多個分割槽,即使存在這種可能,也是寬依賴(有shuffle階段的,例如groupbykey)

Spark執行流程

四個步驟 1.構建dag 呼叫rdd上的運算元 2.dagscheduler將dag切分stage 切分的依據是shuffle 將stage中生成的task以taskset的形式給taskscheduler 3.taskscheduler排程task 根據資源情況將task排程到相應的executo...

Spark執行流程概述

cluster manager 在hadoop yarn上主要是指resourcemanager stage 每個job會被劃分為很多組task,作為乙個taskset,名為stage.stage的劃分和排程由dagscheduler負責。stage有非最終的stage shuffle map st...

Spark架構與執行流程

1.闡述hadoop生態系統中,hdfs,mapreduce,yarn,hbase及spark的相互關係。2.spark已打造出結構一體化 功能多樣化的大資料生態系統,請簡述spark生態系統。3.用 描述你所理解的spark執行架構,執行流程。4.軟體平台準備 linux hadoop。1.had...