1、 MapReduce是什么?
Hadoop MapReduce是一个软甲框架,基于该框架能够很容易地编写应用程序,这些应用程序能够运行在由上千个商用机器组成的搭集群上,并以一种可靠的、具有容错能力的方式并行地处理上TB 的海量数据。
2、MapReduce做什么?
MapReduce是用来并行处理海量数据运算的,但是具体是如何进行的呢?
首先,我们要了解他的思想是“分而治之”。MapReduce的主要过程分为map(映射)和reduce(归约)两部分。
map实现的是“分”,将一个复杂的任务分解为若干个比较简单的任务。
reduce负责的是“合”,对map阶段的结果实现汇总。
3.MapReduce运行过程
3.1 名词解释
- JobClient
客户端,用来提交MapReduce作业。 - JobTracker
用来监控资源和作业调度。检测每个job的是否健康,一旦发现job失败,立即将它的任务转移到其他附近的job上。 - TaskTracker
用来处理作业划分之后的任务。接收JobTracker分配的任务并执行。TaskTracker周期性的将每个节点的资源管理情况及任务运行情况一心跳的形式汇报给JobTracker,同时执行JobTracker反馈的命令。 - HDFS
保存数据和配置信息等。
3.2 MapReduce作业流程
- 客户端编写一个完整的MapReduce程序,配置作业,提交作业将运行作业所需资源复制到HDFS上,告知JobTracker执行任务;
- JobTracker协调这个作业任务,分配作业到资源空闲的就近节点,初始化作业,告诉TaskTracker任务命令;
- TaskTracker接收JobTracker的命令并执行任务,同时与JobTracker保持通信;
3.3 MapReduce逻辑作业过程
包括:input split、map、combiner、shuffle、reduce五阶段。
- input split:在执行map操作之前,程序会根据输入的文件计算split,每个split对应一个map。input split中存储的不是数据,而是分片长度及数据存储位置。
- map阶段:执行客户端提供的完整程序中的map函数。
- combiner阶段:非固定函数,相当于一个初步的reduce函数操作。
- shuffle阶段:本质是在做一个洗牌的逆过程,将原来杂乱无章的数据转换为具有一定规则的数据。个人觉得从map传递到reduce的过程就称为shuffle。
- reduce阶段:执行reduce函数并保存。