由上图可以看到MapReduce执行下来主要包含这样几个步骤:
1) 首先正式提交作业代码,并对输入数据源进行切片
2) master调度worker执行map任务
3) worker当中的map任务读取输入源切片
4) worker执行map任务,将任务输出保存在本地
5) master调度worker执行reduce任务,reduce worker读取map任务的输出文件
6) 执行reduce任务,将任务输出保存到HDFS
以WordCount为例
自定义reduce数量
yarn jar TlHadoopCore-jar-with-dependencies.jar \
com.tl.examples.WordCountV2 \
-Dmapred.output.compress=true \
-Dmapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec \
-Dmapred.reduce.tasks=2 \
自定义Partition实现
按实际需求重写getpartition方法,可以实现按条件将输出结果分为多个文件
需要加上面自定义reduce数量的shell脚本并且在driver里配置参数解析器