Hadoop YARN


请添加图片描述

Hadoop YARN是一个是一个通用资源管理系统和调度平台,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处

我们如何理解通用资源管理系统和调度平台?

资源管理系统:集群的硬件资源,和程序运行相关

调度平台:多个程序同时申请计算资源如何分配,调度的规则(算法)

通用:虽然yarn是在Hadoop中但是理论上它可以支持各种计算程序

YARN的组成

YARN3大件:

(ResourceManager NodeManager )集群物理层面

ApplicationMaster(App Mst)app层面

Client (客户端)

Container容器(资源的抽象)

YARN3大件的作用

ResourceManager(RM)

YARN集群中的主角色,决定系统中所有应用程序之间资源分配的最终权限,即最终仲裁者。

NodeManager(NM)

YARN中的从角色,一台机器上一个,负责管理本机器上的计算资源

ApplicationMaster(AM)

用户提交的每个应用程序均包含一个AM,在程序启动时负责程序内部各阶段的资源申请,并且监督程序阶段的执行情况

MR提交计算程序的过程

1、用户通过客户端向YARN中ResourceManager提交应用程序

2、ResourceManager为该应用程序分配第一个Container(容器),并与对应的NodeManager通信,要求 它在这个Container中启动这个应用程序的ApplicationMaster

3、ApplicationMaster启动成功之后,首先向ResourceManager注册并保持通信,这样用户可以直接通过 ResourceManage查看应用程序的运行状态

4、AM为本次程序内部的各个Task任务向RM申请资源,并监控它的运行状态;

5、ApplicationMaster 申请到资源后,便与对应的 NodeManager 通信,要求它启动任务

6、NodeManager 为任务设置好运行环境后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务

7、各个任务通过某个 RPC 协议向 ApplicationMaster 汇报自己的状态和进度,以让 ApplicationMaster 随 时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可随时通过 RPC 向 ApplicationMaster 查询应用程序的当前运行状态。

8、应用程序运行完成后,ApplicationMaster 向 ResourceManager 注销并关闭自己

Scheduler

在YARN中Scheduler输入核心组件之一,属于YARN中调度器

调度策略

FIFO Scheduler(先进先出调度器)、Capacity Scheduler(容量调度器)、Fair Scheduler(公平调度器)在 Apache版本YARN默认使用Capacity Scheduler
三个调度方式示意图如下:
请添加图片描述

FIFO Scheduler(先进先出调度)

先提交的应用先运行,这个很容易理解,就是先到先得

优势:配置简单,无需配置易于执行

缺点:没有优先级高优先级的作业需要等待

Capacity Scheduler(容量调度)

为每个组织分配专门的队列,然后再为每个队列分配一定的集群资源,在一个队列内部,资源的调度是采用的是先进先出(FIFO)策略

优点:

层次化队列设计

1、层次化的管理,可以更容易、更合理分配和限制资源的使用。

容量保证

2、每个队列上都可以设置一个资源的占比,保证每个队列都不会占用整个集群的资源

安全

3、每个队列有严格的访问控制。用户只能向自己的队列里面提交任务,而且不能修改或者访问其他队列的任务

弹性分配

4、空闲的资源可以被分配给任何队列

Fair Scheduler(公平调度)

公平调度可以在多个队列间工作,允许资源共享和抢占,也就是说当你的资源没有完全使用的时候,别人可以使用你没有使用的资源,如果两个任务来自一个用户并且另一个用户也有作业任务时,这个两个任务只能共享本用户的资源

优点:1、保证最小配额:可以设置队列最小资源,允许将保证的最小份额分配给队列,保证用户可以启动任务。当队列不能 满足最小资源时,可以从其它队列抢占。当队列资源使用不完时,可以给其它队列使用。这对于确保某些用户、组或 生产应用始终获得足够的资源。

2、 允许资源共享:即当一个应用运行时,如果其它队列没有任务执行,则可以使用其它队列,当其它队列有应用需要资源 时再将占用的队列释放出来。所有的应用都从资源队列中分配资源。

3、默认不限制每个队列和用户可以同时运行应用的数量。可以配置来限制队列和用户并行执行的应用数量。限制并行 执行应用数量不会导致任务提交失败,超出的应用会在队列中等待

4、分层队列:队列可以按层次结构排列以划分资源,并可以配置权重以按特定比例共享集群。

5、基于用户或组的队列映射:可以根据提交任务的用户名或组来分配队列。如果任务指定了一个队列,则在该队列中 提交任务。

资源抢占:根据应用的配置,抢占和分配资源可以是友好的或是强制的。(默认不启用资源抢占)

愿君前程似锦,未来可期去💯,感谢您的阅读,如果对您有用希望您留下宝贵的点赞和收藏
本文章为本人学习笔记,学习网站为黑马程序员的Hadoop可以一起学习共同进步谢谢,如有请侵权联系,本人会立即删除侵权文章。可以一起学习共同进步谢谢,如有请侵权联系,本人会立即删除侵权文章。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿龙的代码在报错

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值