MapReduce編程模型概述
MapReduce適用的場景具有共同的特點:任務可以分解爲相互獨立的子任務。
MarReduce編程接口體系結構
編程模型位於MapReduce Runtime和應用層之間,共有兩層,第一層是Java API,共有5個可編程組件,分別是:InputFormat,Mapper,Partitioner,Reducer,OutputFormate。第二層位於Java API之上,主要是一些工具包,包括JobControl(DAG),ChainMapper,Hadoop String,Hadoop Pipes。
新舊API比較
存放位置不同:
舊API存放於org.apache.hadoop.mapred包
新API存放於org.apache.hadoop.mapreduce包及其子包中
接口變爲抽象類:
抽象類具有良好的向後兼容性。當爲抽象類添加新方法時,只有有默認實現,用戶之前的代碼就不用改了,若是接口則不然。
Context的封裝
增強了易用性。
新版的API只是在舊版的API上封裝而來的,爲了更好的易用性和擴展性。
MapReduce API的基本概念
序列化/反序列化
概念:結構化對象和字節流之間的相互轉換。
序列化的作用:持久化和進程間通信。
MapReduce中使一個Java對象實現序列化的方法是實現Writable接口。
Reporter參數
Reporter是MapReduce提供給應用程序的工具,報告完成進度,設定狀態,更新計數器。
Reporter是一個基礎參數,MapReduce對外提供的大部分組件中都添加了該參數。
回調機制
InputFormate,Mapper,Partitioner,Reducer,OutputFormate都是回調接口
Java API解析
作業配置與提交
。。。
。。。