在hackbright做導師期間,我被要求向技術背景有限的學生解釋mapreduce演算法,於是我想出了乙個有趣的例子,用以闡釋它是如何工作的。
你想數出一摞撲克牌中有多少黑桃。直觀方式是一張一張檢查並且數出有多少張是黑桃。
mapreduce方法規則是:
給在座的所有玩家中分配這摞牌
讓每個玩家數自己手中有幾張是黑桃,然後把這個數目匯報給你
你把所有玩家告訴你的數字加起來,得到最後的結論.
谷歌在2023年發表了可以分析大量資料的mapreduce演算法. 每當你聽到"大資料"這個詞時,它指的是因為太大而讓僅僅一台機器難以有效儲存或分析的問題。mapreduce通過把計算量分配給不同的計算機群,能夠解決大部分和大資料有關的分析問題。hadoop提供了最受歡迎的利用mapreduce演算法來管理大資料的開源方式。先進mapreduce是主流。
所以通常來說,每當你聽到「大資料」,那也許意味著hadoop被用來儲存資料,也通常意味著資料的抽取和檢索是用的mapreduce。
mapreduce合併了兩種經典函式:
化簡(reducing)遍歷集合中的元素來返回乙個綜合的結果。即,輸出表單裡一列數字的和這個任務屬於reducing。
通過把牌分給多個玩家並且讓他們各自數數,你就在並行執行運算,因為每個玩家都在同時計數。這同時把這項工作變成了分布式的,因為多個不同的人在解決同乙個問題的過程中並不需要知道他們的鄰居在幹什麼。
通過告訴每個人去數數,你對一項檢查每張牌的任務進行了對映。你不會讓他們把黑桃牌遞給你,而是讓他們把你想要的東西化簡為乙個數字。
另外乙個有意思的情況是牌分配得有多均勻。mapreduce假設資料是洗過的(shuffled)— 如果所有黑桃都分到了乙個人手上,那他數牌的過程可能比其他人要慢的很多。
如果有足夠的人的話,問一些更有趣的問題就相當簡單了 —— 比如「一摞牌的平均值(二十一點演算法)是什麼」。你可以通過合併「所有牌的值的和是什麼」以及「我們有多少張牌」這兩個問題來得到答案。用這個和初一牌的賬單就得到了平均值。
mapreduce演算法的機制要遠比這複雜得多,但是主體思想是一致的 —— 通過分散計算來分析大量資料。無論是facebook、nasa,還是小創業公司,mapreduce都是目前分析網際網路級別資料的主流方法。有趣的是,mapreduce在多於10pb資料時趨向於變慢,所以谷歌在他們今年的io大會上報告稱mapreduce已經不夠他們用了。
簡單解釋MapReduce演算法
文章 mapreduce演算法例子 你想數出一摞牌中有多少張黑桃。直觀方式是一張一張檢查並且數出有多少張是黑桃。mapreduce方法則是 給在座的所有玩家中分配這摞牌 讓每個玩家數自己手中的牌有幾張是黑桃,然後把這個數目匯報給你 你把所有玩家告訴你的數字加起來,得到最後的結論 mapreduce演...
MapReduce通俗解釋方法
mapreduce是google開源的三大技術之一,是對海量資料進行 分而治之 計算框架。為了簡單的理解並講述給客戶理解。我們舉下面的例子來說明.首先,面對一堆雜亂的東西,有若干個漢堡 若干個冰淇淋 若干個可樂。如果級別都是上萬數量的情況下,有沒有方法把他們較快的分析出來?第一步,排程員簡單的將這一...
MapReduce簡單介紹
mapreduce 定義 hadoop 中的 mapreduce 是乙個使用簡單的軟體框架,基於它寫出來的應用程式能夠執行在由上千個商用機器組成的大型集群上,並以一種可靠容錯式並行處理tb級別的資料集。mapreduce hadoop mapreduce 源於 google 在2004年12月份發表...