Hadoop的MapReduce架构

一、MapReduce的简介

Hadoop MapReduce是一个软件框架,基于该框架能够容易地编写应用程序,这些应用程序能够运行在由上千个商用机器组成的大集群上,并以一种可靠的,具有容错能力的方式并行地处理上TB级别的海量数据集。

 

Mapreduce工作机制涉及4个独立的实体:

  1、客户端(client):编写mapreduce程序,配置作业,提交作业,这就是程序员完成的工作;

  2、JobTracker:初始化作业,分配作业,与TaskTracker通信,协调整个作业的执行;

  3、TaskTracker:保持与JobTracker的通信,在分配的数据片段上执行Map或Reduce任务,TaskTracker和JobTracker的不同有个很重要的方面,就是在执行任务时候TaskTracker可以有n多个,JobTracker则只会有一个(JobTracker只能有一个就和hdfs里namenode一样存在单点故障,我会在后面的mapreduce的相关问题里讲到这个问题的);

  4、Hdfs:保存作业的数据、配置信息等等,最后的结果也是保存在hdfs上面。

 

二、MapReduce的工作流程

  首先是客户端要编写好mapreduce程序,配置好mapreduce的作业也就是job, 接下来就是提交job了,提交job是提交到JobTracker上的。

  这个时候JobTracker就会构建这个job,具体就是分配一个新的job任务的ID值 接下来它会做检查操作,这个检查就是确定输出目录是否存在,如果存在那么job就不能正常运行下去,JobTracker会抛出错误给客户端,接下来还要检查输入目录是否存在,如果不存在同样抛出错误,如果存在JobTracker会根据输入计算输入分片(Input Split),如果分片计算不出来也会抛出错误,至于输入分片我后面会做讲解的,这些都做好了JobTracker就会配置Job需要的资源了。

   分配好资源后,JobTracker就会初始化作业,初始化主要做的是将Job放入一个内部的队列,让配置好的作业调度器能调度到这个作业,作业调度器会初始化这个job,初始化就是创建一个正在运行的job对象(封装任务和记录信息),以便JobTracker跟踪job的状态和进程。

 

posted @ 2017-08-14 21:23  茅坤宝骏氹  阅读(105)  评论(0编辑  收藏  举报