MapReduce原理與實現
阿新 • • 發佈:2018-06-21
讀取 提交 hdf 撲克 datanode 分配 去掉 是否 跟著
課程鏈接:Hadoop大數據平臺架構與實踐--基礎篇
1.MapReduce原理
分而治之,一個大任務分成多個小的子任務(map),並行執行後,合並結果(reduce)
問題1:1000副撲克牌少哪一張牌(去掉大小王)
問題2:100GB的網站訪問日誌文件,找出訪問次數最多的IP地址
- 將日誌進行切分(比如按時間)
- 各自統計各IP的訪問次數
- 進行歸約,通過IP值進行Hash映射(相同IP歸到同一個reduce)
- 排序結果
2.MapReduce的運行流程
基本概念
- Job & Task
- 一個Job是一個任務(作業),每個Job可分為多個Task,Task分為MapTask和ReduceTask
- JobTracker(master管理節點)
- 作業調度(先到先服務、公平調度器)
- 分配任務、監控任務執行進度(TaskTracker需要給出狀態更新)
- 監控TaskTracker狀態(是否出現故障)
- TaskTacker
- 執行任務
- 匯報任務狀態
- 客戶端提交Job,JobTracker將其置於候選隊列
- JobTracker在適當的時候進行調度,選擇一個Job,將其拆分多個Map任務和Reduce任務,分發給TaskTracker來做
- 在實際的部署中,TaskTracker和HDFS中的DataNode是同一種物理結點(這樣可保證計算跟著數據走,讀取數據的開銷最小,移動計算代替移動數據)
MapReduce原理與實現