MapReduce任务执行过程
MapReduce物理实现
1、一个数据块对应1~N个分片,默认是一个。
2.一个分片split对应一个Mapper
3.Mapper执行的结果,写到内存缓冲区,超过80%后,写入镜像硬盘。写入的时候,可以分区和排序
a.实现分区,需要实现扩展Partitioner类。
Job要调用2个方法:
//分区规则
job.setPartitionerClass(EmpDeptnoPartitioner.class);
job.setNumReduceTasks(3);
b.排序,比较的Key要实现WritableComparable接口
4.合并Combiner(可选项),合并可大幅度减少数据量
合并不一定适合所有情况。
比如:求1、2、3的平均值,正确2.5;如果先算1、2的平均值是1.5,在算1.5、3的平均值是2.25,是错误的
5、Reduce是合并Mapper结果。
shuffle的过程,包含从分片开始,到Mapper的结束。
MapReduceMapReduce&Spark
Spark比MapReduce运行速度快:MapReduce产生5次的io;Spark只有2次io。
如果断电,Spark的数据会丢失,但是MapReduce不回。
网友评论