MIT 6.824學習筆記1 MapReduce

本節內容:Lect 1編程


 

MapReduce框架的執行過程:負載均衡

    master分發任務,把map任務和reduce任務分發下去
    map worker讀取輸入,進行map計算寫入本地臨時文件
    map任務完成通知master 告知本地中間結果文件的位置大小信息
    master通知reduce worker
    reduce worker從不一樣的map worker讀取本身負責的部分,這個過程稱爲shuffle
    reduce worker讀取以後會在本地進行排序
    調用用戶的reduce方法進行計算
    最終reduce將結果輸出到全局的文件系統(GFS)

失敗處理的過程:

    master故障:不處理,外部程序決定是否重作
    worker故障:master定時ping各個worker,若一段時間ping不通說明崩了
    若是發現了某個worker故障了
        這個worker執行中的reduce和map任務都會被標記爲空閒從新分配
        若是是reduce任務而且執行完了那麼就忽略無論(reduce生成的結果存在GFS,不會丟)
        若是是map任務而且執行完了,那麼就要重置狀態,要求從新執行。由於中間文件可能丟失了(map的中間文件存在worker本地)。

具體過程能夠參考這張圖:框架

 

MapReduce模型的容錯性:map()/reduce()各個函數之間都是獨立運行的,沒有依賴。因此從新執行也會產生相同的輸出。純函數的這個需求是MR相對於其餘並行編程方案的主要限制,而後也是由於這個需求使得MR很是簡單。當出錯時直接從新執行對應的函數和區塊便可函數

每一個區塊儘量的小(分紅儘量多的塊),便於負載均衡、出錯重啓等spa

 

 

 

Ref:    https://zou.cool/2018/11/27/mapreduce/code

相關文章
相關標籤/搜索