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