Hadoop MapReduce架构简介


        MapReduce采用主从结构,JobTracker作为主节点,TaskTracker作为从节点。

        其架构图详见图1所示:

        

图1   MapReduce架构图

1、Client

       用户编写的MapReduce程序通过Client提交到JobTracker端,还可通过Client提供的一些接口查看作业的运行状态。在Hadoop内部,用Job(作业)表示MapReduce程序。一个MapReduce程序对应若干个作业,而每个作业会被分解成若干个Map Task或Reduce Task。


2、JobTracker

        JobTracker的职责:

        接收客户端提交的计算任务(Job);

        通过任务调度器(TaskSheduler)分配计算任务给TaskTracker执行;

        监控所有TaskTracker与作业的健康状况,当发现任务出现故障时,将相应的任务转移到其他的节点。

        打个比方,JobTracker相当于企业软件开发的项目经理,主要负责各种资源的准备、调度和开发任务的分配。


3、TaskTracker

        TaskTracker周期性的通过Heartbeat将本节点资源的使用情况和任务的运行进度汇报给JobTracker,同时接收JobTracker发送过来的命令并执行相应的操作,如启动新的任务、杀死作业等等。相对应的,TaskTracker相当于开发人员,主要执行项目经理分配的开发任务,并按时向项目经理汇报项目的开发进度。


4、Task

       Task分为Map Task和Reduce Task两种,都是由TaskTracker启动。MapReduce的处理单位是split,它是一个逻辑概念(意味着实际上并没有对数据切割),只包含一些元数据信息,如数据偏移量、数据长度等。Split的多少决定了Map Task的多少,因为每个split会交给一个Map Task处理。


Map Task的执行过程如下图所示:


Map Task的执行过程:

       Map Task先将对应的split迭代解析成一个个的<key,value>对,然后依次调用用户自定义的map()方法进行处理,最终将临时结果存放到本地磁盘上,其中,临时结果被分成若干个partition,每个partition将被一个Reduce Task处理。


Reduce Task的执行过程如下图所示:


Reduce Task的执行过程:

       1)、从远程节点上读取Map Task中间结果,这是Shuffle阶段;

       2)、按照key对key/value pair进行排序,这是Sort阶段;

       3)、依次读取<key, value list>,调用用户自定义的reduce()方法处理,

并最终的结果存到HDFS,这是Reduce阶段。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值