1. 程式人生 > >hadoop mapreduce流程

hadoop mapreduce流程

  • input split個數等於map任務個數
    預設情況下,輸入片(input split)的大小與資料塊(block)的大小相同。
  • 已經知道一個input split對應一個map任務, 接下來會對輸入片裡的記錄逐條呼叫map方法。有多少個鍵值對,就呼叫多少次map方法。每一個呼叫map方法會輸出零個或者多個鍵值對。
  • map方法裡的context.write不是直接寫入檔案,而是先寫入環形緩衝區,環形緩衝區裡的資料會進行排序。
  • 當緩衝區裡的資料達到閾值的時候,需要進行溢寫操作。每次溢位都會產出一個溢位資料檔案,因此會有多個。
  • 每一個溢位資料檔案內分割槽,並且區內排好序
  • 對各個溢位資料檔案進行合併得到一個整體的結果檔案,分割槽且有序
  • 如果寫有combiner方法,會執行歸約處理
  • 有多少個partition(分割槽)就有多少個reduce任務,就會產生多少個最終輸出檔案
  • 每個reducer任務從多個map任務獲取屬於自己分割槽的輸出
  • 合併成一個大的資料檔案,有序
  • 把相同key的資料放到一組
  • 有多少組就呼叫多少次reduce方法,每次呼叫產生零個或者多個鍵值對,寫入HDFS檔案中
  • 每個reducer任務的結果寫入一個輸出檔案中

[1]https://blog.csdn.net/zhangt85/article/details/42077281


[2]https://blog.csdn.net/u013521220/article/details/78794980#commentBox