转:我是如何向老婆解释MapReduce的?
我是如何向老婆解釋MapReduce的?
分享到: 本文由?伯樂在線?-?伯樂在線讀者?翻譯。未經(jīng)許可,禁止轉(zhuǎn)載!英文出處:Shekhar Gulati。歡迎加入翻譯組。
昨天,我在Xebia印度辦公室發(fā)表了一個(gè)關(guān)于MapReduce的演說。演說進(jìn)行得很順利,聽眾們都能夠理解MapReduce的概念(根據(jù)他們的反饋)。我成功地向技術(shù)聽眾們(主要是Java程序員,一些Flex程序員和少數(shù)的測(cè)試人員)解釋了MapReduce的概念,這讓我感到興奮。在所有辛勤的工作之后,我們?cè)赬ebia印度辦公室享用了豐盛的晚餐,然后我徑直回了家。
回家后,我的妻子(Supriya)問道:“你的會(huì)開得怎么樣?”我說還不錯(cuò)。 接著她又問我會(huì)議是的內(nèi)容是什么(她不是從事軟件或編程領(lǐng)域的工作的)。我告訴她說MapReduce。“Mapduce,那是什么玩意兒?”她問道: “跟地形圖有關(guān)嗎?”我說不,不是的,它和地形圖一點(diǎn)關(guān)系也沒有。“那么,它到底是什么玩意兒?”妻子問道。 “唔…讓我們?nèi)ominos(披薩連鎖)吧,我會(huì)在餐桌上跟你好好解釋。” 妻子說:“好的。” 然后我們就去了披薩店。
我們?cè)贒omions點(diǎn)餐之后,柜臺(tái)的小伙子告訴我們說披薩需要15分鐘才能準(zhǔn)備好。于是,我問妻子:“你真的想要弄懂什么是MapReduce?” 她很堅(jiān)定的回答說“是的”。 因此我問道:
我: 你是如何準(zhǔn)備洋蔥辣椒醬的?(以下并非準(zhǔn)確食譜,請(qǐng)勿在家嘗試)
妻子: 我會(huì)取一個(gè)洋蔥,把它切碎,然后拌入鹽和水,最后放進(jìn)混合研磨機(jī)里研磨。這樣就能得到洋蔥辣椒醬了。
妻子: 但這和MapReduce有什么關(guān)系?
我: 你等一下。讓我來編一個(gè)完整的情節(jié),這樣你肯定可以在15分鐘內(nèi)弄懂MapReduce.
妻子: 好吧。
我:現(xiàn)在,假設(shè)你想用薄荷、洋蔥、番茄、辣椒、大蒜弄一瓶混合辣椒醬。你會(huì)怎么做呢?
妻子: 我會(huì)取薄荷葉一撮,洋蔥一個(gè),番茄一個(gè),辣椒一根,大蒜一根,切碎后加入適量的鹽和水,再放入混合研磨機(jī)里研磨,這樣你就可以得到一瓶混合辣椒醬了。
我: 沒錯(cuò),讓我們把MapReduce的概念應(yīng)用到食譜上。Map和Reduce其實(shí)是兩種操作,我來給你詳細(xì)講解下。
Map(映射): 把洋蔥、番茄、辣椒和大蒜切碎,是各自作用在這些物體上的一個(gè)Map操作。所以你給Map一個(gè)洋蔥,Map就會(huì)把洋蔥切碎。 同樣的,你把辣椒,大蒜和番茄一一地拿給Map,你也會(huì)得到各種碎塊。 所以,當(dāng)你在切像洋蔥這樣的蔬菜時(shí),你執(zhí)行就是一個(gè)Map操作。 Map操作適用于每一種蔬菜,它會(huì)相應(yīng)地生產(chǎn)出一種或多種碎塊,在我們的例子中生產(chǎn)的是蔬菜塊。在Map操作中可能會(huì)出現(xiàn)有個(gè)洋蔥壞掉了的情況,你只要把壞洋蔥丟了就行了。所以,如果出現(xiàn)壞洋蔥了,Map操作就會(huì)過濾掉壞洋蔥而不會(huì)生產(chǎn)出任何的壞洋蔥塊。
Reduce(化簡(jiǎn)):在這一階段,你將各種蔬菜碎都放入研磨機(jī)里進(jìn)行研磨,你就可以得到一瓶辣椒醬了。這意味要制成一瓶辣椒醬,你得研磨所有的原料。因此,研磨機(jī)通常將map操作的蔬菜碎聚集在了一起。
妻子: 所以,這就是MapReduce?
我: 你可以說是,也可以說不是。 其實(shí)這只是MapReduce的一部分,MapReduce的強(qiáng)大在于分布式計(jì)算。
妻子: 分布式計(jì)算? 那是什么?請(qǐng)給我解釋下吧。
我: 沒問題。
我: 假設(shè)你參加了一個(gè)辣椒醬比賽并且你的食譜贏得了最佳辣椒醬獎(jiǎng)。得獎(jiǎng)之后,辣椒醬食譜大受歡迎,于是你想要開始出售自制品牌的辣椒醬。假設(shè)你每天需要生產(chǎn)10000瓶辣椒醬,你會(huì)怎么辦呢?
妻子: 我會(huì)找一個(gè)能為我大量提供原料的供應(yīng)商。
我:是的..就是那樣的。那你能否獨(dú)自完成制作呢?也就是說,獨(dú)自將原料都切碎? 僅僅一部研磨機(jī)又是否能滿足需要?而且現(xiàn)在,我們還需要供應(yīng)不同種類的辣椒醬,像洋蔥辣椒醬、青椒辣椒醬、番茄辣椒醬等等。
妻子: 當(dāng)然不能了,我會(huì)雇傭更多的工人來切蔬菜。我還需要更多的研磨機(jī),這樣我就可以更快地生產(chǎn)辣椒醬了。
我:沒錯(cuò),所以現(xiàn)在你就不得不分配工作了,你將需要幾個(gè)人一起切蔬菜。每個(gè)人都要處理滿滿一袋的蔬菜,而每一個(gè)人都相當(dāng)于在執(zhí)行一個(gè)簡(jiǎn)單的Map操作。每一個(gè)人都將不斷的從袋子里拿出蔬菜來,并且每次只對(duì)一種蔬菜進(jìn)行處理,也就是將它們切碎,直到袋子空了為止。
這樣,當(dāng)所有的工人都切完以后,工作臺(tái)(每個(gè)人工作的地方)上就有了洋蔥塊、番茄塊、和蒜蓉等等。
妻子:但是我怎么會(huì)制造出不同種類的番茄醬呢?
我:現(xiàn)在你會(huì)看到MapReduce遺漏的階段 攪拌階段。MapReduce將所有輸出的蔬菜碎都攪拌在了一起,這些蔬菜碎都是在以key為基礎(chǔ)的 map操作下產(chǎn)生的。攪拌將自動(dòng)完成,你可以假設(shè)key是一種原料的名字,就像洋蔥一樣。 所以全部的洋蔥keys都會(huì)攪拌在一起,并轉(zhuǎn)移到研磨洋蔥的研磨器里。這樣,你就能得到洋蔥辣椒醬了。同樣地,所有的番茄也會(huì)被轉(zhuǎn)移到標(biāo)記著番茄的研磨器里,并制造出番茄辣椒醬。
披薩終于做好了,她點(diǎn)點(diǎn)頭說她已經(jīng)弄懂什么是MapReduce了。我只希望下次她聽到MapReduce時(shí),能更好的理解我到底在做些什么。
?
編注:下面這段話是網(wǎng)上其他人用最簡(jiǎn)短的語言解釋MapReduce:
We want to count all the books in the library. You count up shelf #1, I count up shelf #2. That s map. The more people we get, the faster it goes.
我們要數(shù)圖書館中的所有書。你數(shù)1號(hào)書架,我數(shù)2號(hào)書架。這就是“Map”。我們?nèi)嗽蕉?#xff0c;數(shù)書就更快。
Now we get together and add our individual counts. That s reduce.
現(xiàn)在我們到一起,把所有人的統(tǒng)計(jì)數(shù)加在一起。這就是“Reduce”。
?
原文:Shekhar Gulati?編譯:伯樂在線??黃慧諭
轉(zhuǎn)載于:https://www.cnblogs.com/hlleng/p/9002579.html
總結(jié)
以上是生活随笔為你收集整理的转:我是如何向老婆解释MapReduce的?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 20165320 第十周课上测试补做
- 下一篇: BlinkOn9 - Viz Updat