Hadoop源代碼分析(包hadoop.mapred中的MapReduce接口)

前面已經完成了對org.apache.hadoop.mapreduce的分析,這個包提供了Hadoop MapReduce部分的應用API,用於用戶實現本身的MapReduce應用。但這些接口是給將來的MapReduce應用的,目前MapReduce框架仍是使用老系統(參考補丁HADOOP-1230)。下面咱們來分析org.apache.hadoop.mapred,首先仍是從mapred的MapReduce框架開始分析,下面的類圖(灰色部分爲標記爲@Deprecated的類/接口):web


 

咱們把包mapreduce的類圖附在下面,對比一下,咱們就會發現,org.apache.hadoop.mapred中的MapReduce API相對來講很簡單,主要是少了和Context相關的類,那麼,好多在mapreduce中經過context來完成的工做,就須要經過參數來傳遞,如Map中的輸出,老版本是:
      output.collect(key,result);  // output’s type is:OutputCollector
新版本是:
apache

      context.write(key, result);  // output’s type is: Context微信

它們分別使用OutputCollectorMapper.Context來輸出map的結果,顯然,原有OutputCollector的新API中就再也不須要。整體來講,老版本的API比較簡單,MapReduce過程當中關鍵的對象都有,但可擴展性不是很強。同時,老版中提供的輔助類也不少,咱們前面分析的FileOutputFormat,也有對應的實現,咱們就再也不討論了。app

更多精彩內容請關注:http://bbs.superwu.cn 框架

關注超人學院微信二維碼:oop

相關文章
相關標籤/搜索