1. 程式人生 > >兄臺別走,帶您去看Hadoop和Spark的不同!!!

兄臺別走,帶您去看Hadoop和Spark的不同!!!

一、Spark它主要包含以下幾個方面:
Spark Core – 用於通用分散式資料處理的引擎。它不依賴於任何其他元件,可以執行在任何商用伺服器叢集上。
Spark Sql – 執行在Spark上的SQL查詢語句,支援一系列SQL函式和HiveQL。但是還不是很成熟,所以不要在生產系統中使用;而HiveQL集成了需要的hive元資料和Hive相關的jar包。
Spark Streaming – 基於spark的微批處理引擎,支援各種各樣資料來源的匯入。唯一依賴的是Spark Core引擎。
MLib – 構建在spark之上的機器學習庫,支援一系列資料探勘演算法。
二、Hadoop 組成
Hadoop HDFS:一個高可靠、高吞吐量的分散式檔案系統。
Hadoop MapReduce:一個分散式的離線平行計算框架。
Hadoop YARN:作業排程與叢集資源管理的框架。
Hadoop Common:支援其他模組的工具模組(Configuration、RPC、序列化機制、日誌操作)。
三、hadoop的優勢與不足
高可靠性:因為 Hadoop 假設計算元素和儲存會出現故障,因為它維護多個工作資料副
本,在出現故障時可以對失敗的節點重新分佈處理。
高擴充套件性:在叢集間分配任務資料,可方便的擴充套件數以千計的節點。
高效性:在 MapReduce 的思想下,Hadoop 是並行工作的,以加快任務處理速度。
高容錯性:自動儲存多份副本資料,並且能夠自動將失敗的任務重新分配。
MapRecue存在以下侷限:
1.只提供兩個操作,Map和Reduce,表達力欠缺。
2.一個Job只有Map和Reduce兩個階段,複雜的計算需要大量的Job完成,Job之間的依賴關係是由開發者自己管理的。
3.中間結果也放在HDFS檔案系統中
4.ReduceTask需要等待所有MapTask都完成後才可以開始延時高,只適用Batch資料處理,對於互動式資料處理,實時資料處理的支援不夠 。
四、Spark 是在借鑑了 MapReduce 之上發展而來的,繼承了其分散式平行計算的優點並改進了 MapReduce 明顯的缺陷;
首先,Spark 把中間資料放到記憶體中,迭代運算效率高。MapReduce 中計算結果需要落地,儲存到磁碟上,這樣勢必會影響整體速度,而 Spark 支援 DAG 圖的分散式平行計算的程式設計框架,減少了迭代過程中資料的落地,提高了處理效率。(延遲載入)
其次,Spark 容錯性高。Spark 引進了彈性分散式資料集 RDD (Resilient DistributedDataset) 的抽象,它是分佈在一組節點中的只讀物件集合,這些集合是彈性的,如果資料集一部分丟失,則可以根據“血統”(即允許基於資料衍生過程)對它們進行重建。另外在RDD 計算時可以通過 CheckPoint 來實現容錯。
最後,Spark 更加通用。mapreduce 只提供了 Map 和 Reduce 兩種操作,Spark 提供的資料集操作型別有很多,大致分為:Transformations 和 Actions 兩大類。Transformations包括 Map、Filter、FlatMap、Sample、GroupByKey、ReduceByKey、Union、Join、Cogroup、MapValues、Sort 等多種操作型別,同時還提供 Count, Actions 包括 Collect、Reduce、Lookup 和 Save 等操作。
五、Spark和MR計算對比
在這裡插入圖片描述


六、Spark迭代計算過程
在這裡插入圖片描述
總結:
1.MR基於磁碟計算引擎,Spark基於記憶體計算引擎;
2.Spark可以進行迭代計算,而MR不可以,他只是Map階段和Reduce階段!