Hadoop 對MapReduce的理解
阿新 • • 發佈:2017-12-23
客戶端 rake ado 發送 class 拷貝 客戶 ack art
- 對MapReduce的理解
- 客戶端啟動一個作業
- 向JobTraker請求一個JobId
- 將資源文件復制到HDFS上,包括Jar文件,配置文件,輸入劃分信息等
- 接收作業後,進入作業隊列,根據輸入劃分信息為每個劃分創建一個map任務,並將map任務分配給TaskTracker來執行(運算移動,數據不移動)分配Reduce任務時,不考慮數據本地化
- TaskTracker每隔一段時間向JobTracker發送一個心跳, 告訴JobTracker它仍在運行,同時心跳中還帶有很多信息,比如任務進度
- Map端
- 輸入分片(默認64M)進入Map,輸出則暫且放到緩存中,緩沖區快要溢出時,會在本地創建一個溢出文件
- Partition(hash)和分區的內部排序,每個分區對應一個reduce任務
- 合並這些溢出文件
- 減少每次寫入磁盤的數據量
- 減少下一階段網絡傳輸的數據量
- 將分區中的數據拷貝給reduce任務(map-TaskTracker-JobTracker)
- Reduce端
- 接收到每個map傳輸來的有效數據(有序),超過了緩沖區,就寫入到磁盤中
- 將溢出文件不斷合並成一個更大的有序文件
- 最後一次合並的數據,不輸出到磁盤,直接輸出到reduce函數中
Hadoop 對MapReduce的理解