Spark位於內存處理引擎中,因此儘管它是基於MapReduce / Hadoop構建的,但它比MapReduce更快。Spark擁有豐富的庫集,用於數據處理,分析,機器學習,查詢等。

可以說,MapReduce是像C這樣的低級語言編程語言,而Spark是像SQL這樣的高級語言。因此,如果需要深入研究數據,那麼MapReduce將比Spark更好。另一個比喻是MapReduce是PL / SQL語言,而Spark是SQL語言


Spark已經取代Hadoop成為最活躍的開源大數據項目,但是,在選擇大數據框架時,企業不能因此就厚此薄彼

近日,著名大數據專家Bernard Marr在一篇文章中分析了Spark和 Hadoop 的異同

Hadoop和Spark均是大數據框架,都提供了一些執行常見大數據任務的工具,但確切地說,它們所執行的任務並不相同,彼此也並不排斥

雖然在特定的情況下,Spark據稱要比Hadoop快100倍,但它本身沒有一個分散式存儲系統

而分散式存儲是如今許多大數據項目的基礎,它可以將 PB 級的數據集存儲在幾乎無限數量的普通計算機的硬碟上,並提供了良好的可擴展性,只需要隨著數據集的增大增加硬碟

因此,Spark需要一個第三方的分散式存儲,也正是因為這個原因,許多大數據項目都將Spark安裝在Hadoop之上,這樣,Spark的高級分析應用程序就可以使用存儲在HDFS中的數據了

與Hadoop相比,Spark真正的優勢在於速度,Spark的大部分操作都是在內存中,而Hadoop的MapReduce系統會在每次操作之後將所有數據寫回到物理存儲介質上,這是為了確保在出現問題時能夠完全恢復,但Spark的彈性分散式數據存儲也能實現這一點

另外,在高級數據處理(如實時流處理、機器學習)方面,Spark的功能要勝過Hadoop

在Bernard看來,這一點連同其速度優勢是Spark越來越受歡迎的真正原因

實時處理意味著可以在數據捕獲的瞬間將其提交給分析型應用程序,並立即獲得反饋

在各種各樣的大數據應用程序中,這種處理的用途越來越多,比如,零售商使用的推薦引擎、製造業中的工業機械性能監控

Spark平臺的速度和流數據處理能力也非常適合機器學習演算法,這類演算法可以自我學習和改進,直到找到問題的理想解決方案

這種技術是最先進位造系統(如預測零件何時損壞)和無人駕駛汽車的核心

Spark有自己的機器學習庫MLib,而Hadoop系統則需要藉助第三方機器學習庫,如Apache Mahout

實際上,雖然Spark和Hadoop存在一些功能上的重疊,但它們都不是商業產品,並不存在真正的競爭關係,而通過為這類免費系統提供技術支持贏利的公司往往同時提供兩種服務

例如,Cloudera 就既提供 Spark服務也提供 Hadoop服務,並會根據客戶的需要提供最合適的建議

Bernard認為,雖然Spark發展迅速,但它尚處於起步階段,安全和技術支持基礎設施方還不發達,在他看來,Spark在開源社區活躍度的上升,表明企業用戶正在尋找已存儲數據的創新用法


  1. 誕生的先後順序,hadoop屬於第一代開源大數據處理平臺,而spark屬於第二代
  2. 屬於下一代的spark肯定在綜合評價上要優於第一代的hadoop
  3. spark和hadoop在分散式計算的底層思路上,其實是極為相似的,即mapreduce分散式運算模型:將運算分成兩個階段,階段1-map,負責從上游拉取數據後各自運算,然後將運算結果shuffle給下游的reduce,reduce再各自對通過shuffle讀取來的數據進行聚合運算
  4. spark和hadoop在分散式計算的具體實現上,又有區別;hadoop中的mapreduce運算框架,一個運算job,進行一次map-reduce的過程;而spark的一個job中,可以將多個map-reduce過程級聯進行
  5. spark和hadoop的另一個區別是,spark是一個運算平臺,而hadoop是一個複合平臺(包含運算引擎,還包含分散式文件存儲系統,還包含分散式運算的資源調度系統),所以,spark跟hadoop來比較的話,主要是比運算這一塊
  6. 大數據技術發展到目前這個階段,hadoop(主要是說它的運算部分)日漸式微,而spark目前如日中天,相關技術需求量大,offer好拿,薪資相對更高


對比不恰當。應該去關注hove和spark的區別。不完整的比喻,hadoop是鐵軌,上面跑綠皮車hive和跑高鐵spark有區別。而不應該問鐵軌和高鐵有什麼區別。


Hadoop是目前最主流的大數據生態體系,其核心包含HDFS分散式存儲,hive數據倉庫,hbase列式資料庫及yarn分散式調度等組件。而spark是基於內存計算的分散式計算引擎。可以和Hadoop集成使用。


主要是編程思想不一樣,spark 有眾多運算元可以完成業務需要,spark 十來行代碼就能解決的任務,在 hadoop map reduce需要幾百行,而且編寫過程十分痛苦,要學肯定要學 spark 了,hadoop 可以說是一個生態,可以學一下 hdfs ,yarn 之類的,但 map reduce 沒必要再花時間去寫,直接上手 spark 就好


推薦閱讀:
相關文章