MapReduce優劣,理解MapReduce與Hadoop

MapReduce是一種計算模型,用於大規模數據集(大於1TB)的並行運算。概念"Map(映射)“和"Reduce(歸約)”,是它們的主要思想,都是從函數式編程語言裏借來的,還有從矢量編程語言裏借來的特性。它極大地方便了編程人員在不會分佈式並行編程的情況下,將自己的程序運行在分佈式系統上。 當前的軟件實現是指定一個Map(映射)函數,用來把一組鍵值對映射成一組新的鍵值對,指定併發的Reduce(歸約)函數,用來保證所有映射的鍵值對中的每一個共享相同的鍵組。

MapReduce的優缺點:

優點:

1.易於編程;
2.良好的擴展性;
3.高容錯性;
4.適合PB級別以上的大數據的分佈式離線批處理。

儘管MapReduce極大的簡化了大數據分析,但是隨着大數據需求和使用模式的擴大,用戶的需求也越來越多:
1 更復雜的多重處理需求(比如迭代計算, ML, Graph);
2 低延遲的交互式查詢需求(比如ad-hoc query)
而MapReduce計算模型的架構導致上述兩類應用先天緩慢

缺點:

1.難以實時計算(MapReduce處理的是存儲在本地磁盤上的離線數據)
2.不能流式計算(MapReduce設計處理的數據源是靜態的)
3.難以DAG計算(有向無環圖計算,由於多個任務存在依賴關係,後一個應用的輸入是前一個應用的輸出。解決這一問題的方式有Apache的Tez計算框架,它是基於hadoop Yarn之上的DAG計算框架,它將MapReduce任務分解爲多個子任務同時可以把多個Map/ Reduce任務合併成一個大的DAG任務,這樣當前一個任務完成之後,直接將結果輸出給下一個任務,不用將結果寫到磁盤之上,減少了Map/Reduce之間的文件存儲。同時合理的組合其子過程,減少了任務的運行時間。)


MapReduce的代替產物:Spark

Spark彌補了MapReduce的不足,優勢:
1.每一個作業獨立調度,可以把所有的作業做一個圖進行調度,各個作業之間相互依賴,在調度過程中一起調度,速度快。
2.所有過程都基於內存,所以通常也將Spark稱作是基於內存的迭代式運算框架。
3.spark提供了更豐富的算子,讓操作更方便。
4.更容易的API:支持Python,Scala和Java

MapReduce不會被完全替代

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


Hadoop 、Hive、Mapreduce之間的關係

Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構。
用戶可以在不瞭解分佈式底層細節的情況下,開發分佈式程序。充分利用集羣的威力進行高速運算和存儲。
Hadoop實現了一個分佈式文件系統(Hadoop Distributed File System),簡稱HDFS。HDFS有高容錯性的特點,並且設計用來部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)來訪問應用程序的數據,適合那些有着超大數據集(large data set)的應用程序。HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(streaming access)文件系統中的數據。
Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS爲海量的數據提供了存儲,而MapReduce則爲海量的數據提供了計算。

這個寫的挺好的:教你理解MapReduce與Hadoop

Hive是Hadoop的一個組件,作爲數據廠庫,Hive的數據是存儲在Hadoop的文件系統中的,Hive爲Hadoop提供SQL語句,使Hadoop可以通過SQL語句操作文件系統中的數據。Hive是依賴Hadoop而存在的。

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