Mapeduce程式設計八大步驟

Thinkgamer_gyt發表於2015-11-24

Mapreduce程式設計八大步

1.1:指定讀取的檔案位於哪裡

FileInputFormat.setInputPaths()
指定如何對輸入檔案進行格式化,把輸入文字每一行解析為鍵值對
job.setInputFormatClass()


1.2:指定自定義的Map類
job.setMapperClass()
//map輸出的<k,v>型別,如果<k3,v3>的型別與<k2,v2>型別一致,則可以省略
//job.setMapOutputKeyClass()
//job.setMapOutputValueClass()


1.3:分割槽
job.setPartitionerClass()
//設定reduce任務個數
//job.setNumReducetasks(1)


1.4:TODO 排序  分組


1.5:規約

job.setCombinerClass()


2.1:指定自定義的Reduce類
job.setReduceClass()
//指定reduce的輸出型別
//job.setOutputKeyClass()
//job.setOutputValueClass()


2.2:指定寫出的檔案位置
FileOutputFormat.setOutputPath()
指定如何對輸出檔案格式化型別
job.setoutputFormatClass()


2.3:把job提交給JobTracker執行

System.exit(status)


MapReduce程式的執行步驟:

1.Map任務處理

1.1  讀取輸入檔案內容,解析成key,value對,對輸入檔案的每一行,解析成key,value對。每一個鍵值對呼叫一次map

函式

1.2  寫自己的邏輯,對輸入的key,value處理,轉換成新的key,value輸出

1.3  對輸出的key,value進行分割槽

1.4  對不同分割槽的資料,按照key進行排序,分組相同key的value放到一個集合中

1.5  (可選)分組後的資料進行規約

2. reduce任務處理

2.1  對多個Map任務的輸出,按照不同的分割槽,通過網路copy到不同的reduce節點

2.2  對多個map任務的輸出進行合併,排序,寫reduce函式自己的邏輯,對輸入的key,value處理,轉換成新的key,value輸出

2.3  把reduce的輸出儲存到檔案中

相關文章