Hadoop系列 (四):Yarn详细介绍

本文是Hadoop系列的第四篇,详细介绍了YARN(Yet Another Resource Negotiator)的架构、组件及其运行原理。YARN将JobTracker的功能拆分为ResourceManager和ApplicationMaster,提供资源管理和调度。ResourceManager负责全局资源分配,ApplicationMaster负责应用程序的调度和监控。文中还阐述了YARN的高可用性(HA)配置,包括ResourceManager的故障转移和恢复机制,以及Zookeeper在HA中的作用。
摘要由CSDN通过智能技术生成

Hadoop系列文章

Hadoop系列 (一):在CentOS中搭建hadoop环境(伪分布式)

Hadoop系列 (二):完全分布式搭建(腾讯云服务器+阿里云服务器)

Hadoop系列 (三):HDFS详细介绍

Hadoop系列 (四):Yarn详细介绍

Hadoop系列 (五):MapReduce详细介绍

Hadoop系列 (六):Spark搭建

Hadoop系列 (七):ZooKeeper详细介绍

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的调度/监控进行分离。分别由ResourceManagerApplicationMaster进程来实现。

  1. ResourceManager:负责整个集群的资源管理和调度。
  2. ApplicationMaster:负责应用程序相关的事务,比如任务调度、任务监控和容错等。

Yarn的出现,使得多个计算框架可以运行在一个集群当中。

  1. 每个应用程序对应一个ApplicationMaster。

  2. 目前可以支持多种计算框架运行在Yarn上面比如MapReduce、Storm、Spark、Flink

Yarn基本架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pmEBGrkp-1631867198065)(C:\Users\EricR\OneDrive\Bigdata\picture\Hadoop\Yarn\01-Yarn基本架构.png)]

从Yarn的架构图来看,它主要由ResourceManager和ApplicationMasterNodeManagerContainer等组件组成。

Yarn组件介绍

ResourceManager

Yarn分层结构的本质是ResourceManager(RM)。这个实体控制整个集群,并管理应用程序计算资源的分配。

Resource Manager由SchedulerApplicatio Manager组成:

  1. Scheduler:调度器,本质上是一种策略。根据节点的容量、队列情况,为Application分配资源。
  2. ApplicationManager:应用程序管理器,负责管理Client用户提交的应用。接受用户提交的请求,在节点中启动ApplicationMaster,并监控ApplicationMaster的状态、进行必要的重启。

ResourceManager与 ApplicationMaster 一起分配资源,与NodeManager 一起启动和监视它们的基础应用程序。ApplicationMaster 承担了以前的 TaskTracker 的一些角色,ResourceManager 承担了 JobTracker 的角色。

ResourceManager的作用可以总结为:

  1. 处理客户端的请求
  2. 启动或者监控ApplicationMaster
  3. 监控NodeManager
  4. 资源的分配与调度

NodeManager

NodeManager(NM)管理一个Yarn集群中的每个节点。在每一个节点上都有一个NodeManager,作为代理监控节点的资源使用情况(cpu, memory, disk, network),并向Resource Manager上报节点状态。

NodeManager的作用可以总结为:

  1. 单个节点上的资源管理
  2. 处理来自ResourceManager上的命令
  3. 处理来自ApplicationMaster上的命令

ApplicationMaster

ApplicationMaster(AM)负责数据处理job的执行调度。

ApplicationMaster与ResourceManager进行沟通,获取资源进行计算。得到资源后,与节点上的NodeManager进行沟通,在分配的Container中执行任务,并监控任务执行的情况。

每当 Client 提交一个 Application 时候,就会新建一个 ApplicationMaster 。由这个 ApplicationMaster 去向 ResourceManager 申请容器(Container)资源,获得资源后会将要运行的程序发送到容器上启动,然后进行分布式计算。

ApplicationMaster的作用可以总结为:

  1. 负责数据的切分
  2. 为应用程序申请资源并分配给内部的任务
  3. 负责任务监控与容错

Container

资源的一种抽象方式,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当Application Master向Resource Manager申请资源时,ResourceManager为ApplicationMaster返回的资源便是Container

Yarn会为每一个任务分配一个Container,且该任务只能使用该Container中的资源。

Container生命周期:

  1. 当Yarn集群收到来自客户端的一个应用程序请求时,会启动一个ApplicationMaster,用来表示提交的应用程序,由这个 ApplicationMaster 去向 ResourceManager 申请容器(Container)资源。
  2. 执行应用程序时,ApplicationMaster 监视容器直到完成。
  3. 当应用程序完成时,ApplicationMaster 从 ResourceManager 注销其容器,执行周期就完成了。

Yarn运行原理

Yarn的运行,主要由以下步骤组成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-20VWEvIX-1631867198073)(C:\Users\EricR\OneDrive\Bigdata\picture\Hadoop\Yarn\02-Yarn-running.png)]

  1. 作业提交

    Client 向 Yarn 提交 Application,向整个集群提交MapReduce作业 (第1步) ,其中包括启动该应用的ApplicationMaster的必须信息,例如ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。

    新的作业ID(应用ID)由资源管理器分配(第2步)。

    MapReduce会根据输入文件计算输入分片&

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值