SparkSpark比MapReduce快100X
Spark對(duì)速度的較大聲稱是它能夠 “在內(nèi)存中運(yùn)行程序比Hadoop MapReduce快100倍,在磁盤上運(yùn)行速度提高10倍?!?Spark可以提出這種說法,因?yàn)樗诠ぷ鞴?jié)點(diǎn)的主存儲(chǔ)器中進(jìn)行處理,并防止對(duì)磁盤進(jìn)行不必要的 I / O操作。
?
Spark提供鏈接任務(wù)
Spark提供的另一個(gè)優(yōu)勢(shì)是即使在應(yīng)用程序編程級(jí)別也可以鏈接任務(wù),而無需寫入磁盤或較大限度地減少對(duì)磁盤的寫入次數(shù)(說的就是DAG的好處)。
Spark減少了磁盤 IO 的操作
Spark 計(jì)算比 MapReduce 快的根本原因在于 DAG 計(jì)算模型。一般而言,DAG 相比MapReduce 在大多數(shù)情況下可以減少 shuffle 次數(shù)。Spark 的 DAGScheduler 相當(dāng)于一個(gè)改進(jìn)版的 MapReduce,如果計(jì)算不涉及與其他節(jié)點(diǎn)進(jìn)行數(shù)據(jù)交換,Spark 可以在內(nèi)存中一次性完成這些操作,也就是中間結(jié)果無須落盤,減少了磁盤 IO 的操作。但是,如果計(jì)算過程中涉及數(shù)據(jù)交換,Spark 也是會(huì)把 shuffle 的數(shù)據(jù)寫磁盤的!有一個(gè)誤區(qū),Spark 是基于內(nèi)存的計(jì)算,所以快,這不是主要原因,要對(duì)數(shù)據(jù)做計(jì)算,必然得加載到內(nèi)存,Hadoop 也是如此,只不過 Spark 支持將需要反復(fù)用到的數(shù)據(jù)給 Cache 到內(nèi)存中,減少數(shù)據(jù)加載耗時(shí),所以 Spark 跑機(jī)器學(xué)習(xí)算法比較在行(需要對(duì)數(shù)據(jù)進(jìn)行反復(fù)迭代)。Spark 基于磁盤的計(jì)算也是比 Hadoop 快。剛剛提到了 Spark 的 DAGScheduler 是個(gè)改進(jìn)版的 MapReduce,所以 Spark天生適合做批處理的任務(wù)。Hadoop 的 MapReduce 雖然不如 spark 性能好,但是 HDFS 仍然是業(yè)界的大數(shù)據(jù)存儲(chǔ)標(biāo)準(zhǔn)。