1. 程式人生 > >MapReduce原理與實現

MapReduce原理與實現

讀取 提交 hdf 撲克 datanode 分配 去掉 是否 跟著

課程鏈接:Hadoop大數據平臺架構與實踐--基礎篇

1.MapReduce原理

分而治之,一個大任務分成多個小的子任務(map),並行執行後,合並結果(reduce)

問題1:1000副撲克牌少哪一張牌(去掉大小王)

技術分享圖片

問題2:100GB的網站訪問日誌文件,找出訪問次數最多的IP地址

  1. 將日誌進行切分(比如按時間)
  2. 各自統計各IP的訪問次數
  3. 進行歸約,通過IP值進行Hash映射(相同IP歸到同一個reduce)
  4. 排序結果

技術分享圖片

2.MapReduce的運行流程

基本概念

  • Job & Task
    • 一個Job是一個任務(作業),每個Job可分為多個Task,Task分為MapTask和ReduceTask
  • JobTracker(master管理節點)
    • 作業調度(先到先服務、公平調度器)
    • 分配任務、監控任務執行進度(TaskTracker需要給出狀態更新)
    • 監控TaskTracker狀態(是否出現故障)
  • TaskTacker
    • 執行任務
    • 匯報任務狀態

技術分享圖片

  1. 客戶端提交Job,JobTracker將其置於候選隊列
  2. JobTracker在適當的時候進行調度,選擇一個Job,將其拆分多個Map任務和Reduce任務,分發給TaskTracker來做
  3. 在實際的部署中,TaskTracker和HDFS中的DataNode是同一種物理結點(這樣可保證計算跟著數據走,讀取數據的開銷最小,移動計算代替移動數據)

技術分享圖片

MapReduce原理與實現