Hadoop和Spark的異同
02-03
解決問題的層面不一樣
Hadoop和Spark兩者都是大數據框架,但是各自存在的目的不盡相同。
- Hadoop實質上是解決大數據大到無法在一台計算機上進行存儲、無法在要求的時間內進行處理的問題,是一個分散式數據基礎設施。
- HDFS,它將巨大的數據集分派到一個由普通計算機組成的集群中的多個節點進行存儲,通過將塊保存到多個副本上,提供高可靠的文件存儲。
- MapReduce,通過簡單的Mapper和Reducer的抽象提供一個編程模型,可以在一個由幾十台上百台的機器上並發地分散式處理大量數據集,而把並發、分散式和故障恢復等細節隱藏。
- Hadoop複雜的數據處理需要分解為多個Job(包含一個Mapper和一個Reducer)組成的有向無環圖。
- Spark則允許程序開發者使用有向無環圖(DAG)開發複雜的多步數據管道。而且還支持跨有向無環圖的內存數據共享,以便不同的作業可以共同處理同一個數據。是一個專門用來對那些分散式存儲的大數據進行處理的工具,它並不會進行分散式數據的存儲。
- 可將Spark看作是Hadoop MapReduce的一個替代品而不是Hadoop的替代品。
Hadoop的局限和不足
- 一個Job只有Map和Reduce兩個階段,複雜的計算需要大量的Job完成,Job間的依賴關係由開發人員進行管理。
- 中間結果也放到HDFS文件系統中。對於迭代式數據處理性能比較差。
- Reduce Task需要等待所有的Map Task都完成後才開始計算。
- 時延高,只適用批量數據處理,對於互動式數據處理,實時數據處理的支持不夠。
兩者可合可分
- Hadoop除了提供HDFS分散式數據存儲功能之外,還提供了MapReduce的數據處理功能。所以我們完全可以拋開Spark,僅使用Hadoop自身的MapReduce來完成數據的處理。
- 相反,Spark也不是非要依附在Hadoop身上才能生存。但它沒有提供文件管理系統,所以,它必須和其他的分散式文件系統進行集成才能運作。我們可以選擇Hadoop的HDFS,也可以選擇其他的基於雲的數據系統平台。但Spark默認來說還是被用在Hadoop上面的,被認為它們的結合是最好的選擇。
Spark數據處理速度秒殺MapReduce
- Spark因為處理數據的方式不一樣,會比MapReduce快上很多。MapReduce是分步對數據進行處理的: 「從集群中讀取數據,進行一次處理,將結果寫到集群,從集群中讀取更新後的數據,進行下一次的處理,將結果寫到集群,等等…」
- Spark會在內存中以接近「實時」的時間完成所有的數據分析:「從集群中讀取數據,完成所有必須的分析處理(依賴多個運算元),將結果寫回集群,完成,」 Spark的批處理速度比MapReduce快近10倍,內存中的數據分析速度則快近100倍。
- 如果需要處理的數據和結果需求大部分情況下是靜態的,且有充足的時間等待批處理的完成,MapReduce的處理方式也是完全可以接受的。
- 但如果你需要對時實流數據進行分析,比如來自工廠的感測器收集回來的數據,又或者用戶訪問網站的日誌信息,那麼更應該使用Spark進行處理。
災難恢復機制
- 兩者的災難恢復方式不同,因為Hadoop將每次處理後的數據都寫入到磁碟上,所以其天生就能很有彈性的對系統錯誤進行處理。
- Spark的數據對象存儲在分布於數據集群中的叫做彈性分散式數據集(RDD: Resilient Distributed Dataset)中。這些數據對象既可以放在內存,也可以放在磁碟,所以RDD同樣也可以提供完成的災難恢復功能。
Spark優勢
- Spark的優勢不僅體現在性能提升上,Spark框架為批處理(Spark Core),互動式(Spark SQL),流式(Spark Streaming),機器學習(MLlib),圖計算(GraphX)提供了一個統一的數據處理平台。
- Spark通過在數據處理過程中成本更低的Shuffle方式,將MapReduce提升到一個更高的層次。利用內存數據存儲和接近實時的處理能力,Spark比其他的大數據處理技術的性能要快很多倍。
- Spark將中間結果保存在內存中而不是寫入磁碟,當需要多次處理同一數據集時,這一點特別實用。
- 支持比Map和Reduce更多的函數。
- Spark的RDD是分散式大數據處理的高層次抽象的數據集合,對這個集合的任何操作都可以像函數式編程中操作內存中的集合一樣直觀、簡便,但集合操作的實現確是在後台分解成一系列Task發送到集群上完成。
作者:Yezhiwei Blog
鏈接:Hadoop和Spark的異同 | Yezhiwei Blog聲明:本文來源於網路,版權歸作者所有,轉載請註明,若有什麼問題,請聯繫我們!**APPx小程序生成工具開始招商啦~招商熱線:400-808-1337
推薦閱讀:
※數據科學家必知必會的7款Python工具,你會幾個?
※實時處理中的"exactly once"方案具體的應用場景或者使用方法是什麼?
※Scala 在大數據處理方面有何優勢?
※如何解釋spark mllib中ALS演算法的原理?