MapReduce計算框架的核心編程思想

@數據庫

概念

Job(做業) : 一個MapReduce程序稱爲一個Job。app

MRAppMaster(MR任務的主節點): 一個Job在運行時,會先啓動一個進程,這個進程稱爲MRAppMaster,負責Job中執行狀態的監控,容錯,和RM申請資源,提交Task等。oop

Task(任務): Task是一個進程,負責某項計算code

Map(Map階段):Map是MapReduce程序運行的第一個階段,Map階段的目的是將輸入的數據,進行切分。將一個大文件,切分爲若干小部分!切分後,每一個部分稱爲1片(split),每片數據會交給一個Task(進程),Task負責Map階段程序的計算,稱爲MapTask。在一個MR程序的Map階段,會啓動N(取決於切片數)個MapTask。每一個MapTask是並行運行。orm

Reduce(Reduce階段): Reduce是MapReduce程序運行的第二個階段(最後一個階段)!Reduce階段的目的是將Map階段的每一個MapTask計算後的結果進行合併彙總!獲得最終結果!Reduce階段是可選的,Task負責Reduce階段程序的計算,稱爲ReduceTask,一個Job能夠經過設置,啓動N個ReduceTask,這些ReduceTask也是並行運行!每一個ReduceTask最終都會產生一個結果。進程

MapReduce中經常使用的組件

Mapper:map階段核心的處理邏輯hadoop

Reducer: reduce階段核心的處理邏輯資源

InputFormat:輸入格式it

  • MR程序必須指定一個輸入目錄,一個輸出目錄
  • InputFormat表明輸入目錄中文件的格式
  • 若是是普通文件,能夠使用FileInputFormat
  • 若是是SequeceFile(hadoop提供的一種文件格式),能夠使用SequnceFileInputFormat
  • 若是處理的數據在數據庫中,須要使用DBInputFormat

RecordReader: 記錄讀取器io

  • RecordReader負責從輸入格式中,讀取數據,讀取後封裝爲一組記錄(k-v)

OutPutFormat: 輸出格式

  • OutPutFormat表明MR處理後的結果,要以什麼樣的文件格式寫出
  • 將結果寫出到一個普通文件中,能夠使用FileOutputFormat
  • 將結果寫出到SequeceFile中,能夠使用SequnceFileOutputFormat
  • 將結果寫出到數據庫中,能夠使用DBOutPutFormat

RecordWriter: 記錄寫出器

  • RecordWriter將處理的結果以什麼樣的格式,寫出到輸出文件中

Partitioner: 分區器

  • 分區器,負責在Mapper將數據寫出時,將keyout-valueout,爲每組keyout-valueout打上標記,進行分區
  • 目的: 一個ReduceTask只會處理一個分區的數據!
相關文章
相關標籤/搜索