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