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

yarn的概述

1.Yarn的定义 2.Yarn的三大组件 3.Yarn的调度策略

1. YARN的定义

YARN(Yet Another Resource Negotiator) 是Hadoop生态系统中的一个资源管理框架,用于管理和调度集群中的计算资源。它允许多个应用程序在同一个集群上高效地运行,同时确保资源的隔离和共享。

  • 核心目标

    • 提高集群资源的利用率。

    • 支持多种计算框架(如MapReduce、Spark、Flink等)。

    • 提供资源隔离和调度机制。

2. YARN的三大组件

YARN主要由以下三大组件构成:

2.1 ResourceManager(RM)
  • 功能

    • 负责全局资源的管理和分配。

    • 接收应用程序的资源请求,并分配资源。

    • 监控NodeManager的状态和资源使用情况。

  • 位置

    • 通常运行在一个独立的节点上,作为集群的主节点。

2.2 NodeManager(NM)
  • 功能

    • 管理单个节点上的资源(如CPU、内存)。

    • 启动和管理容器(Container),容器是资源分配的最小单位。

    • 监控容器的资源使用情况,并向ResourceManager汇报。

  • 位置

    • 每个计算节点上运行一个NodeManager。

2.3 ApplicationMaster(AM)
  • 功能

    • 每个应用程序运行时都会启动一个ApplicationMaster。

    • 负责与ResourceManager协商资源,并请求NodeManager启动容器。

    • 管理应用程序的生命周期,包括任务的启动、监控和失败处理。

  • 位置

    • ApplicationMaster运行在某个NodeManager节点上,由ResourceManager分配。

3. YARN的调度策略

YARN提供了多种调度策略,用于管理资源分配和任务调度。以下是常见的调度器:

3.1 FIFO调度器(First-In-First-Out Scheduler)
  • 特点

    • 最简单的调度策略。

    • 按照应用程序提交的顺序依次分配资源。

    • 适用于单租户环境,但在多租户环境中可能导致资源饥饿问题。

3.2 容量调度器(Capacity Scheduler)
  • 特点

    • 支持多租户环境。

    • 将集群资源划分为多个队列(Queue),每个队列可以分配一定比例的资源。

    • 支持队列之间的资源共享和弹性扩展。

    • 适用于生产环境,能够保证不同用户或应用程序的资源需求。

  • 配置示例

    xml

    复制

    <property><name>yarn.scheduler.capacity.root.queues</name><value>default,queue1,queue2</value>
    </property>
    <property><name>yarn.scheduler.capacity.root.default.capacity</name><value>50</value>
    </property>
    <property><name>yarn.scheduler.capacity.root.queue1.capacity</name><value>30</value>
    </property>
    <property><name>yarn.scheduler.capacity.root.queue2.capacity</name><value>20</value>
    </property>
3.3 公平调度器(Fair Scheduler)
  • 特点

    • 动态分配资源,确保所有运行的应用程序都能获得公平的资源份额。

    • 支持资源池(Pool)的概念,可以为不同用户或应用程序分配资源池。

    • 适用于多租户环境,能够避免资源饥饿问题。

  • 配置示例

    xml

    复制

    <property><name>yarn.scheduler.fair.allocation.file</name><value>/path/to/fair-scheduler.xml</value>
    </property>

    fair-scheduler.xml中配置资源池:

    xml

    复制

    <allocations><pool name="default"><minResources>1024 mb, 1 vcores</minResources><maxResources>4096 mb, 4 vcores</maxResources></pool><pool name="pool1"><minResources>2048 mb, 2 vcores</minResources><maxResources>8192 mb, 8 vcores</maxResources></pool>
    </allocations>

总结

  • YARN 是一个资源管理框架,用于管理和调度集群中的计算资源。

  • 三大组件

    • ResourceManager:全局资源管理。

    • NodeManager:节点资源管理。

    • ApplicationMaster:应用程序管理。

  • 调度策略

    • FIFO调度器:简单,适合单租户。

    • 容量调度器:支持多租户,资源划分。

    • 公平调度器:动态分配资源,适合多租户。

http://www.xdnf.cn/news/4449.html

相关文章:

  • 【MATLAB源码-第277期】基于matlab的AF中继系统仿真,AF和直传误码率对比、不同中继位置误码率对比、信道容量、中继功率分配以及终端概率。
  • SAP BC 私有云用户安全策略的问题
  • ACE-Step:扩散自编码文生音乐基座模型快速了解
  • 从彼得·蒂尔四象限看 Crypto「情绪变迁」:从密码朋克转向「标准化追求者」
  • 5.0.4 VisualStateManager(视觉状态管理器)使用说明
  • 2025 Mac常用软件安装配置
  • UE5.3 C++ 如何在c++ 中拿到UI元素,并绑定不同事件响应功能
  • WPF MVVM进阶系列教程(一、对话框)
  • 广告屏蔽插件的内部细节EasyList 规则详解:为什么广告屏蔽不直接用 CSS/JS?​(彩蛋)
  • MATLAB在数学问题求解中的多元应用探究
  • BeanFactoryPostProcessor 与 BeanPostProcessor 的区别
  • 【Qt】Qt 构建系统详解:qmake 入门到项目实战
  • 鸿蒙开发——2.ArkTS声明式开发(页面和自定义组件)
  • HTTP请求与缓存、页面渲染全流程
  • 【Java ee 初阶】多线程(8)
  • Redis再次开源!reids8.0.0一键安装脚本分享
  • CentOS算法部署
  • ROS2: 服务通信
  • 机器学习实操 第二部分 神经网路和深度学习 第14章 使用卷积神经网络进行深度计算机视觉
  • 精益数据分析(48/126):UGC商业模式的指标剖析与运营策略
  • 8. HTML 表单基础
  • PostgreSQL给新用户授权select角色
  • 【C++】类和对象(下)
  • day009-用户管理专题
  • 304.不同的二叉搜索树
  • mysql:什么是一致性视图(Read View)
  • AI应用开发实战分享
  • C++模板
  • Python引领前后端创新变革,重塑数字世界架构
  • ✍️【TS类型体操进阶】挑战类型极限,成为类型魔法师![特殊字符]♂️✨