Hadoop笔记:YARN分布式资源调度框架

Hadoop笔记:YARN分布式资源调度框架

标签: 大数据


YARN产生背景

简单介绍

MapReduce1.x存在的问题:单点故障 + 节点压力大不易扩展

YARN(Yet Another Resource Negotiator)是资源的协调者、资源的调度器,是通用的资源管理系统,为上层资源提供统一的管理和调度。

不同计算框架可以共享一个HDFS集群上的数据,享受整体的资源调度。

Spark/MapReduce/Storm/Flink on YARN 好处:与其他计算框架共享集群资源,按资源需要分配,进而提高集群资源的利用率。

文档说明

The fundamental idea of YARN is to split up the functionalities of resource management and job scheduling/monitoring into separate daemons. The idea is to have a global ResourceManager (RM) and per-application ApplicationMaster (AM). An application is either a single job or a DAG of jobs.

YARN的主要思想是把资源管理和作业调度/监控的功能分解在单独的进程中,这个思想有一个全局的ResourceManager,每个application一个ApplicationMaster。一个application也是一个单独的作业

YARN架构

ResourceManager:RM

The ResourceManager is the ultimate authority that arbitrates resources among all the applications in the system.

  • 整个集群同一时间提供服务的RM只有一个,负责集群资源的统一管理和调度。

  • 处理客户端的请求:提交一个作业、杀死一个作业

  • 监控NM,一旦某个NM挂了,那么该NM上运行的任务告诉我们的AM来如何进行处理。

ResourceManager有两个主要组件:Scheduler和ApplicationsManager:

  • Scheduler根据各个Application的资源需求负责将资源分配给各个调度给正在运行的各个项目,Scheduler是一个纯调度程序,它没有监控或追踪应用程序的状态。
  • ApplicationsManager负责接受作业提交,协商执行特定于应用程序的ApplicationMaster的第一个容器,并提供失败时重新启动ApplicationMaster容器的服务。每个应用程序的ApplicationMaster负责从调度程序中协商适当的资源容器,跟踪其状态并监视进度。

NodeManager:NM

The NodeManager is the per-machine framework agent who is responsible for containers, monitoring their resource usage (cpu, memory, disk, network) and reporting the same to the ResourceManager/Scheduler.

NM是每个及其框架的代理,它负责container,并监视它们资源的使用并报告给RM。

  • 整个集群中有多个,负责自己本身节点资源管理和使用

  • 定时向RM汇报本节点的资源使用情况

  • 接收并处理来自RM的各种命令:启动Container

  • 处理来自AM的命令

  • 单个节点的资源管理由自己完成

ApplicationMaster:AM

The per-application ApplicationMaster is, in effect, a framework specific library and is tasked with negotiating resources from the ResourceManager and working with the NodeManager(s) to execute and monitor the tasks.

每个应用程序对应的ApplicationMaster实际上是一个特殊框架的库,负责从RM处获取资源并且与NM仪器工作来执行这些业务。

  • 每个应用程序(MapReduce/Spark)对应的一个AM,负责应用程序的管理。

  • 为应用程序向RM申请资源(core、memory),分配给内部task进行相应的处理。

  • 需要与NM通信:启动/停止task,task运行在container里面呢,AM也运行在container里面。

    1. Container
      封装了CPU、Memory等资源的一个容器
      是一个任务运行环境的抽象
    2. Client
      提交作业
      查询作业的进度
      杀死作业

执行流程

执行流程的顺序如下:

  1. 用户会向YARN提交一个作业,比如MapReduce作业或Spark作业

  2. ResourceManager会为作业分配第一个Container,会和对应的NodeManager进行通信,要求在该NodeManager中启动一个Container。

  3. 这个Container可以用来启动一个ApplicationMaster。

  4. ApplicationMaster与ResourceManager进行一个交互注册,这样用户就可以在ResourceManager中查询到作业的运行情况。

  5. ApplicationMaster从ResourceManager拿到所需要的资源

  6. ApplicationMaster与一些NodeManager们进行交互,要求其启动一个Container,把task运行在conta之上

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值