首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Hadoop MapReduce v1 系统剖析

1,概述

MapReduce作为Hadoop核心组件,采用了和HDFS相同的架构设计(Master/Slave架构),作为Hadoop的分布式计算框架,其比较适合离线计算的场景。离线数据存储在HDFS中,MapReduce中的任何节点都可以从HDFS中下载文件。作为计算框架简单的来说即输入(input)和输出(output).MapReduce主要由以下四部分组成:JobClient,JobTracker,TaskTracker和Task(MapTask和Reduce Task)

2,JobClient客户端

主要负责作业的初始化,一个MapReduce可以对应若干个作业,每个作业可以对应若干个task。JobClient创建期间需要建立和JobTracker的RPC连接,并获取一个新的作业ID,之后根据配置中的Job信息在HDFS上创建相关目录,复制Job对应的job.jar文件到HDFS中,并根据配置的inputformat计算该Job的Split信息并把对应的job.split和job.splitmetainfow文件提交到HDFS中(Split大小计算公式为:splitSize=max("mapred.min.split.size",min("mapred.max.split.size",blockSize)),不受maptask的影响),Jobclient提交到HDFS中的Replication个数由mapreduce.client.submit.file.replication参数控制,尽量实现Task节点的数据本地计算同是也避免大量节点的并发获取产生热点数据,之后JobClient通过RPC连接到JobTracker服务器并提交作业,MapReduce的作业的上传与下载都是由DistributedCache托管,不需要JobClient处理。

2,JobTracker调度器

主要负责资源的监控和作业的调度,作为整个系统的分配任务核心,其更重要的工作时资源的监控。JobTracker接收到JobClient基于RPC调用提交到的数据后,对Job的数据进行一些初始化的处理,根据jobclient提交的split元数据信息创建maptask和reducetask,也会创建setuptask和cleanuptask,setuptask目的为了初始化maptask和reducetask,cleanuptask用来清理maptask和reducetask。

在JobTracker中一个作业由一个JobInProgress对象描述,跟踪任务整体运行状态,一个任务由一个taskinprogress对象描述。

JobTracker分为:作业监控层,任务监控层和任务执行层。

作业监控层数据由JobInProgress对象存储,任务监控层数据由taskinprogress对象负责描述,任务执行层由task attempt负责描述Task分配节点并跟踪监控各个节点的数据,在任务运行中同TaskTracker节点保持通讯,通过心跳获取节点是否有效,是否需要开辟一个新的节点以及给TaskTracker下达命令

3,TaskTracker任务执行

同JobTracker进行通信,发送心跳信息并对本节点上的task进行资源管理

JobTracker位于主节点,TaskTracker位于从节点,TaskTracker主要负责执行JobTracker节点分配的Map/Reduce任务独立管理各自本地的Task,一个tasktracker可以创建多个JVM用于并行的运行Task任务,TaskTracker需要定时向JobTracker提交心跳信息,包括服务器状态,任务执行情况等,jobtracker根据返回的心跳信息判断该TaskTracker节点是否可用并通过相应心跳信息让TaskTracker执行对应的操作,如杀死任务,下次心跳时间间隔等。

服务组件不仅负责与其它的TaskTracker节点而且还负责与JobTracker节点之间的通信服务,管理组件负责对该节点上的任务、作业、JVM实例以及内存进行管理,工作组件则负责调度Map/Reduce任务的执行。

4,task组件

分为Map Task和Reduce Task,以Split作为其最小存储单位。

在MapReduce框架中一个任被划分为Map Task和Reduce Task两个阶段。

Map Task阶段从输入流中获取对应的key-value,交给用户自定义的map函数处理,并输出对应的新的key-value文件,在保存到磁盘之前会对map数据进行排序(或合并压缩)等操作

Reduce Task阶段从远程复制数据,并依次交给用户编写的Reduce函数进行数据处理,并将处理结果写到HDFS上

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180309G1OFI000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券