Spark 是一種與 Hadoop 相似的開源集群計算環(huán)境,但是兩者之間還存在一些不同之處,這些有用的不同之處使 Spark 在某些工作負(fù)載方面表現(xiàn)得更加優(yōu)越,換句話說,Spark 啟用了內(nèi)存分布數(shù)據(jù)集,除了能夠提供交互式查詢外,它還可以優(yōu)化迭代工作負(fù)載。Spark,擁有Hadoop MapReduce所具有的優(yōu)點;但不同于MapReduce的是Job中間輸出結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫HDFS,因此Spark能更好地適用于數(shù)據(jù)挖掘與機器學(xué)習(xí)等需要迭代的MapReduce的算法。
Spark數(shù)據(jù)處理速度秒殺MapReduce
Spark因為其處理數(shù)據(jù)的方式不一樣,會比MapReduce快上很多。MapReduce是分步對數(shù)據(jù)進(jìn)行處理的: ”從集群中讀取數(shù)據(jù),進(jìn)行一次處理,將結(jié)果寫到集群,從集群中讀取更新后的數(shù)據(jù),進(jìn)行下一次的處理,將結(jié)果寫到集群,等等…“ Booz Allen Hamilton的數(shù)據(jù)科學(xué)家Kirk Borne如此解析。
反觀Spark,它會在內(nèi)存中以接近“實時”的時間完成所有的數(shù)據(jù)分析:“從集群中讀取數(shù)據(jù),完成所有必須的分析處理,將結(jié)果寫回集群,完成,” Born說道。Spark的批處理速度比MapReduce快近10倍,內(nèi)存中的數(shù)據(jù)分析速度則快近100倍。
如果需要處理的數(shù)據(jù)和結(jié)果需求大部分情況下是靜態(tài)的,且你也有耐心等待批處理的完成的話,MapReduce的處理方式也是完全可以接受的。
但如果你需要對流數(shù)據(jù)進(jìn)行分析,比如那些來自于工廠的傳感器收集回來的數(shù)據(jù),又或者說你的應(yīng)用是需要多重數(shù)據(jù)處理的,那么你也許更應(yīng)該使用Spark進(jìn)行處理。
大部分機器學(xué)習(xí)算法都是需要多重數(shù)據(jù)處理的。此外,通常會用到Spark的應(yīng)用場景有以下方面:實時的市場活動,在線產(chǎn)品推薦,網(wǎng)絡(luò)安全分析,機器日記監(jiān)控等。