大數據開發學習:Spark和Hadoop MapReduce有什麼區別?

很多人認爲Spark 將代替 Hadoop MapReduce,成爲未來大數據處理發展的方向,MapReduce和Spark之間存在哪些區別?Spark會取代Hadoop嗎?大數據技術學習爲什麼要既要學習Hadoop又要學習Spark?

在這裏還是要推薦下我自己建的大數據學習交流羣:199427210,羣裏都是學大數據開發的,如果你正在學習大數據 ,小編歡迎你加入,大家都是軟件開發黨,不定期分享乾貨(只有大數據軟件開發相關的),包括我自己整理的一份最新的大數據進階資料和高級開發教程,歡迎進階中和進想深入大數據的小夥伴加入。

Hadoop MapReduce:

一種編程模型,是面向大數據並行處理的計算模型、框架和平臺,用於大規模數據集(大於1TB)的並行運算。"Map(映射)"和"Reduce(歸約)",是它們的主要思想,MapReduce採用"分而治之"的思想,簡單地說,MapReduce就是"任務的分解與結果的彙總"。

Spark:

專爲大規模數據處理而設計的快速通用的計算引擎,是一種與 Hadoop 相似的開源集羣計算環境,擁有Hadoop MapReduce所具有的優點,Spark是MapReduce的替代方案,而且兼容HDFS、Hive,可融入Hadoop的生態系統,以彌補MapReduce的不足。

Spark特點:速度快、容易上手開發、超強的通用性、集成Hadoop、極高的活躍度。

 

Spark與Hadoop MapReduce

Spark與Hadoop MapReduce在業界有兩種說法 :

一是 Spark 將代替 Hadoop MapReduce,成爲未來大數據處理發展的方向 ;

二是 Spark 將會和 Hadoop 結合,形成更大的生態圈。

Spark是借鑑了mapreduce並在其基礎上發展起來的,繼承了其分佈式計算的優點並改進了mapreduce明顯的缺陷,但是二者也有不少的差異。

二者的一些區別:

1、Spark的速度比MapReduce快,Spark把運算的中間數據存放在內存,迭代計算效率更高;mapreduce的中間結果需要落地,需要保存到磁盤,比較影響性能;

2、spark容錯性高,它通過彈性分佈式數據集RDD來實現高效容錯;mapreduce容錯可能只能重新計算了,成本較高;

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

4、spark框架和生態更爲複雜,很多時候spark作業都需要根據不同業務場景的需要進行調優已達到性能要求;mapreduce框架及其生態相對較爲簡單,對性能的要求也相對較弱,但是運行較爲穩定,適合長期後臺運行;

5、Spark API方面- Scala: Scalable Language, 是進行並行計算的最好的語言. 與Java相比,極大的減少代碼量(Hadoop框架的很多部分是用Java編寫的)。

Spark 和 Hadoop MapReduce 的重點應用場合有所不同。

Spark會取代Hadoop嗎?

Hadoop和Spark兩者都是大數據框架,Hadoop實質上更多是一個分佈式數據基礎設施:它將巨大的數據集分派到一個由普通計算機組成的集羣中的多個節點進行存儲,意味着不需要購買和維護昂貴的服務器硬件,還會索引和跟蹤這些數據,讓大數據處理和分析效率達到前所未有的高度。 加米穀大數據開發培訓,6月零基礎班預報名中,提前預報可領取免費獨家學習資料+學費優惠!

Spark,則是那麼一個專門用來對那些分佈式存儲的大數據進行處理的工具,它並不會進行分佈式數據的存儲。Spark的限制:內存。

看圖:

Hadoop:分佈式計算架構鼻祖

所謂分佈式計算過程就像螞蟻搬家一樣,將一個大型任務分割成很多部分,每一臺電腦相當於一個小螞蟻將其中一部分搬走。Hadoop作爲分佈式系統的基礎架構,其重要性不言而喻。

Hadoop的數據處理工作在硬盤層面,藉助HDFS(分佈式文件系統),可以將架構下每一臺電腦中的硬盤資源聚集起來,不論是存儲計算還是調用都可以視爲一塊硬盤使用,使用集羣管理和調度軟件Yarn,利用Map/Reduce計算框架,就可以在這上面進行計算編程。從而大幅降低了整體計算平臺的硬件投入成本。而這也是最基礎的分佈式計算架構。

Spark流數據處理

所謂流數據處理其實不難理解,比如看網上視頻,都是下載一段看一段,然後快結束的時候自動下載下一段。由於Hadoop的計算過程放在硬盤,受制於硬件條件限制,數據的吞吐和處理速度明顯不如使用內存來的快。於是Spark登上舞臺,與Hadoop相比,Spark真正的優勢在於速度。

很多人在談到Spark代替Hadoop的時候,其實很大程度上指的是代替MapReduce。

大數據技術學習爲什麼要既要學習Hadoop又要學習Spark?

儘管Hadoop數據處理的速度和難易度都遠比不過Spark,但是由於硬盤斷電後數據可以長期保存,因此在處理需要長期存儲的數據時還是需要藉助Hadoop。 Hadoop首先有分塊存儲得文件系統HDFS,之後延伸出權限、安全等功能,作爲分佈式文件系統越來越完善,Hbase和Spark等都會利用HDFS。

不過Hadoop由於具有非常好的兼容性,因此很容易同Spark進行結合,從而滿足公司的不同需求。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章