用户编写的程序需要分成以下三个部分:
- Mapper
- 用户自定义的Mapper需要继承自己的父类
- Mapper的输入数据是KV对的形式(KV的类型可以自己定义)
- Mapper中的业务逻辑写在map()方法中
- Mapper的输出数据也是KV对的形式
- map()方法(MapTask进程)对每一个<K,V>调用一次 - Reducer
- 用户自定义的Reducer需要继承自己的父类
- Reducer的输入数据类型对应Mapper的输出数据,也是KV
- Reducer的业务逻辑写在reducer()方法中
- ReduceTask今晨对每一组相同k的<K,V>组调用一次reduce()方法 - Driver
- 相当于YARN集群的客户端,用于提交我们整个程序到YARN集群,提交的是封装了MapReduce程序相关运行参数的job对象。