YARN简介—目前使用最为广泛的资源管理系统

0. 前言

本文只对YARN进行简要总结,后续会进行详细的阐明,因为YARN内部的实现比较复杂,不是几篇文章可以讲清楚的,涉及到:服务、状态机、远程调用、各种RPC协议、各种异步处理、事件机制等。想详细了解的可以查阅2013年其发表的论文。
通过本文你可以了解YARN出现的背景,基本组成部分,以及一个较为完整的调度过程。

1. 介绍

  • 名称:YARN(Yet Another Resource Negotiator),另一个资源协调器,是一个独立的资源管理系统,是Hadoop2.0的主要组成部分和改变的核心。
  • 背景:Hadoop1.*版本是一个集中式的调度系统,由JobTracker负责所有的资源分配和任务管理,存在诸如:实现复杂、可扩展性差、单点失效等问题,最大支持4000台服务器。为了解决这些问题提出了YARN,将资源管理和任务调度解耦,以提高扩展性。
  • 系统范型:YARN通mesos一样属于两级调度器,RM负责全局的资源管理,AM负责单个任务的资源分配和执行过程管理。此处有人将YARN归为中央式的调度器,出发点不同罢了。
  • 组成部分:主要包含三个关键的模块:
    • RM(ResourceManager)全局资源管理器,负责全局的资源管理和分配工作,包括调度器(提供各种公平或者能力调度策略,可插拔,设计者可以根据需要设计)、AM服务器(负责系统中所有AM的最初启动和状态管理)、Clinet-RM接口(负责按照一定协议管理用户提交作业)和RM-NM接口(各个机器的NM通过心跳的方式与RM进行通信,获取可用资源和故障情况)。每次心跳到来会触发一系列的事件,其中NODE_UPDATE会触发新一轮的资源分配。
    • AM(ApplicationManager)任务管理,一方面负责向RM申请需要的资源,另外一方面与NM进行通信启动相应的任务,同时会维护不同task的执行状态。
    • NM(NodeManager)是一个节点管理器,一方面监控节点的资源和任务执行情况,并定时向RM以心跳的方式进行汇报,另外接受来自AM的命令用于启动或者杀死一个容器。
  • 一个简单的流程:
    • 系统启动,NM会向RM注册,启动AMS;
    • 用户通过客户端向系统提交一个作业;
    • RM通过调度器申请资源用于启动运行作业的AM,如果申请到AMS负责通知节点管理器在相应的容器启动AM;
    • AM将任务划分为若干个任务,并向RM申请资源;
    • RM收到请求后会根据当前集群的资源情况分配资源,并将结果返回给AM,此处不同的调度策略过程可能稍有差别。例如能力调度器中,NM心跳到来时会触发分配过程,此时RM从层级队列中选择一个队列,再从队列中选择一个任务,再从任务中选择一个请求进行分配,分配好之后暂时保存,等下次AM来请求的时候将结果返回给AM。
    • AM收到资源后,根据一定的优化策略,确定任务与节点之间的联系,与NM通信启动任务;
    • AM在任务完成后逐步向RM释放资源
  • 目前YARN支持MR、流式计算Storm、图计算、DAG计算系统Tez等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值