1. 程式人生 > >MapReduce---之與spark的區別

MapReduce---之與spark的區別

Mapreduce和spark是資料處理層兩大核心,瞭解和學習大資料必須要重點掌握的環節,根據自己的經驗和大家做一下知識的分享。

 

首先了解一下Mapreduce,它最本質的兩個過程就是Map和Reduce,Map的應用在於我們需要資料一對一的元素的對映轉換,比如說進行擷取,進行過濾,或者任何的轉換操作,這些一對一的元素轉換就稱作是Map;Reduce主要就是元素的聚合,就是多個元素對一個元素的聚合,比如求Sum等,這就是Reduce。

Mapreduce是Hadoop1.0的核心,Spark出現慢慢替代Mapreduce。那麼為什麼Mapreduce還在被使用呢?因為有很多現有的應用還依賴於它,它不是一個獨立的存在,已經成為其他生態不可替代的部分,比如pig,hive等。

儘管MapReduce極大的簡化了大資料分析,但是隨著大資料需求和使用模式的擴大,使用者的需求也越來越多:

1.    更復雜的多重處理需求(比如迭代計算, ML, Graph);

2.    低延遲的互動式查詢需求(比如ad-hoc query)

而MapReduce計算模型的架構導致上述兩類應用先天緩慢,使用者迫切需要一種更快的計算模型,來補充MapReduce的先天不足。

    Spark的出現就彌補了這些不足,我們來了解一些Spark的優勢:

1.每一個作業獨立排程,可以把所有的作業做一個圖進行排程,各個作業之間相互依賴,在排程過程中一起排程,速度快。

2.所有過程都基於記憶體,所以通常也將Spark稱作是基於記憶體的迭代式運算框架。

3.spark提供了更豐富的運算元,讓操作更方便。

4.更容易的API:支援Python,Scala和Java

其實spark裡面也可以實現Mapreduce,但是這裡它並不是演算法,只是提供了map階段和reduce階段,但是在兩個階段提供了很多演算法。如Map階段的map, flatMap, filter, keyBy,Reduce階段的reduceByKey, sortByKey, mean, gourpBy, sort等。

 以上就是和大家做的一個知識分享,只是個人的一些見解,對於具體概念的知識方面大家可以私下裡去學習一下,有時間也可以去關注一下“大資料cn”和“大資料時代學習中心”這些微信公眾服務號,裡面介紹的一些大資料發展趨勢,大資料知識以及分享的一些資料,都挺不錯的,建議關注看看,期望大家都可以有所進步!
--------------------- 
作者:大資料時代培訓中心 
來源:CSDN 
原文:https://blog.csdn.net/dashujuedu/article/details/53487199?utm_source=copy 
版權宣告:本文為博主原創文章,轉載請附上博文連結!