溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何簡單解釋 MapReduce 算法

發(fā)布時間:2021-10-29 18:08:58 來源:億速云 閱讀:147 作者:柒染 欄目:編程語言

今天就跟大家聊聊有關如何簡單解釋 MapReduce 算法,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

在Hackbright做導師期間,我被要求向技術背景有限的學生解釋MapReduce算法,于是我想出了一個有趣的例子,用以闡釋它是如何工作的。

MapReduce算法例子

你想數出一摞牌中有多少張黑桃。直觀方式是一張一張檢查并且數出有多少張是黑桃。

MapReduce方法則是:

1.給在座的所有玩家中分配這摞牌

2.讓每個玩家數自己手中的牌有幾張是黑桃,然后把這個數目匯報給你

3.你把所有玩家告訴你的數字加起來,得到***的結論

MapReduce算法背景

谷歌在2004年發(fā)表了可以分析大量數據的MapReduce算法。每當你聽到“大數據”這個詞時,它指的是因為太大而讓僅僅一臺機器難以有效存儲或分析的問題。MapReduce通過把計算量分配給不同的計算機群,能夠解決大部分和大數據有關的分析問題。Hadoop提供了***的利用MapReduce算法來管理大數據的開源方式?,F今MapReduce是主流。

所以通常來說,每當你聽到“大數據”,那也許意味著Hadoop被用來存儲數據,也通常意味著數據的抽取和檢索是用的MapReduce。

拆分MapReduce算法

MapReduce合并了兩種經典函數:

映射(Mapping)對集合里的每個目標應用同一個操作。即,如果你想把表單里每個單元格乘以二,那么把這個函數單獨地應用在每個單元格上的操作就屬于mapping。

化簡(Reducing )遍歷集合中的元素來返回一個綜合的結果。即,輸出表單里一列數字的和這個任務屬于reducing。

重新審視上面的MapReduce算法例子

重新審視我們原來那個分散紙牌的例子,我們有MapReduce數據分析的基本方法。友情提示:這不是個嚴謹的例子。在這個例子里,人代表計算機,因為他們同時工作,所以他們是個集群。在大多數實際應用中,我們假設數據已經在每臺計算機上了 – 也就是說把牌分發(fā)出去并不是MapReduce的一步。(事實上,在計算機集群中如何存儲文件是Hadoop的真正核心。)

通過把牌分給多個玩家并且讓他們各自數數,你就在并行執(zhí)行運算,因為每個玩家都在同時計數。這同時把這項工作變成了分布式的,因為多個不同的人在解決同一個問題的過程中并不需要知道他們的鄰居在干什么。

通過告訴每個人去數數,你對一項檢查每張牌的任務進行了映射。 你不會讓他們把黑桃牌遞給你,而是讓他們把你想要的東西化簡為一個數字。

另外一個有意思的情況是牌分配得有多均勻。MapReduce假設數據是洗過的(shuffled)- 如果所有黑桃都分到了一個人手上,那他數牌的過程可能比其他人要慢很多。

如果有足夠的人的話,問一些更有趣的問題就相當簡單了 - 比如“一摞牌的平均值(二十一點算法)是什么”。你可以通過合并“所有牌的值的和是什么”及“我們有多少張牌”這兩個問題來得到答案。用這個和除以牌的張數就得到了平均值。

對MapReduce算法的結論

MapReduce算法的機制要遠比這復雜得多,但是主體思想是一致的 – 通過分散計算來分析大量數據。無論是Facebook、NASA,還是小創(chuàng)業(yè)公司,MapReduce都是目前分析互聯網級別數據的主流方法。有趣的是,MapReduce在多于10PB數據時趨向于變慢,所以谷歌在他們今年的IO大會上報告稱MapReduce已經不夠他們用了。

看完上述內容,你們對如何簡單解釋 MapReduce 算法有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI