天天看點

Spark什麼是寬依賴和窄依賴

寬依賴和窄依賴

什麼是依賴關系

目前的RDD和它的上級的RDD之間的一個描述.

一個應用下面有job,job下面有階段,階段怎麼劃分的,就是通過依賴關系劃分的.

RDD 作為資料結構,本質上是一個隻讀的分區記錄集合。一個 RDD 可以包含多個分區,每個分區就是一個資料集片段。

首先,窄依賴可以支援在同一個節點上,以 pipeline 形式執行多條指令(也叫同一個 Stage 的操作),例如在執行了 map 後,緊接着執行 filter。相反,寬依賴需要所有的父分區都是可用的,可能還需要調用類似 MapReduce 之類的操作進行跨節點傳遞。

其次,則是從失敗恢複的角度考慮。窄依賴的失敗恢複更有效,因為它隻需要重新計算丢失的 parent partition 即可,而且可以并行地在不同節點進行重計算(一台機器太慢就會重新排程到多個節點進行)。

窄依賴

寬依賴

繼續閱讀