文章**:
mapreduce演算法例子
你想數出一摞牌中有多少張黑桃。直觀方式是一張一張檢查並且數出有多少張是黑桃。
mapreduce方法則是:
①給在座的所有玩家中分配這摞牌
②讓每個玩家數自己手中的牌有幾張是黑桃,然後把這個數目匯報給你
③你把所有玩家告訴你的數字加起來,得到最後的結論
mapreduce演算法背景
谷歌在2023年發表了可以分析大量資料的mapreduce演算法。每當你聽到「大資料」這個詞時,它指的是因為太大而讓僅僅一台機器難以有效儲存或分析的問題。mapreduce通過把計算量分配給不同的計算機群,能夠解決大部分和大資料有關的分析問題。hadoop提供了最受歡迎的利用mapreduce演算法來管理大資料的開源方式。現今mapreduce是主流。
所以通常來說,每當你聽到「大資料」,那也許意味著hadoop被用來儲存資料,也通常意味著資料的抽取和檢索是用的mapreduce。
拆分mapreduce演算法
mapreduce合併了兩種經典函式:
重新審視上面的mapreduce演算法例子通過把牌分給多個玩家並且讓他們各自數數,你就在並行執行運算,因為每個玩家都在同時計數。這同時把這項工作變成了分布式的,因為多個不同的人在解決同乙個問題的過程中並不需要知道他們的鄰居在幹什麼。
通過告訴每個人去數數,你對一項檢查每張牌的任務進行了對映。 你不會讓他們把黑桃牌遞給你,而是讓他們把你想要的東西化簡為乙個數字。
另外乙個有意思的情況是牌分配得有多均勻。mapreduce假設資料是洗過的(shuffled)- 如果所有黑桃都分到了乙個人手上,那他數牌的過程可能比其他人要慢很多。
如果有足夠的人的話,問一些更有趣的問題就相當簡單了 – 比如「一摞牌的平均值(二十一點演算法)是什麼」。你可以通過合併「所有牌的值的和是什麼」及「我們有多少張牌」這兩個問題來得到答案。用這個和除以牌的張數就得到了平均值。
對mapreduce演算法的結論
mapreduce演算法的機制要遠比這複雜得多,但是主體思想是一致的 – 通過分散計算來分析大量資料。無論是facebook、nasa,還是小創業公司,mapreduce都是目前分析網際網路級別資料的主流方法。有趣的是,mapreduce在多於10pb資料時趨向於變慢,所以谷歌在他們今年的io大會上報告稱mapreduce已經不夠他們用了。
如何簡單解釋 MapReduce演算法
在hackbright做導師期間,我被要求向技術背景有限的學生解釋mapreduce演算法,於是我想出了乙個有趣的例子,用以闡釋它是如何工作的。你想數出一摞撲克牌中有多少黑桃。直觀方式是一張一張檢查並且數出有多少張是黑桃。mapreduce方法規則是 給在座的所有玩家中分配這摞牌 讓每個玩家數自己手...
MapReduce通俗解釋方法
mapreduce是google開源的三大技術之一,是對海量資料進行 分而治之 計算框架。為了簡單的理解並講述給客戶理解。我們舉下面的例子來說明.首先,面對一堆雜亂的東西,有若干個漢堡 若干個冰淇淋 若干個可樂。如果級別都是上萬數量的情況下,有沒有方法把他們較快的分析出來?第一步,排程員簡單的將這一...
KMP 演算法簡單解釋
講kmp演算法,離不開bf,實際上,kmp就是bf公升級版,主要流程和bf一樣 不同是在匹配失敗時能利用子串的特徵減少回溯,利用根據子串特徵生成的next陣列來減少 所有陣列下標都是從0開始 int brute force 1 const char s,const char t if j lent ...