Yarn的简介及工作机制

Apache Yarn(Yet Another Resource Negotiator)是hadoop的集群资源管理器系统,Yarn从hadoop 2.0开始引入,最初是为了改善Map Reduce的实现,但是它具有通用性,同样执行其他分布式计算模式。
Yarn很好解决了MapReduce1.0中的局限性,所以针对MapReduce1.0,Yarn就有了如下特点:

  1. 支持非MapReduce应用的需求
  2. 可扩展性
  3. 提高资源是用率
  4. 用户敏捷性
  5. 可以通过搭建为高可用

Yarn从整体上还是属于master/slave模型,主要依赖于三个组件来实现功能,ResourceManager,NodeManager和ApplicationMaster。

  1. ResourceManager,拥有系统所有资源分配的决定权,拥有集群资源主要、全局视图。主要职责在于调度,即在竞争的应用程序之间分配系统中的可用资源,是集群资源的仲裁者。
  2. NodeManager是Yarn节点的一个“工作进程”代理,管理hadoop集群中独立的计算节点,主要负责与ResourceManager通信,负责启动和管理应用程序的container的生命周期,监控它们的资源使用情况(cpu和内存),跟踪节点的监控状态,管理日志等,并报告给ResourceManager。
  3. ApplicationMaster 负责与scheduler协商合适的container,跟踪应用程序的状态,以及监控它们的进度,ApplicationMaster是协调集群中应用程序执行的进程。
    (1)Container是Yarn框架的计算单元,是具体执行应用task(如map task、reduce task)的基本单位。
    Container和集群节点的关系是:一个节点会运行多个Container,但一个Container不会跨节点。

Yarn的工作流程

在这里插入图片描述

  1. 用户使用客户端向 ResourceManager 提交一个任务,同时指定提交到哪个队列和需要多少资源。用户可以通过每个计算引擎的对应参数设置,如果没有特别指定,则使用默认设置。

  2. ResourceManager 在收到任务提交的请求后,先根据资源和队列是否满足要求选择一个 NodeManager,通知它启动一个特殊的 container,称为 ApplicationMaster,后续流程由它发起。

  3. ApplicationMaster向 ResourceManager 注册后根据自己任务的需要,向 ResourceManager 申请 container,包括数量、所需资源量、所在位置等因素。

  4. 如果队列有足够资源, ResourceManager 会将 container 分配给有足够剩余资源的 NodeManager,由 ApplicationMaster 通知NodeManager 启动 container。

  5. container 启动后执行具体的任务,处理分给自己的数据。NodeManager除了负责启动 container,还负责监控它的资源使用状况以及是否失败退出等工作,如果 container 实际使用的内存超过申请时指定的内存,会将其杀死,保证其他 container 能正常运行。

  6. 各个 container 向ApplicationMaster汇报自己的进度,都完成后,ApplicationMaster向 ResourceManager注销任务并退出, ResourceManager 通知NodeManager 杀死对应的 container,任务结束。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值