大數據系列之計算框架MapReduce

CDA數據分析師 出品

1、 MapReduce計算框架簡介

Mapreduce 是hadoop項目中的分佈式運算程序的編程框架,是用戶開發"基於hadoop的數據分析應用"的核心框架,Mapreduce 程序本質上是並行運行的。分佈式程序運行在大規模計算機集羣上,可以並行執行大規模數據處理任務,從而獲得巨大的計算能力。谷歌公司最先提出了分佈式並行編程模型MapReduce,Hadoop MapReduce是它的開源實現。

Hadoop發展到現在已經有三代了(這裏的代指的是軟件版本號後的第一位數字,如我們用的版本爲2.7.5 就是指第二代,第二代可以表示爲hadoop2.x或hadoop2,一代表示爲hadoop1或hadoop1.x),目前主流的是hadoop2,與之對應的就是mapreduce2。下圖爲hadoop1平臺與hadoop2平臺的對比。可以看到hadoop1中平臺和計算框架是一體的,對於一個集羣只能有一個計算框架,而在hadoop2中平臺(資源管理yarn)與計算框架是分離出來的,這樣一個平臺就可以對應多個計算框架了比如可以在運行MapReduce的時候還可以運行spark等計算框架。

2、 MapReduce運行原理

核心思想是移動計算(代碼)的成本低於移動數據的成本,所以只移動計算不移動數據。

MapReduce過程大致分兩個階段,map階段和reduce階段,每個階段都以鍵值對作爲輸入與輸出,其具體的類型由代碼決定,代碼中需要給出map與reduce函數的具體實現高度並行的map階段

在這個階段, 輸入數據被split爲離散的塊,可以被分別/並行處理 在map階段, 通常執行輸入格式解析、 投影(選擇相關的字段)和過濾(刪除不感興趣的記錄)

reduce階段 一個聚合或彙總的階段。 在這個階段, map階段的輸出被聚合以產生期望的結果,所有相關的記錄(record)必須被集中在一起由一個單一的實例處理。

其實在map函數與reduce函數之間還有個shuffle過程,比較複雜我們在下章講解。

3、 MapReduce的優缺點

MapReduce的優點:

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

MapReduce的缺點:

  • 難以實時計算(MapReduce處理的是存儲在本地磁盤上的離線數據)
  • 不能流式計算(MapReduce設計處理的數據源是靜態的)
  • 難以DAG計算

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

疫情當下,昔日匆匆的步伐終於放慢了些,也是時候好好想想自己的職業計劃和人生規劃了。提前做好準備,未雨綢繆,爲未來蓄能——蓄勢待發!

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