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调度器:简单,适合单租户。

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值