MapReduce,并行计算框架,用于处理大规模的数据集
一、MapReduce原理
采用分而治之的思想,将一个大任务分成多个子任务(Map阶段),并行执行后,合并结果(Reduce阶段)
MapReduce任务过程两个处理阶段:
1. Map阶段,需要编写Map函数
2. Reduce阶段,需要编写Reduce函数
每个阶段有以 <key,value> 键-值对 作为输入和输出
二、MapReduce 运行流程
1. 基本概念
两类任务
Job:任务
Task:Job任务分解成多个 Map任务(MapTask)和Reduce任务(ReduceTask)
两类节点
JobTracker:用于作业调度;分配任务和监控任务;监控TaskTracker的状态
TaskTracker:用于执行任务;以及汇报任务状态
TaskTracker 与 HDFS中DataNode 往往在同一组位节点,当Task分到TaskTreacker节点时,所需的数据就在同一组的DataNode里面,能够快速读取到数据
这也是Map Reduce的设计思想,将移动计算代替移动数据
每次任务先提交到JobTracker里,JobTracker采用一定的调度策略,来进行分配,分配成Map惹任务和Reduce任务。
三、MapReduce容错机制
出错的处理方法
1. 重复执行 任务出错有可能是本身Job出错,硬件问题或数据问题,一般默认重复执行4次后仍出现错误,则放弃执行
2.推测执行 在任务执行的过程中,某个TaskTracker检测到当前任务计算的特别的慢,不暂停这个TaskTracker中的任务,直接重新启动另一个TaskTracker来执行该任务