用户编写的程序分成三个部分:Mapper、Reducer和Driver。
1.Mapper阶段
1.用户自定义的Mapper要继承基类
2.Mapper的输入数据是KV对的形式(KV的类型可自定义)
3.Mapper中的业务逻辑写在map()方法中
4.Mapper的输出数据是KV对的形式(KV类型可自定义)
5map()方法(MapTask进程)对每一个<k,v>调用一次
2.Reduce阶段
1.用户自定义的Reduce类要继承基类
2.Reducer的输入数据类型对应Mapper的输出数据类型,也是KV
3.Reducer的业务逻辑写在reduce()方法中
4.ReduceTask进程对每一组相同k的<K,V>组进行一次reduce()方法
3.Dirver阶段
相当于yarn集群的客户端,用于将编写的程序提交到yarn集群,提交的是封装了MR程序相关运行参数的job对象