hadoop 和 spark 的相同點和不同點?

Hadoop 底層使用 MapReduce 計算架構,只有 map 和 reduce 兩種操作,表達能力比較欠缺,而且在 MR 過程中會重復的讀寫 hdfs,造成大量的磁盤 io 讀寫操作,所以適合高時延環境下批處理計算的應用;
Spark 是基于內存的分布式計算架構,提供更加豐富的數據集操作類型,主要分成轉化操作和行動操作,包括 map、reduce、filter、flatmap、groupbykey、reducebykey、union 和 join 等,數據分析更加快速,所以適合低時延環境下計算的應用;
spark 與 hadoop 最大的區別在于迭代式計算模型。基于 mapreduce 框架的 Hadoop 主要分為 map 和 reduce 兩個階段,兩個階段完了就結束了,所以在一個 job 里面能做的處理很有限;spark 計算模型是基于內存的迭代式計算模型,可以分為 n 個階段,根據用戶編寫的 RDD 算子和程序,在處理完一個階段后可以繼續往下處理很多個階段,而不只是兩個階段。所以 spark 相較于 mapreduce,計算模型更加靈活,可以提供更強大的功能。
但是 spark 也有劣勢,由于 spark 基于內存進行計算,雖然開發容易,但是真正面對大數據的時候,在沒有進行調優的輕局昂下,可能會出現各種各樣的問題,比如 OOM 內存溢出等情況,導致 spark 程序可能無法運行起來,而 mapreduce 雖然運行緩慢,但是至少可以慢慢運行完。
Hadoop/MapReduce 和 Spark 最適合的都是做離線型的數據分析,但 Hadoop 特別適合是單次分析的數據量 “很大” 的情景,而 Spark 則適用于數據量不是很大的情景。
一般情況下,對于中小互聯網和企業級的大數據應用而言,單次分析的數量都不會 “很大”,因此可以優先考慮使用 Spark。
業務通常認為 Spark 更適用于機器學習之類的 “迭代式” 應用,80GB 的壓縮數據(解壓后超過 200GB),10 個節點的集群規模,跑類似 “sum+group-by” 的應用,MapReduce 花了 5 分鐘,而 spark 只需要 2 分鐘。
MapReduce spark
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。