Yarn调度研究

1 篇文章 0 订阅

1. YARN基本组成结构

  • RM=调度器+应用程序管理器ASM

    调度器:纯调度器,不做与具体应用程序相关的工作,可插拔,用户可以设计新的调度器

    ASM:负责整个系统中所有的应用程序,包括应用程序提交、与调度器协商资源以启动AM,监控AM运行状态并在失败时重启

  • AM:每一个应用程序都要有一个AM,功能:与RM调度器协商获取资源(用container表示);将得到的任务进一步分配给内部的任务;与NM通信以启动/停止任务;监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启

  • NM:定时向RM汇报本节点上资源使用情况和container运行状态;接收并处理来自AM的container启动/停止要求

  • Container:资源抽象,封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。动态资源划分单位(与MR1中slot区别)

2. YARN通信协议

  • Client-RM: ApplicationClientProtocol

  • Admin-RM: ResourceManagerAdministrationProtocol

  • AM-RM: ApplicationMasterProtocol

  • AM-NM: ContainerManagementProtocol

  • NM-RM: ResourceTracker

3. YARN工作流程

  • 用户向yarn提交应用程序,包括AM程序、启动AM命令、用户程序

  • RM为应用程序分配第一个container,并与对应的NM通信,要求它在这个container启动应用程序的AM

  • AM首先向RM注册,使用户可以直接通过RM查看应用程序运行状态,然后它为各个任务申请资源,监控运行状态,直到结束

  • AM采用轮询的方式通过RPC协议向RM申请和领取资源

  • 一旦AM申请到资源,与对应NM通信,要求它启动任务

  • NM为任务设置好运行环境(环境变量、jar、二进制程序etc),将任务启动命令写到一个脚本,通过运行脚本启动任务

  • 各个任务通过RPC协议向AM汇报自己状态和进度,用户可随时通过RPC向AM查询应用程序当前运行状态信息

  • 运行完成后,AM向RM注销并关闭自己。

4. YARN分布式缓存

  • Yarn分布式缓存工作流程:

    • client将应用程序需要的文件资源(外部字典、jar、二进制文件)提交到hdfs;

    • client将应用程序提交到resourcemanager

    • RM与某个NM通信, NM收到命令后,从hdfs下载文件缓存,启动AM

    • AM与RM通信,以请求和获取计算资源

    • AM收到新分配的计算资源后,与对应的NM通信,以启动任务

    • 如果该应用程序第一次在该节点上启动任务,则NM首先从hdfs下载文件缓存到本地,然后启动任务

    • NM后续收到启动任务请求后,如果文件已在本地缓存,则直接运行任务,否则等等文件缓存完再启动

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值