1. 程式人生 > >Spark和Hadoop的架構區別解讀

Spark和Hadoop的架構區別解讀

總的來說,Spark採用更先進的架構,使得靈活性、易用性、效能等方面都比Hadoop更有優勢,有取代Hadoop的趨勢,但其穩定性有待進一步提高。我總結,具體表現在如下幾個方面:

框架:

  • Hadoop:MapRedcue由Map和Reduce兩個階段,並通過shuffle將兩個階段連線起來的。但是套用MapReduce模型解決問題,不得不將問題分解為若干個有依賴關係的子問題,每個子問題對應一個MapReduce作業,最終所有這些作業形成一個DAG。
  • Spark:是通用的DAG框架,可以將多個有依賴關係的作業轉換為一個大的DAG。核心思想是將Map和Reduce兩個操作進一步拆分為多個元操作,這些元操作可以靈活組合,產生新的操作,並經過一些控制程式組裝後形成一個大的DAG作業。

中間計算結果處理:

  • Hadoop:在DAG中,由於有多個MapReduce作業組成,每個作業都會從HDFS上讀取一次資料和寫一次資料(預設寫三份),即使這些MapReduce作業產生的資料是中間資料也需要寫HDFS。這種表達作業依賴關係的方式比較低效,會浪費大量不必要的磁碟和網路IO,根本原因是作業之間產生的資料不是直接流動的,而是藉助HDFS作為共享資料儲存系統。
  • Spark:在Spark中,使用記憶體(記憶體不夠使用本地磁碟)替代了使用HDFS儲存中間結果。對於迭代運算效率更高。

操作模型:

  • Hadoop:只提供了Map和Reduce兩種操作所有的作業都得轉換成Map和Reduce的操作。
  • Spark:提供很多種的資料集操作型別比如Transformations 包括map, filter, flatMap, sample, groupByKey, reduceByKey, union, join, cogroup, mapValues,sort,partionBy等多種操作型別,還提供actions操作包括Count,collect, reduce, lookup, save等多種。這些多種多樣的資料集操作型別,給開發上層應用的使用者提供了方便。