Hadoop MapReduce
MapReduce是一个分布式运算程序的编程框架,是基于Hadoop的数据分析计算的核心框架。
MapReduce处理过程分为两个阶段:Map 和 Reduce
Map负责把一个任务分解成多个任务。
Reduce负责把分解后多任务处理的结果汇总。
MapReduce的核心编程思想:
1)MapReduce运算程序一般分为两个阶段:Map阶段和Reduce阶段
2)Map阶段的开发MapTask,完全并行运行,互不干扰
3)Reduce阶段的并发ReduceTask,完全互不相干,但是他们的数据依赖于上一个阶段的所有MapTask并发实例的输出
4)MapReduce编程模型只能包含一个Map阶段和一个Reduce阶段,如果用户的业务逻辑非常复杂,那就只能多个MaoReduce程序,串行运行。
MapReduce进程:
一个完整的MapReduce程序在分布式运行时有三类实例进程:
1)MrAppMaster:负责整个程序的过程调度及状态协调
2)MapTask:负责Map阶段的整个数据数据处理流程
3)ReduceTask:负责Reduce阶段的整个数据处理流程
MapReduce编程规范:
用户编写的程序分成三个部分:Mapper、Reducer、Driver
1.Mapper阶段
1)用户自定义的Mapper要继承自己的父类
2)Mapper的的输入数据是KV对的形式(KV的类型可定义)
3)Mapper的业务逻辑写在map()方法中
4)Mapper的输出数据是KV对的形式(KV类型可定义)
5)map()方法(MapTask进程)对每一个<K,V>调用一次
2.Reduce阶段
1)用户自定义的Reduce要继承自己的父类
2)Reduce分输入数据类型对应Mapper的输出数据类型,也是KV
3)Reduce的业务逻辑写在reduce()方法中
4)ReduceTask进程对每一组相同的<K,V>组调用一次reduce()方法
3.Driver阶段
相当于YARN集群的客户端。用于提交我们整个程序到YARN集群,提交的是封装了MapReduce程序相关运行参数的job对象。