MapReduce运行模式和作业执行
运行模式
本地运行模式
- MR程序以本地单线程的方式运行
- 处理的数据和输出结果可以在本地系统也可以在HDFS上
- 便于调试
集群运行模式
- MR程序交给yarn,分发到多个节点上运行
- 处理的数据和输出存储到HDFS上
MR作业的执行
输入和输出
MR将作业的输入看成一对键值对,同样产生一组键作为作业的输出。
Mapper任务执行
- 将输入目录下文件按照一定标准切片,每一个切片交给一个MapTask处理
- 将每一行文本解析成键值对。key是起始位置,value是文本内容
- 调用map方法。每解析成一个键值对,就会调用一次map方法。调用map方法会输出零个或多个键值对
- 按照一定规则对输出的键值对进行分区。分区数量是Reducer任务运行的数量,默认只有一个Reducer任务,也就是默认只有一个区
- 对每个区的键值对进行排序。先按照键排序,键值相同,再按照值排序。
- 对数据进行局部聚合,就是combiner。键相等的键值对会调用一次reducer。经过这一阶段,数据量会减少,默认没有这一阶段。
Reducer任务执行
- reducer制动从Mapper复制输出的键值对。
- 将复制到Reducer的数据进行合并,即将分散的数据汇总成一个大数据。再对汇总的数据进行排序
- 对排序后端数据进行reduce方法。键相等的键值对调用一次reduce方法,每次调用都会产生零个或多个键值对,最后将输出的键值对写入到HDFS中。