MapReduce入門介紹

2021-12-30 10:13:42 字數 1589 閱讀 3629

mapreduce 定義

mapreduce 是乙個分布式運算程式的程式設計框架,是使用者開發「基於 hadoop 的資料分析應用」的核心框架。

mapreduce 核心功能是將使用者編寫的業務邏輯**和自帶預設元件整合成乙個完整的分布式運算程式,併發執行在乙個 hadoop 集群上。

mapreduce 的缺點:

mapreduce 不擅長做實時計算、流式計算、dag ( 有向圖 ) 計算。

1 )實時計算。mapreduce 無法像 mysql 一樣,在毫秒或者秒級內返回結果。

2 )流式計算。流式計算的輸入資料是動態的,而 mapreduce 的輸入資料集是靜態的,不能動態變化。這是因為 mapreduce 自身的設計特點決定了資料來源必須是靜態的。

3 )dag (有向圖)計算。多個應用程式存在依賴關係,後乙個應用程式的輸入為前乙個的輸出。在這種情況下,mapreduce 並不是不能做,而是使用後,每個 mapreduce 作業的輸出結果都會寫入到磁碟,會造成大量的磁碟 io,導致效能非常的低下。

mapreduce  核心程式設計思想

1)分布式的運算程式往往需要分成至少 2 個階段。

2)第乙個階段的 maptask 併發例項,完全並行執行,互不相干。

3)第二個階段的 reduce task 併發例項互不相干,但是他們的資料依賴於上乙個階段的所有maptask 併發例項的輸出。

4)mapreduce 程式設計模型只能包含乙個 map 階段和乙個 reduce 階段,如果使用者的業務邏輯非常複雜,那就只能多個 mapreduce 程式,序列執行。

mapreduce  程序

乙個完整的 mapreduce 程式在分布式執行時有三類例項程序:

1)mrappmaster:負責整個程式的過程排程及狀態協調。

2)maptask:負責 map 階段的整個資料處理流程。

3)reducetask:負責 reduce 階段的整個資料處理流程。

mapreduce  程式設計規範 (八股文)

使用者編寫的程式分成三個部分:mapper,reducer,driver(提交執行 mr 程式的客戶端)

1)mapper 階段

(1)使用者自定義的 mapper 要繼承自己的父類

(2)mapper 的輸入資料是 kv 對的形式(kv 的型別可自定義)

(3)mapper 中的業務邏輯寫在 map()方法中

(4)mapper 的輸出資料是 kv 對的形式(kv 的型別可自定義)

(5)map()方法(maptask 程序)對每乙個呼叫一次

2)reducer 階段

(1)使用者自定義的 reducer 要繼承自己的父類

(2)reducer 的輸入資料型別對應 mapper 的輸出資料型別,也是 kv

(3)reducer 的業務邏輯寫在 reduce()方法中

(4)reducetask 程序對每一組相同 k 的組呼叫一次 reduce()方法

3)driver 階段

整個程式需要乙個 drvier 來進行提交,提交的是乙個描述了各種必要資訊的 job 物件

MapReduce簡單介紹

mapreduce 定義 hadoop 中的 mapreduce 是乙個使用簡單的軟體框架,基於它寫出來的應用程式能夠執行在由上千個商用機器組成的大型集群上,並以一種可靠容錯式並行處理tb級別的資料集。mapreduce hadoop mapreduce 源於 google 在2004年12月份發表...

十三 MapReduce介紹

mr是乙個分布式運算程式的程式設計框架,是使用者開發基於hadoop的資料分析應用核心框架,mr的核心功能就是將使用者編寫的業務邏輯 和自帶的預設元件整合成乙個完整的分布式運算程式,併發執行在hadoop集群上。1 優點 1.1 mr易於程式設計 它簡單的實現一些介面,就可以完成乙個分布表示式程式。...

Hadoop筆記(一) MapReduce介紹

mapreduce提出了乙個程式設計模型,該模型將問題進行抽象,並轉換為乙個資料集 由鍵值對組成 的計算。該計算由map和reduce兩部分組成,提供對外的介面。定址時間的提高遠遠慢於傳輸速率的提高。mapreduce比較適合以批處理方式處理需要分析整個資料集的問題 ad hoc 一次寫入 多次讀取...