YARN简介

YARN

YARN(Yet Another Resource Negotiator)是Hadoop的集群资源管理系统。

分布式计算框架(MapReduce,Spark)作为YARN应用运行在集群计算层(YARN)和集群存储层(HDFS和Hbase)之上。而Pig,Hive等都是运行在MapReduce,Spark之上的处理框架,它们不和YARN直接打交道。

HDFS,HBase -> YARN -> MapReduce,Spark ->Hive,Pig

YARN结构解析

ResourceManager

  • 处理客户端请求
  • 启动/监控ApplicationMaster
  • 监控NodeManager
  • 资源分配与调度

NodeManager

  • 单个节点上的资源管理
  • 处理ResourceManager的命令
  • 处理ApplicationMaster的命令

ApplicationMaster

  • 数据切分
  • 为应用程序申请资源,并分配给内部任务
  • 任务监控与容错

Container

  • 对任务运行环境的抽象,封装CPU,内存等资源以及环境变量,启动命令等任务运行相关信息

YARN应用

YARN通过两类长期运行的守护进程提供核心服务:

  • 管理集群上资源使用的资源管理器
  • 运行在集群中所有节点上且能够启动和监控容器的节点管理器

容器用于执行特定应用程序的进程,每个容器都有资源限制。

YARN中应用到用户运行作业之间的对应关系:

  • 一个用户作业对应一个应用,MapReduce
  • 作业的每个工作流或每个用户对话对应一个应用,Spark
  • 多个用户共享一个长期运行的应用

YARN中的调度

YARN调度器是根据既定策略为应用分配资源,有三个调度器:

  • FIFO调度器
  • 容量调度器
  • 公平调度器
FIFO调度器

FIFO调度器将应用放置在一个队列中,然后按照提交的顺序运行应用,先进先出。

容量调度器

在FIFO中容易出现小作业阻塞,即等待大作业完成之后才能运行。

在容量调度器中,设置了一个独立的专门队列保存小作业,一提交就可以启动,需要为小作业预留一定资源,即为队列预留一定的资源。

即其有多个队列,每一个队列预留一定的资源,每个队列采用FIFO调度。
在capacity-scheduler.xml文件中配置各个队列大小。

公平调度器

不需要预留资源,调度器会在所有运行的作业之间动态平衡资源。

第一个大作业启动,它是唯一运行的作业,则会获得集群所有的资源。当第二个小作业启动,它被分配到集群的一半资源,但是它需要等待第一个作业将这一半资源释放。等第二个作业完成之后,大作业将会再次得到全部的资源。

在fair-scheduler.xml中哦诶之各个队列大小(分配权重),用于公平共享计算。

抢占:允许调度器终止那些占用资源超过其公平共享份额的队列的容器,资源释放后可以分配给资源数量低于应得份额的队列。抢占功能有两个抢占超时设置:

  • 最小共享
    在指定时间内未获得被承若的最小共享资源,调度器会抢占其他容器。
  • 公平共享
    在指定时间呃逆获得的资源仍然低于其公平共享份额的一半,调度器会抢占其他容器。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值