文章目录
Hadoop系列文章
Hadoop系列 (一):在CentOS中搭建hadoop环境(伪分布式)
Hadoop系列 (二):完全分布式搭建(腾讯云服务器+阿里云服务器)
Yarn简介
Yarn 的全称是 Yet Another Resource Negotiator,意思是“另一种资源调度器”。Hadoop2.0版本新引入的资源管理系统,直接从MapReduce演化而来。
在早期Hadoop1.0 的架构中, MapReduce 的jobTracker
担负起了太多的责任了,接收任务是它,资源调度是它,监控 TaskTracker 运行情况还是它。这样实现的好处是比较简单,但相对的,就容易出现一些问题,比如常见的单点故障问题。
要解决这些问题,只能将jobTracker
进行拆分,将其中部分功能拆解出来。于是 Hadoop 在 1.0 到 2.0 的升级过程中,便将 JobTracker 的资源调度工作独立了出来。而这个独立出来的资源管理框架,就是 Yarn。
Yarn的核心思想是将MP1中JobTracker资源管理和Job的调度/监控进行分离。分别由ResourceManager和ApplicationMaster进程来实现。
- ResourceManager:负责整个集群的资源管理和调度。
- ApplicationMaster:负责应用程序相关的事务,比如任务调度、任务监控和容错等。
Yarn的出现,使得多个计算框架可以运行在一个集群当中。
-
每个应用程序对应一个ApplicationMaster。
-
目前可以支持多种计算框架运行在Yarn上面比如
MapReduce、Storm、Spark、Flink
等
Yarn基本架构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pmEBGrkp-1631867198065)(C:\Users\EricR\OneDrive\Bigdata\picture\Hadoop\Yarn\01-Yarn基本架构.png)]
从Yarn的架构图来看,它主要由ResourceManager和ApplicationMaster、NodeManager、Container等组件组成。
Yarn组件介绍
ResourceManager
Yarn分层结构的本质是ResourceManager(RM)。这个实体控制整个集群,并管理应用程序计算资源的分配。
Resource Manager由Scheduler
和Applicatio Manager
组成:
- Scheduler:调度器,本质上是一种策略。根据节点的容量、队列情况,为Application分配资源。
- ApplicationManager:应用程序管理器,负责管理Client用户提交的应用。接受用户提交的请求,在节点中启动ApplicationMaster,并监控ApplicationMaster的状态、进行必要的重启。
ResourceManager与 ApplicationMaster 一起分配资源,与NodeManager 一起启动和监视它们的基础应用程序。ApplicationMaster 承担了以前的 TaskTracker 的一些角色,ResourceManager 承担了 JobTracker 的角色。
ResourceManager的作用可以总结为:
- 处理客户端的请求
- 启动或者监控ApplicationMaster
- 监控NodeManager
- 资源的分配与调度
NodeManager
NodeManager(NM)管理一个Yarn集群中的每个节点。在每一个节点上都有一个NodeManager,作为代理监控节点的资源使用情况(cpu, memory, disk, network),并向Resource Manager上报节点状态。
NodeManager的作用可以总结为:
- 单个节点上的资源管理
- 处理来自ResourceManager上的命令
- 处理来自ApplicationMaster上的命令
ApplicationMaster
ApplicationMaster(AM)负责数据处理job的执行调度。
ApplicationMaster与ResourceManager进行沟通,获取资源进行计算。得到资源后,与节点上的NodeManager进行沟通,在分配的Container中执行任务,并监控任务执行的情况。
每当 Client 提交一个 Application 时候,就会新建一个 ApplicationMaster 。由这个 ApplicationMaster 去向 ResourceManager 申请容器(Container)资源,获得资源后会将要运行的程序发送到容器上启动,然后进行分布式计算。
ApplicationMaster的作用可以总结为:
- 负责数据的切分
- 为应用程序申请资源并分配给内部的任务
- 负责任务监控与容错
Container
资源的一种抽象方式,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当Application Master向Resource Manager申请资源时,ResourceManager为ApplicationMaster返回的资源便是Container。
Yarn会为每一个任务分配一个Container,且该任务只能使用该Container中的资源。
Container生命周期:
- 当Yarn集群收到来自客户端的一个应用程序请求时,会启动一个ApplicationMaster,用来表示提交的应用程序,由这个 ApplicationMaster 去向 ResourceManager 申请容器(Container)资源。
- 执行应用程序时,ApplicationMaster 监视容器直到完成。
- 当应用程序完成时,ApplicationMaster 从 ResourceManager 注销其容器,执行周期就完成了。
Yarn运行原理
Yarn的运行,主要由以下步骤组成
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-20VWEvIX-1631867198073)(C:\Users\EricR\OneDrive\Bigdata\picture\Hadoop\Yarn\02-Yarn-running.png)]
-
作业提交
Client 向 Yarn 提交 Application,向整个集群提交MapReduce作业 (第1步) ,其中包括启动该应用的ApplicationMaster的必须信息,例如ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。
新的作业ID(应用ID)由资源管理器分配(第2步)。
MapRe