天天快資訊:Hadoop中的MapReduce框架

2023-01-05 10:19:45 來源:51CTO博客

一個MapReduce作業通常會把輸入的數據集切分為若干獨立的數據塊,由Map任務以完全并行的方式去處理它們。

框架會對Map的輸出先進行排序,然后把結果輸入給Reduce任務。通常作業的輸入和輸出都會被存儲在文件系統中,整個框架負責任務的調度和監控,以及重新執行已經關閉的任務。


(資料圖)

通常,MapReduce框架和分布式文件系統是運行在一組相同的節點上,也就是說,計算節點和存儲節點通常都是在一起的。這種配置允許框架在那些已經存好數據的節點上高效地調度任務,這可以使得整個集群的網絡帶寬被非常高效地利用。

1 MapReduce框架的組成

(1)JobTracker

JobTracker負責調度構成一個作業的所有任務,這些任務分布在不同的TaskTracker上(由上圖的JobTracker可以看到2 assign map 和 3 assign reduce)。你可以將其理解為公司的項目經理,項目經理接受項目需求,并劃分具體的任務給下面的開發工程師。

(2)TaskTracker

TaskTracker負責執行由JobTracker指派的任務,這里我們就可以將其理解為開發工程師,完成項目經理安排的開發任務即可。

2 MapReduce的輸入輸出

鍵值對上,也就是說,框架把作業的輸入看成是一組鍵值對,同樣也產生一組鍵值對作為作業的輸出,這兩組鍵值對有可能是不同的。

一個MapReduce作業的輸入和輸出類型如下圖所示:可以看出在整個流程中,會有三組鍵值對類型的存在。

3 MapReduce的處理流程

這里以WordCount單詞計數為例,介紹map和reduce兩個階段需要進行哪些處理。單詞計數主要完成的功能是:統計一系列文本文件中每個單詞出現的次數,如圖所示:

(1)map任務處理

(2)reduce任務處理

標簽: 項目經理 開發工程師 也就是說

上一篇:環球熱點評!Python網絡編程之TCP 客戶端程序開發
下一篇:MapReduce詳解