MapReduce 框架采用 Master/Slave 架构,它由一个 JobTracher 和多个 TaskTracker 构成, 如下图所示。
图 2。1 MapReduce 框架
它主要有以下 4 个部分组成:
(1)Client
用户通过 Client 提交作业,即要运行的 MapReduce 程序,同时也上传该作业所需要的数 据文件。
(2)JobTracker
本科毕业设计说明书 第 5 页 JobTracker 在 Hadoop 中只有一个,对应于 Master 和 NameNode,是此框架下最核心的主 类之一。JobTracker 主要负责作业的调度、TaskTracker 的管理、作业执行的监控和运行作业 的容错机制。它与 TaskTracker 之间通过心跳机制通信,接受 TaskTracker 发来的节点信息和 在此节点上执行的任务状态信息。当 TaskTracker 告知 JobTracker 自己空闲时,JobTracker 将来~自,优^尔-论;文*网www.youerw.com +QQ752018766-
相关的节点信息传给调度模块,从而给空闲的此 TaskTracker 分配任务。
(3)TaskTracker
TaskTracker 对应于 Slave 与 DataNode,它也是此框架下最重要的核心主类之一。通过心 跳机制与 JobTracker 通信,传送自己的节点信息和其上面的任务执行信息,接收并执行 JobTracker 传来的命令。TaskTracker 中把资源分为一个个 slot,而 slot 也分成两种类别:Map slot 和 Reduce slot, JobTracker 给它分配的两种任务分别在空闲的这两种 slot 上执行。 TaskTracker 主要任务就是针对任务的执行进行各种信息的监控和管理,其上的任务的并发程 度由于受限于相应的 slot 数量,受到自己配置的参数限制。
(4)Task
Task 即为作业的任务,当提交一个作业时,首先依据分片大小和文件信息分成若干个不 同的 Map 任务,然后由 Map 任务执行完后进行对中间结果的汇总,此即为 Reduce 任务。其 中 Map 任务划定的分片方法和大小可由用户自己配置,一个分片对应着一个 Map 任务。
Task 的执行过程:
(1)Map 任务的执行过程如下图所示。首先对输入的文件进行分片,得到多个分片,然 后对其按照一定的规则解析成 key/value 对,默认的一个规则是将每行的文本内容解析成 key/value 对。然后调用用户自己编写的 Mapper 类中的 map()方法,每次调用都会产生若干个 key/value 对,将这些中间结果存储在本地。按一定规则,默认为按照 key 分区且只分成一个 区,所以只对应着一个 Reduce 任务。