看了google的mapreduce**,為了以後便於自己查閱,特寫一下總結:
就像摘要裡面說的,主要講了以下幾點:
1、輸入資料切分
2、真個集群的分配排程,包括如何把切分好的資料分發給map機器,以及如何把map好的資料給reduce機器。
3、集群容錯,包括worker failure以及master failure。 worker failure 解決辦法是:分配乙個沒有失效的機器重做這個失效機器上的任務。master failure解決辦法是:**寫得是如果master失效,那麼,所有的工作都泡湯了。只有讓user client端重試了。。。(現在大部分分布式系統都是設定備份master)
4、優化
4.1 資料分發的區域性性:也就是說在map階段,資料儲存到本地臨時檔案上,當reduce階段的時候,直接在本台機器,或者是在同乙個區域網相鄰的機器,節省網路頻寬
4.2 設定備份任務,當出現「straggler」時候,就會啟動備份機器,讓其也執行這個「straggler」的任務,最後整個集群的完成時間以這兩個機器最先完成的為準。
4.3有的任務要求排序功能,所以在map階段,或是在reduce階段的時候,可以擴充套件排序功能。
4.4map階段完成後對於某個key,也許會有很多的key-value對。例如:wordcount時候,像這種會很多(zipf分布)。所以能夠在map完成後,reduce執行前,先執行乙個combiner也許會更好一些。combiner和reduce的唯一不同就是:reduce會把輸出寫到最終的output file中,而combiner則是輸出到乙個intermediate file中,為reduce做準備。
4.5skipping bad records 。即在map階段遇到一些錯誤的record可以忽略不計(在資料量非常大的情況完全可以)。
先寫這麼多吧,困了。。
對MapReduce的一點理解
mapreduce是乙個程式設計模型,和處理,產生大資料集的相關實現.使用者指定乙個map函式處理乙個key value對,從而產生中間的key value對集.然後再指定乙個reduce函式合併所有的具有相同中間key的中間value.下面將列舉許多可以用這個模型來表示的現實世界的工作.以這種方式...
史上最簡單mapreduce對key的正序和倒序
這個是資料 這個是倒序 上面兩張是效果圖,我這裡只給第一列數字排序了。接下來直接上 自己新建乙個類,繼承writablecompartor 重寫裡面的compare方法 public class sort extends writablecomparator override public intc...
對buffer的簡單理解
定義了乙個bufffer byte buf new byte 0x100000 說明 首先定義乙個buffer,說白了就是申請一塊記憶體空間,new返回的是乙個指標,所以這裡的宣告有錯的,應該這樣 byte pbuf new byte 0x100000 如果申請成功,則返回了該記憶體空間的首位址,如...