MapReduce与YARN原理解析

MapReduce与YARN原理解析



前言

这里主要偏向理论理解,主要是为了更好的理解MR计算框架和YARN


一.MapReduce

(1)mapreduce的发展历程

Hadoop1.x是由hdfs和mapreduce组成,并没有YRAN,资源的调度是由mapreduce的两个组件(JobTracker和TaskTracker)完成。到了Hadoop2.x时mapreduce就把资源管理给分离出来变成现在YARN,YRAN的功能十分强大后续再详细介绍。对于Hadoop2.x后的mapreduce就单纯的是一个分布式计算框架。

(2)mapreduce的工作流程

在这里插入图片描述

Split:分片操作

MR最主要就是为了实现分布式并行处理,因此对于一个大规模数据集作业我们需要采取分片操作
split可以自定义大小,一般以一个块大小最合适

  • 分片操作就是把数据集拆分成很多小分片,注意这里的切分并不是物理上的,而是逻辑上定义的

RR:记录阅读器

对于map任务它的输入和输出都是k-v形式的,所以就需要通过RR将数据转换为k-v形式。

  • RR根据分片的位置和长度信息,从hdfs中将各块把它相关的分片读取处理,读出来以后输出k-v形式

Map:Map函数

map当中就是用户自定义的逻辑处理,根据用户自定义的map函数处理逻辑就可以完成相关的数据处理,处理结束之后就会生成一堆的k-v中间结果

Shuffle

这些中间结果通过shuffle才能发送到Reduce

  • 示例请添加图片描述

Reduce函数

reduce当中就是用户自定义的逻辑处理,根据用户自定义的reduce函数处理逻辑就可以完成相关的数据处理进行最后的输出

二.YARN

YARN的简介

YARN的体系结构:ResourceManager(RM),ApplicationMaster(AM),NodeManager(NM)

  • ResourceManager(RM)是一个全局的资源管理器,负责整个系统的资源管理和分配,处理客户端请求,主要包括两个组件,即调度器(Scheduler)和应用程序管理器(Application Manager)
  • ApplicationMaster任务调度与任务监控,为应用作业申请资源并分配给各个任务(Map任务或Reduce任务),实现资源的二次分配,与NM保持通信进行对各个任务的监控,并在任务失败时恢复(即重新申请资源重启任务)
  • NodeManager是驻留在一个YARN集群中的每个节点上的代理,监控每个容器的资源使用情况,向RM汇报作业的资源使用情况和每个容器的运行状态,接收来自ApplicationMaster的各种请求。

调度器接收来自ApplicationMaster的应用程序资源请求,把集群中的资源以“容器”的形式分配给提出申请的应用程序,容器的选择通常会考虑应用程序所要处理的数据位置,进行就近选择从而实现“计算向数据靠拢”

容器:容器(Container)作为动态资源分配单位,每个容器中都封装了一定数量的CPU、内存、磁盘等资源,从而限定每个应用程序可以使用的资源量

调度器:调度器被设计成是一个可插拔的组件,YARN不仅自身提供了许多种直接可用的调度器,也允许用户根据自己的需求重新设计调度器

应用程序管理器:负责系统中所有应用程序的管理工作,主要包括应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动等

YARN工作流程

  1. 首先用户编写应用程序向YARN提交,提交内容包括:
    ApplicationMaser程序
    启动ApplicationMaster命令(这就是会根据计算框架而变)
    用户程序

  2. RM负责接受和处理来自客户端的请求,为应用程序分配一个容器隔离,并在该容器中启动一个ApplicationMaster,由ApplicationMaster总管整个作业的调度与执行

  3. ApplicationMaster被创建后会首先向RM注册,因为只有注册了RM才会实时监控管理ApplicationMaster

  4. ApplicationMaster采用了轮询的方式向RM申请资源
    一个应用程序执行就会关联一个ApplicationMaster管家,它会统一管理整个程序作业的资源调度执行。作业要执行就会被分成多个任务(如多个Map或Reduce任务),每个任务都需要相关的容器资源,都需要申请一个容器去执行任务,ApplicationMaster这时就需要向RM申请这些资源

  5. RM以容器的形式向AM分配资源

  6. AM获得到容器以后,就会把它申请到的资源进行二次分配,把它分配到自己所管理的任务

  7. 这时每个在容器运行的任务都要通过NM将当前的工作状态与进度向AM汇报,如果任务失败AM会重新申请让他恢复

  8. 整个应用程序(作业)运行完成后AM会向RM应用程序管理器注销并关闭自己,释放资源

YARN是一个纯粹的资源调度管理框架,只要编程实现相应的AM就可以运行不同的框架

总结

以上就是我今天的所学内容,主要还是偏向理论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无聊的n一天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值