大資料 Spark(八)

2021-10-09 14:30:42 字數 2331 閱讀 7210

dag(directed acyclic graph) 叫做有向無環圖(有方向,無閉環,代表著資料的流向),原始的rdd通過一系列的轉換就形成了dag。

下圖是基於單詞統計邏輯得到的dag有向無環圖:

乙個job會被拆分為多組task,每組任務被稱為乙個stage。stage表示不同的排程階段,乙個spark job會對應產生很多個stage。stage型別一共有2種:

根據rdd之間依賴關係的不同將dag劃分成不同的stage(排程階段)。對於窄依賴,partition的轉換處理在乙個stage中完成計算。對於寬依賴,由於有shuffle的存在,只能在parent rdd處理完成後,才能開始接下來的計算,由於劃分完stage之後,在同乙個stage中只有窄依賴,沒有寬依賴,可以實現流水線計算,stage中的每乙個分割槽對應乙個task,在同乙個stage中就有很多可以並行執行的task。

劃分stage的依據就是寬依賴

(1) 首先根據rdd的運算元操作順序生成dag有向無環圖,接下裡從最後乙個rdd往前推,建立乙個新的stage,把該rdd加入到該stage中,它是最後乙個stage。

(2) 在往前推的過程中執行遇到了窄依賴就把該rdd加入到本stage中,如果遇到了寬依賴,就從寬依賴切開,那麼最後乙個stage也就結束了。

(3) 重新建立乙個新的stage,按照第二個步驟繼續往前推,一直到最開始的rdd,整個劃分stage也就結束了。

劃分完stage之後,每乙個stage中有很多可以並行執行的task,後期把每乙個stage中的task封裝在乙個taskset集合中,最後把乙個乙個的taskset集合提交到worker節點上的executor程序中執行。

rdd與rdd之間存在依賴關係,stage與stage之前也存在依賴關係,前面stage中的task先執行,執行完成了再執行後面stage中的task,也就是說後面stage中的task輸入資料是前面stage中task的輸出結果資料。

(1) driver端執行客戶端的main方法,構建sparkcontext物件,在sparkcontext物件內部依次構建dagscheduler和taskscheduler

(2) 按照rdd的一系列操作順序,來生成dag有向無環圖。

(3) dagscheduler拿到dag有向無環圖之後,按照寬依賴進行stage的劃分。每乙個stage內部有很多可以並行執行的task,最後封裝在乙個乙個的taskset集合中,然後把taskset傳送給taskscheduler

(4) taskscheduler得到taskset集合之後,依次遍歷取出每乙個task提交到worker節點上的executor程序中執行。

(5) 所有task執行完成,整個任務也就結束了。

(1) driver端向資源管理器master傳送註冊和申請計算資源的請求

(2) master通知對應的worker節點啟動executor程序(計算資源)

(3) executor程序向driver端傳送註冊並且申請task請求

(4) driver端執行客戶端的main方法,構建sparkcontext物件,在sparkcontext物件內部依次構建dagscheduler和taskscheduler

(5) 按照客戶端**洪rdd的一系列操作順序,生成dag有向無環圖

(6) dagscheduler拿到dag有向無環圖之後,按照寬依賴進行stage的劃分。每乙個stage內部有很多可以並行執行的task,最後封裝在乙個乙個的taskset集合中,然後把taskset傳送給taskscheduler

(7) taskscheduler得到taskset集合之後,依次遍歷取出每乙個task提交到worker節點上的executor程序中執行

(8) 所有task執行完成,driver端向master傳送登出請求,master通知worker關閉executor程序,worker上的計算資源得到釋放,最後整個任務也就結束了。

大資料框架 spark

rdd 彈性分布式資料集。operation transformation 和action,乙個返回rdd,乙個返回值。lineage rdd之間的依賴關係,如何演變過來。partition rdd分割槽,按block切分 narrow dependency 窄依賴 父rdd全進入子rdd wide...

Python與Spark大資料

資料分析經常會遇到資料量大的問題,比如用python語言時經常會遇到記憶體溢位的問題,即使把整個機器記憶體全部使用,達到最大使用率,還是無濟於事,比如資料量是10t,並且在大資料量下,既要保證資料能夠得出結果,還要乙個好的模型進行迭代訓練,得到乙個好的模型。這些很難。對於第乙個問題,就算單機記憶體再...

spark大資料基礎概念

hive和hbase是兩種基於hadoop的不同技術 hive是一種類sql的引擎,並且執行mapreduce任務,hbase是一種在hadoop之上的nosql 的key vale資料庫。當然,這兩種工具是可以同時使用的。就像用google來搜尋,用facebook進行社交一樣,hive可以用來進...