MapReduce編程思想通俗理解

綜述

Map(映射)與Reduce(化簡)來源于LISP和其他函數(shù)式編程語言中的古老的映射和化簡操作无虚,MapReduce操作數(shù)據(jù)的最小單位是一個(gè)鍵值對(duì)。用戶在使用MapReduce編程模型的時(shí)候衍锚,第一步就需要將數(shù)據(jù)抽象為鍵值對(duì)的形式友题,接著map函數(shù)會(huì)以鍵值對(duì)作為輸入,經(jīng)過map函數(shù)的處理戴质,產(chǎn)生一系類新的鍵值對(duì)作為中間結(jié)果輸出到本地度宦。MapReduce計(jì)算框架會(huì)自動(dòng)將這些中間結(jié)果數(shù)據(jù)按照鍵做聚合處理,并將鍵相同的數(shù)據(jù)分發(fā)給reduce函數(shù)處理(用戶可以設(shè)置分發(fā)規(guī)則)告匠。reduce函數(shù)以鍵和對(duì)應(yīng)的值的集合作為輸入戈抄,經(jīng)過reduce函數(shù)的處理后,產(chǎn)生了另外一系列鍵值對(duì)作為最終輸出后专。
如果用表達(dá)式表示划鸽,其過程如下式所示。
{Key1, Value1} → {Key2, List<Value2>} → {Key3, Value3}

簡單案例

讀者可能覺得上面的描述和表達(dá)式非常抽象戚哎,那么讓我們先來看一個(gè)例子裸诽。有一籃蘋果,一些是紅蘋果型凳,一些是青蘋果丈冬,每個(gè)蘋果有一個(gè)唯一編號(hào),如圖4-1所示啰脚,要解決的問題是統(tǒng)計(jì)該籃蘋果的數(shù)目、紅蘋果(深色)的個(gè)數(shù)和青蘋果(淺色)的個(gè)數(shù)实夹。


圖4-1 紅蘋果和青蘋果
假設(shè)有A橄浓、B、C三個(gè)人亮航,A獲得第一排蘋果荸实,B獲得第二排蘋果,這時(shí)缴淋,A和B分別統(tǒng)計(jì)自己手上的蘋果的個(gè)數(shù)准给,然后將結(jié)果告知C,C將A重抖、B的結(jié)果做一次匯總露氮,得到最后結(jié)果。對(duì)于這個(gè)過程钟沛,其實(shí)用到了MapReduce的思想畔规。我們可以從圖4-2看出端倪。


圖4-2 用MapReduce的思想完成蘋果計(jì)數(shù)

A的map函數(shù)的輸入的格式為鍵值對(duì)appleId-count恨统,比如“11-1”表示appleId為11的蘋果個(gè)數(shù)為1叁扫,經(jīng)過map函數(shù)的累和三妈,即將所有appleId的count相加,輸出為新的鍵值對(duì)AppleCount-6莫绣,此時(shí)B也進(jìn)行同樣的操作畴蒲,由于A和B的map函數(shù)輸出的鍵值對(duì)的鍵相同,都為“AppleCount”对室,所以MapReduce框架會(huì)將其都分發(fā)到C作為reduce函數(shù)的輸入模燥,并在reduce函數(shù)中完成對(duì)鍵相同的值的累和,并輸出最后結(jié)果AppleCount-12软驰。如果用表達(dá)式表示涧窒,即為:
{appleId, count} → {AppleCount, List<count>} → {AppleCount, count}
在這個(gè)例子中,就是用MapReduce的思想來完成蘋果計(jì)數(shù)的問題锭亏,細(xì)心的讀者可能發(fā)現(xiàn)纠吴,這個(gè)例子中reduce函數(shù)只執(zhí)行了一次,是否可以執(zhí)行多次呢慧瘤,答案是肯定的戴已,下面來看用MapReduce思想解決對(duì)紅蘋果和青蘋果分別計(jì)數(shù)的問題。
假設(shè)有A锅减、B糖儡、C、D四個(gè)人怔匣,A獲得第一排蘋果握联,B獲得第二排蘋果,A將手上的紅蘋果給C每瞒、青蘋果給D金闽,B將手上的紅蘋果給C、青蘋果給D剿骨。C代芜、D再統(tǒng)計(jì)各自手上的結(jié)果,得到最后結(jié)果浓利,如圖4-3所示挤庇。


圖4-3 用MapReduce完成蘋果顏色統(tǒng)計(jì)

A的map函數(shù)的輸入同上次一樣,在map函數(shù)中贷掖,用color和appleId作為新的鍵值對(duì)重新輸出嫡秕,B也做同樣的操作。而A苹威、B的map函數(shù)的輸出的鍵值對(duì)會(huì)因?yàn)椴煌逆I被分別分發(fā)到C和D執(zhí)行reduce函數(shù)淘菩,而真正的計(jì)數(shù)是由reduce函數(shù)完成,并輸出最后結(jié)果。這里reduce函數(shù)一共執(zhí)行了兩次潮改,第一次是處理鍵為Red的數(shù)據(jù)狭郑,第二次是處理鍵為Green的數(shù)據(jù)。如果用表達(dá)式表示汇在,即為:
{appleId, count} → {color, List<appleId>} → {color, count}

總結(jié)

要理解MapReduce的編程思想翰萨,其核心的一點(diǎn)就是將數(shù)據(jù)用鍵值對(duì)表示。
在現(xiàn)實(shí)生活中糕殉,很多數(shù)據(jù)要么本身就為鍵值對(duì)的形式亩鬼,要么可以用鍵值對(duì)這種方式來表示,例如電話號(hào)碼和通話記錄阿蝶,文件名和文件存儲(chǔ)的數(shù)據(jù)等雳锋,鍵值對(duì)并不是高端數(shù)據(jù)挖掘獨(dú)有的數(shù)據(jù)模型,而是存在于我們身邊非常普通的模型羡洁。

利用分而治之的思想玷过,可以將很多復(fù)雜的數(shù)據(jù)分析問題轉(zhuǎn)變?yōu)橐幌盗蠱apReduce作業(yè),利用Hadoop的提供MapReduce計(jì)算框架筑煮,實(shí)現(xiàn)分布式計(jì)算辛蚊,這樣就能對(duì)海量數(shù)據(jù)進(jìn)行復(fù)雜的數(shù)據(jù)分析,這也是MapReduce的意義所在真仲。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末袋马,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子秸应,更是在濱河造成了極大的恐慌虑凛,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,946評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件软啼,死亡現(xiàn)場離奇詭異桑谍,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)焰宣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門霉囚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捕仔,“玉大人匕积,你說我怎么就攤上這事“竦” “怎么了闪唆?”我有些...
    開封第一講書人閱讀 169,716評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵,是天一觀的道長钓葫。 經(jīng)常有香客問我悄蕾,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,222評(píng)論 1 300
  • 正文 為了忘掉前任帆调,我火速辦了婚禮奠骄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘番刊。我一直安慰自己含鳞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,223評(píng)論 6 398
  • 文/花漫 我一把揭開白布芹务。 她就那樣靜靜地躺著蝉绷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪枣抱。 梳的紋絲不亂的頭發(fā)上熔吗,一...
    開封第一講書人閱讀 52,807評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音佳晶,去河邊找鬼桅狠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛宵晚,可吹牛的內(nèi)容都是我干的垂攘。 我是一名探鬼主播,決...
    沈念sama閱讀 41,235評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼淤刃,長吁一口氣:“原來是場噩夢啊……” “哼晒他!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起逸贾,我...
    開封第一講書人閱讀 40,189評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤陨仅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后铝侵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體灼伤,經(jīng)...
    沈念sama閱讀 46,712評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,775評(píng)論 3 343
  • 正文 我和宋清朗相戀三年咪鲜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了狐赡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,926評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡疟丙,死狀恐怖颖侄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情享郊,我是刑警寧澤览祖,帶...
    沈念sama閱讀 36,580評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站炊琉,受9級(jí)特大地震影響展蒂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,259評(píng)論 3 336
  • 文/蒙蒙 一锰悼、第九天 我趴在偏房一處隱蔽的房頂上張望柳骄。 院中可真熱鬧,春花似錦箕般、人聲如沸夹界。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽可柿。三九已至,卻和暖如春丙者,著一層夾襖步出監(jiān)牢的瞬間复斥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評(píng)論 1 274
  • 我被黑心中介騙來泰國打工械媒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留目锭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,368評(píng)論 3 379
  • 正文 我出身青樓纷捞,卻偏偏與公主長得像痢虹,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子主儡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,930評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容