1.MapReduce編程規範及示例編寫
Mapper類
用戶自定義一個Mapper類繼承Hadoop的Mapper類
Mapper的輸入數據是KV對的形式(類型可以自定義)
Map階段的業務邏輯定義在map()方法中
Mapper的輸出數據是KV對的形式(類型可以自定義)
注意:map()方法是對輸入的一個KV對調用一次!! 簡單點說 在讀取文本的時候 每一行數據會觸發一次Map任務
舉個栗子 wordcount:
LongWritable, Text, Text, IntWritable
LongWritable:讀取文本的偏移量(行級偏移量)
Text:讀取文本一行的數據
Text:map的輸出
IntWritable:計數 比如說一個單詞算一次 那麼就算1
Reducer類
用戶自定義Reducer類要繼承Hadoop的Reducer類
Reducer的輸入數據類型對應Mapper的輸出數據類型(KV對)
Reducer的業務邏輯寫在reduce()方法中
Reduce()方法是對相同K的一組KV對調用執行一次 涉及到多路歸併排序 到reduce的數據會是hello,<1,1,1,1,1>
所以在重寫reduce方法時values是一個迭代器:Text key, Iterable<IntWritable> values, Context context
舉個栗子 wordcount:
Text, IntWritable, Text, IntWritable
Text, IntWritable:map的輸出
Text:reduce的輸出
IntWritable:最終的計數
Driver階段
創建提交YARN集羣運行的Job對象,其中封裝了MapReduce程序運行所需要的相關參數入輸入數據路徑,輸出數據路徑等,也相當於是一個YARN集羣的客戶端,主要作用就是提交我們MapReduce程序運行