美文网首页
MapReduce详解及MapReduce的架构设计

MapReduce详解及MapReduce的架构设计

作者: 怀夕 | 来源:发表于2018-05-26 16:05 被阅读0次

    一、MapReduce是什么?

           Mapreduce是一个易于编程并且能在大型集群(上千节点)快速地并行得处理大量数据软件框架,以可靠,容错的方式部署在商用机器上。

           MapReduce=Map(映射函数) + Reduce(规约函数)

           Map:即把复杂的任务分成可以用相同方法解决的小数据块,然后把这些小数据块分发到不同的工作节点上,进行并行计算。

           Reduce:即对map阶段的结果进行汇总输出。

           自我理解:

                           比如我们要统计图书馆有多少本书,每人数一个书架。这就是“Map”。

                           数完之后我们到一起,把所有人的统计数加在一起。这就是“Reduce”。


    二、hadoop1.x  MapReduce1的架构设计

    MapReduce1的架构是主从架构。一个JobTracker(主节点)带多个TaskTracker(从节点),从节点通过向主节点发送心跳信息(heartbeat)来告诉它自己的运行情况,而主节点则是负责管理调度的工作。

    Client:客户端,负责提交申请。

    JobTracker :是作业的管理者。将作业分解成一堆的任务(task,又分为map task和reduce task),然后将任务分派给TaskTracker运行,并进行作业的监控、容错处理(task作业挂了,重启task的机制等)。

    TaskTracker:任务的执行者。 在TaskTracker上运行task,并且会与JobTracker 进行交互(向JobTracker汇报本节点的健康状况、资源使用情况、作业执行情况。)。 

    Map Task :自己开发的map任务交由task进行处理, 解析每条记录的数据,然后交给自己的map方法处理, 将map的输出结果写到本地磁盘。

    Redece Task:将Map Task输出的数据进行读取, 按照数据进行分组传给编写的reduce方法处理,将输出结果写到HDFS。

    Task Scheduler:任务调度器。

    (1)客户端先提交MapReduce作业到JobTracker中,

    (2)JobTracker再将任务传给Task Scheduler(任务调度器),

    (3)Task Scheduler将调度好的任务再传给JobTracker,

    (4)JobTracker再将调度好的任务分发给TaskTracker,

    (5)TaskTracker再利用内部的Map TaskReduce Task进行内部的资源调度进行执行作业,

    (6)作业完成之后,再依次将“作业完成”的信息传给客户端。


    三、hadoop2.x MapReduce2的架构设计(YARN的运行机制)

    hadoop2.x的架构去掉了JobTracker和TaskTracker,用ResourceManager和NodeManager替代。

    Client:客户端,用来提交作业。

    ResourceManager(RM):资源管理器,协调集群上的计算资源的分配 。

    ApplicationMaster(AM):应用管理器(上图为MR AppMstr),协调运行MapReduce任务,他和应用程序任务运行在container中,这些container由RM分配并且由NM进行管理。

    NodeManager(NM):负责启动和监控集群上的计算容器(container)。

    containers:容器(对应MapReduce1中的任务槽),是将资源隔离出来的一种框架,每一个任务对应着一个container,且只能在该Container上运行。应用管理器(AM)和资源管理器(RM)协调这个计算资源containers。

    (1)Client向ResourceManager提交jar应用程序;

    (2)ResourceManager收到申请后,启动NodeManager,并在NodeManager启动应用程序ApplicationMaster;

    (3)ApplicationMaster被启动后,再向ResourceManager进行注册,以便用户可以直接在ResourceManager中查看应用程序的运行状态;

    (4)同时ApplicationMaster向ResourceManager提交资源申请;

    (5)ApplicationMaster取得资源后,再给相应的NodeManager发送请求;

    (6)NodeManager在接到了启动任务的要求后,设置好任务的运行环境,并启动MapTask和ReduceTask;

    (7)ReduceTask任务和MapTask任务在运行的过程中实时向ApplicationMaster汇报工作的进度和状态;

    (8)任务运行完成后,ApplicationMaster向ResourceManager注销并关闭自己。


    四、MapReduce的执行步骤

    通过上图可以看出,MapReduce在执行过程中被拆成Map阶段和Reduce阶段,分别交给Map Task和Reduce Task进行处理,数据在Map Task阶段根据空格将数据块中的单词分割出来,每读一个单词,就产生一条记录,然后shuffle阶段进行“洗牌”重新调整归类,再在Reduce Task阶段合并计算,最后输出整合之后的结果。

    相关文章

      网友评论

          本文标题:MapReduce详解及MapReduce的架构设计

          本文链接:https://www.haomeiwen.com/subject/bffmjftx.html