Spark和MR的區別


自己總結

  • MR是基於進程,spark是基於線程
  • Spark的多個task跑在同一個進程上,這個進程會伴隨spark應用程序的整個生命周期,即使沒有作業進行,進程也是存在的
  • MR的每一個task都是一個進程,當task完成時,進程也會結束
  • 所以,spark比MR快的原因也在這,MR啟動就需要申請資源,用完就銷毀,但是spark把進程拿到以后,這個進程會一直存在,即使沒有job在跑,所以后邊的job可以直接啟動,不需要再重新申請資源
  • 速度

spark把運算的中間數據存放在內存,迭代計算效率更高;MR的中間結果需要落地,需要保存到磁盤,這樣必然會有磁盤IO操作,影響性能

  • 容錯性

spark容錯性高,它通過彈性分布式數據集RDD來實現高效容錯,RDD是一組分布式的存儲在節點內存中的只讀性質的數據集,這些集合石彈性的,某一部分丟失或者出錯,可以通過整個數據集的計算流程的血緣關系來實現重建;MR的話容錯可能只能重新計算了,成本較高

  •  適用面

spark更加通用,spark提供了transformation和action這兩大類的多個功能的api,另外還有流式處理sparkstreaming模塊,圖計算GraphX等;MR只提供了map和reduce兩種操作,流計算以及其他模塊的支持比較缺乏

  • 框架和生態

 Spark框架和生態更為復雜,首先由RDD、血緣lineage、執行時的有向無環圖DAG、stage划分等等,

很多時候spark作業都需要根據不同的業務場景的需要進行調優,以達到性能要求,MR框架及其生態相對較為簡單,對性能的要求也相對較弱,但是運行較為穩定,適合長期后台運行

 

  • 運行環境:

MR運行在YARN上,

spark

  1. local:本地運行
  2. standalone:使用Spark自帶的資源管理框架,運行spark的應用
  3. yarn:將spark應用類似mr一樣,提交到yarn上運行
  4. mesos:類似yarn的一種資源管理框架

 參考博客

原文:https://blog.csdn.net/zx8167107/article/details/79086864


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM