为何Spark更高效?
learn from 從0開(kāi)始學(xué)大數(shù)據(jù)(極客時(shí)間)
Spark 的計(jì)算階段
-
Hadoop MapReduce 簡(jiǎn)單粗暴地根據(jù) shuffle 將大數(shù)據(jù)計(jì)算分成 Map 和 Reduce 兩個(gè)階段,然后就算完事了。
-
而 Spark 更細(xì)膩一點(diǎn),將前一個(gè)的 Reduce 和后一個(gè)的 Map 連接起來(lái),當(dāng)作一個(gè)階段持續(xù)計(jì)算,形成一個(gè)更加優(yōu)雅、高效的計(jì)算模型,雖然其本質(zhì)依然是 Map 和 Reduce。
但是這種多個(gè)計(jì)算階段依賴(lài)執(zhí)行的方案可以有效減少對(duì) HDFS 的訪問(wèn),減少作業(yè)的調(diào)度執(zhí)行次數(shù),因此執(zhí)行速度也更快 -
和 Hadoop MapReduce 主要使用磁盤(pán)存儲(chǔ) shuffle 過(guò)程中的數(shù)據(jù)不同,Spark 優(yōu)先使用內(nèi)存 進(jìn)行數(shù)據(jù)存儲(chǔ),包括 RDD 數(shù)據(jù)。
除非是內(nèi)存不夠用了,否則是盡可能使用內(nèi)存, 這也是 Spark 性能比 Hadoop 高的另一個(gè)原因
Spark 的作業(yè)管理
- DAGScheduler 根據(jù)代碼生成 DAG 圖以后,Spark 的任務(wù)調(diào)度就以任務(wù)為單位進(jìn)行分配,將任務(wù)分配到分布式集群的不同機(jī)器上執(zhí)行
Spark 的執(zhí)行過(guò)程
總結(jié):
Spark 有三個(gè)主要特性:
- RDD 的編程模型更簡(jiǎn)單
- DAG 切分的多階段計(jì)算過(guò)程更快速
- 使用內(nèi)存存儲(chǔ)中間計(jì)算結(jié)果更高效
這三個(gè)特性使得 Spark 相對(duì) Hadoop MapReduce 可以有更快的執(zhí)行速度,以及更簡(jiǎn)單的編程實(shí)現(xiàn)
總結(jié)
以上是生活随笔為你收集整理的为何Spark更高效?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 天池 在线编程 区分用户名(哈希)
- 下一篇: 利用动态规划(DP)解决 Coin Ch