首頁(yè)技術(shù)文章正文

Spark是怎么做內(nèi)存計(jì)算的?Spark為什么比MapReduce 快?

更新時(shí)間:2023-06-23 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

Spark會(huì)產(chǎn)生DAG圖,DAG圖會(huì)基于分區(qū)和寬窄依賴關(guān)系劃分階段。一個(gè)階段的內(nèi)部都是窄依賴,窄依賴內(nèi),如果形成前后1:1的分區(qū)對(duì)應(yīng)關(guān)系,就可以產(chǎn)生許多內(nèi)存迭代計(jì)算的管道。

這些內(nèi)存迭代計(jì)算的管道,就是一個(gè)個(gè)具體的執(zhí)行Task,一個(gè)Task是一個(gè)具體的線程,任務(wù)跑在一個(gè)線程內(nèi),就是走內(nèi)存計(jì)算了。

Spark的算子豐富,MapReduce算子圓乏(Map和Reduce),MapReduce這個(gè)編程模型,很難在一套MR中處理復(fù)雜的任務(wù)。很多的復(fù)雜任務(wù),是需要寫多個(gè)MapReduce進(jìn)行串聯(lián).多個(gè)MR串聯(lián)通過磁盤交互數(shù)據(jù)。

Spark可以執(zhí)行內(nèi)存迭代,算子之間形成DAG基于依賴劃分階段后,在階段內(nèi)形成內(nèi)存迭代管道.但是MapReduce的Map和Reduce之間的交互依舊是通過硬盤來交互的.

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!