mapreduce是google開源的三大技術之一,是對海量資料進行「分而治之」計算框架。為了簡單的理解並講述給客戶理解。我們舉下面的例子來說明.
首先,面對一堆雜亂的東西,有若干個漢堡、若干個冰淇淋、若干個可樂。如果級別都是上萬數量的情況下,有沒有方法把他們較快的分析出來?
第一步,排程員簡單的將這一堆東西分解成若干堆。
第二步,排程員為每堆物品分配乙個分揀員,注意只分揀不計數,分揀員對應mapreduce中的map角色。分揀員幹的事情,就是將物品按類別分揀,比如分揀後的每一堆的狀態應該是如下圖所示。分揀員所做的也分成簡單,從自己面前這一堆物品中拿乙個,看是麵包的話,就扔麵包那。是可樂就扔可樂那。
第三步,排程員為每類物品分配乙個計數員(reducer),把所有該型別的物品都發給他計數。比如所有的麵包類別都分給第乙個計數員來負責計數。計數員統計出每個類別的數目,再告訴排程員。
1)對應這樣乙個源文字檔案
2)首先由排程員通過job.setinputformatclass(textinputformat.class),知道應該轉換成偏移量加文字方式的鍵-值對;再根據當前機器個數,檔案大小確定應該分解成幾個待處理的片段,比如說分解成兩個片段,對應兩個map程式。
3)第乙個map程式每次被呼叫,接受到的入參(key,value)是
map程式的輸出是
4)第二個map程式接受的輸入將是
第二個map的輸出將是
5)map程式的輸出,會被重新組合,同乙個key的內容,會被分配到同乙個reduce上。
比如上面三個單詞,會被分到三個reducer上
6)第乙個reducer接收到,如下圖,注意是兩個1,來自兩個map的結果
第乙個reducer的輸出會是如下圖,意味著hello這個單詞出現了兩次
7)第二個reducer接收到
第二個reducer輸出會是
8)第三個reducer接收到
第三個reducer輸出是
9)最後將三個reducer進行合併,得到的結果就是
10)彙總流程描述如圖所示
編碼通俗解釋
很久很久以前,有一群人,他們決定用8個可以開合的電晶體來組合成不同的狀態,以表示世界上的萬物。他們看到8個開關狀態是好的,於是他們把這稱為 位元組 再後來,他們又做了一些可以處理這些位元組的機器,機器開動了,可以用位元組來組合出很多狀態,狀態開始變來變去。他們看到這樣是好的,於是它們就這機器稱為 計...
LDA通俗解釋
lda整體流程 先定義一些字母的含義 lda以文件集合d作為輸入 會有切詞,去停用詞,取詞幹等常見的預處理,略去不表 希望訓練出的兩個結果向量 設聚成k個topic,voc中共包含m個詞 lda的核心公式如下 p w d p w t p t d 直觀的看這個公式,就是以topic作為中間層,可以通過...
通俗解釋挖礦
位元幣本質上並不是乙個 幣 而是乙個記賬系統而已,而這個記賬系統中的最大單位,就是 1btc 而這個記賬系統,其實是需要委託乙個人來幫大家記總賬,記好了以後再把賬本複製分發到每個人手裡,然後這個系統會給這個記賬人一點工資作為獎勵。這個記賬人,就是礦工。那麼這裡就有了乙個問題了,我們怎麼保證這個記賬人...