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解析
作业配置与提交
。。。
。。。