InputFormat
Mapper
- setup():初始化
- map():用户的业务逻辑
- clearup():关闭资源
shuffle
- 分区
- 默认分区HshaPartitioner(分区数=key的hash值%numReduceTask个数)
- 自定义分区(继承Partitioner,重写getPartition()方法)
- 排序
- 部分排序:每个输出的文件内部有序
- 全排序:一个reduce,所有数据有序(易导致数据倾斜)
- 二次排序(自定义):实现WritableComparable接口,重写compareTo()方法
- Combiner(map后,提前进行预聚合)
- 驱动类中关联Reducer类
- 使用的前提:不影响最终的业务逻辑(求和没问题,求平均值慎用)
- 可以解决数据倾斜
Reducer
- setup():初始化
- map():用户的业务逻辑
- clearup():关闭资源