当前位置: 首页 > news >正文

Hadoop学习日记-YARN组件

YARN(Yet Another Resource Negotiator)作为一种新的Hadoop资源管理器,是另一种资源协调者。

YARN是一个通用的资源管理系统调度平台,可为上层应用提供统一的资源管理和调度

YARN架构图
在这里插入图片描述

YARN3大组件:

(物理层面)ResourceManager(RM):

YARN集群中的主角色,决定系统所有应用程序之间资源分配的最终权限,即最终仲裁者。通过NM分配管理各个机器上的计算资源

(物理层面)NodeManager(NM):

YARN集群中的从角色,负责管理本机器上的计算资源,由RM命令启动Container容器、监视容器使用情况、分发回收资源

(App层面)ApplicationMaster(AM):

用户Client提交的每一个应用程序均包含一个AM,负责应用程序内部各阶段的资源申请,监督程序的执行。

程序提交YARN的交互流程:

  1. MR作业提交 Client–RM
  2. 资源的申请 MrAppMaster–RM
  3. MR作业状态汇报 Container(Map|Reduce Task)–Container(MrAppMaster)
  4. 节点的状态汇报 NM–RM

在这里插入图片描述

主要步骤:

1)用户通过客户端向YARN中ResourceManager提交应用程序(比如Hadoop jar提交MR程序)

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

3)ApplicationMaster启动成功之后,首先向ResourceManager注册并保持通信,用户因此可以通过ResourceManager查看应用程序的运行状态

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

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

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

7)各个任务通过RPC协议向ApplicationMaster汇报自己的状态和进度,以获取各个任务的运行状态,在应用程序运行过程中,用户可以随时通过RPC协议向ApplicationMaster查询应用程序的当前运行状态。

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

YARN资源调度器Scheduler

Scheduler负责给应用分配资源,是ResourceManager的核心组件之一。其完全用于调度作业,且无法跟踪应用程序的状态

三种调度器:

FIFO Scheduler(先进先出调度器)、Capacity Scheduler(容量调度器)默认、Fair Scheduler(公平调度器)

FIFO:
在这里插入图片描述

该调度器不考虑优先级和范围,适用于负载较低的小规模集群,当使用大型共享集群时,它的效率较低且会导致一些问题

Capacity:

在这里插入图片描述

该调度器允许多个组织共享整个集群资源,每个组织可以获得集群的一部分计算能力。通过给每个组织分配专门的队列,再为队列分配一定的集群资源,这样的整个集群就可以通过设置多个队列的方式给多个组织提供服务。简单来说每个队列都有独立的资源,队列的结构和资源是可以进行配置的
在这里插入图片描述

Fair:

公平调度:对于调度A和B每个用户都有自己的队列,A启动一个作业,由于B没有需求,A得到了集群所有可用的资源。B在A的作业仍在运行时启动了一个作业,经过一段时间后A、B各自作业都使用了一半的资源。若B用户在其他作业仍在运行时开始第二个作业,它将与B的另一个作业共享其资源。因此B的每个作业将拥有资源的四分之一,而A继续拥有一半的资源。结果是资源在用户之间公平的共享

http://www.lryc.cn/news/104360.html

相关文章:

  • 汽车过户时,怎么选到理想的好车牌?
  • 力扣468 验证IP地址
  • 前端静态登录页面实现
  • 华为数通HCIA-网络参考模型(TCP/IP)
  • java快速生成数据库表文档(HTML、DOC、MD)
  • Dojo学习和常用知识
  • 媒体查询详解
  • 华为数通HCIP-IGMP(网络组管理协议)
  • 价格管控有哪些有效的方法
  • 【Docker】Docker相关基础命令
  • 掌握Python的X篇_16_list的切片、len和in操作
  • 给定长度值length,把列表切分成每段长度为length的N段列表,Kotlin
  • leetcode每日一题Day2——344. 反转字符串
  • ISP记1
  • 无线蓝牙耳机有什么值得耳机买的?几款值得买的口碑品牌盘点
  • 异步检索在 Elasticsearch 中的理论与实践
  • 了解Unity编辑器之组件篇Physics 2D(十二)
  • [Pytorch]手写数字识别——真·手写!
  • android studio 找不到符号类 Canvas 或者 错误: 程序包java.awt不存在
  • AWS——02篇(AWS之服务存储EFS在Amazon EC2上的挂载——针对EC2进行托管文件存储)
  • FFmpeg 打包mediacodec 编码帧 MPEGTS
  • 软件测试如何推进项目进度?
  • 首次尝试鸿蒙开发!
  • 前端面试题-react
  • EIP-2535 Diamond standard 实用工具分享
  • 【LangChain】向量存储(Vector stores)
  • Debian/Ubuntu 安装 Chrome 和 Chrome Driver 并使用 selenium 自动化测试
  • [SQL挖掘机] - 窗口函数 - 合计: with rollup
  • 远程控制平台一之推拉流的实现
  • RTT(RT-Thread)线程管理(1.2W字详细讲解)