1. 程式人生 > >四種常見的MapReduce設計模式

四種常見的MapReduce設計模式

使用MapReduce解決任何問題之前,我們需要考慮如何設計。並不是任何時候都需要map和reduce job。

整個MapReduce作業的階段主要可以分為以下四種:

  • Input-Map-Reduce-Output

  • Input-Map-Output

  • Input-Multiple Maps-Reduce-Output

  • Input-Map-Combiner-Reduce-Output

下面我將一一介紹哪種場景使用哪種設計模式。

Input-Map-Reduce-Output

640?wx_fmt=png&wxfrom=5&wx_lazy=1

在這種設計模式中,我們有兩個輸入檔案,其檔案的格式都不一樣,
檔案一的格式是性別作為名字的字首,比如:Ms. Shital Katkar或Mr. Krishna Katkar
檔案二的格式是性別的格式是固定的,但是其位置不固定,比如 Female/Male, 0/1, F/M

640?wx_fmt=png

在MapReduce中,Combiner也被成為Reduce,其接收Map端的輸出作為其輸入,並且將輸出的 key-value 鍵值對作為Reduce的輸入。Combiner的使用目的是為了減少資料傳入到Reduce的負載。

在MapReduce程式中,20%的工作是在Map階段執行的,這個階段也被成為資料的準備階段,各階段的工作是並行進行的。

80%的工作是在Reduce階段執行的,這個階段被成為計算階段,其不是並行的。因此,次階段一般要比Map階段要滿。為了節約時間,一些在Reduce階段處理的工作可以在combiner階段完成。

假設我們有5個部門(departments),我們需要計算個性別的總薪水。但是計算薪水的規則有點奇怪,比如某個性別的總薪水大於200k,那麼這個性別的總薪水需要加上20k;如果某個性別的總薪水大於100k,那麼這個性別的總薪水需要加上10k。如下:

640?wx_fmt=png

以上四種MapReduce模式只是最基本的,我們可以根據自己問題設計不一樣的設計模式。

猜你喜歡

歡迎關注本公眾號:iteblog_hadoop:

0、回覆 電子書獲取 本站所有可下載的電子書

11、更多大資料文章歡迎訪問https://www.iteblog.com及本公眾號(iteblog_hadoop)12、Flink中文文件:http://flink.iteblog.com
640?wx_fmt=jpeg

本部落格微信小程式:

640?wx_fmt=jpeg