Hadoop——Yarn 调度器和调度算法

Yarn 调度器和调度算法

YARN调度器(Scheduler)是负责将集群资源分配给不同应用程序的组件。它根据应用程序的资源需求和优先级,以及集群的资源供给情况,决定如何分配资源。YARN提供了多种调度器实现,每种调度器都有不同的调度算法和特点。

目前,Hadoop作业调度器主要有三种:FIFO、容量(Capacity Scheduler)和公平(Fair Scheduler)。Apache Apache Hadoop3.1.3 默认的资源调度器是Capacity Scheduler。 CDH框架默认调度器是Fair Scheduler。


1. FIFO调度器First-In-First-Out Scheduler):

  • FIFO 调度器(First In First Out):单队列,根据提交作业的先后顺序,先来先服务,按照应用程序提交的顺序分配资源
  • 当一个应用程序提交后,FIFO调度器会尽快为其分配所需资源,并等待该应用程序执行完成后再分配下一个应用程序的资源。
  • 这种调度器适用于简单的任务处理场景,但可能导致长作业等待时间过长,资源利用率较低

2. 容量调度器Capacity Scheduler):

  • Capacity Scheduler 是 Yahoo 开发的多用户调度器
  • 容量调度器是YARN提供的一种多队列调度器,它将集群的资源划分为多个队列,每个队列都有自己的资源配额。
  • 每个队列可以分配的资源由其配置的容量决定,但在集群资源未满时,队列可以使用其他队列的资源。
  • 这种调度器适用于多个应用程序之间的资源共享和隔离场景,可以根据不同应用程序的优先级和需求进行灵活的资源分配。
  • 容量调度器资源分配算法:

3. 公平调度器Fair Scheduler):

  • Fair Schedulere 是 Facebook 开发的多用户调度器。
  • 公平调度器是一种基于公平分享资源的调度器,它将集群资源公平地分配给各个应用程序。公平调度器通过动态调整每个应用程序的资源配额,以确保每个应用程序都能获得公平的资源份额。
  • 它支持多个应用程序同时运行,并可以根据应用程序的需求自动调整资源分配。公平调度器适用于资源共享场景,可以确保各个应用程序都能获得适当的资源,避免了长作业等待时间过长的问题。
    -

Fair策略和DRF(Dominant Resource Fairness)策略都是公平调度器(Fair Scheduler)中常用的调度算法,它们旨在确保资源在集群中被公平地分配给各个应用程序。

Fair策略(Fair Sharing):

Fair策略是最简单的公平调度算法之一,它的核心思想是将集群资源均匀地分配给所有的应用程序。Fair策略主要包括以下几个步骤:

  1. 资源分配 :Fair策略根据当前集群中的资源情况,将资源均匀地分配给所有的应用程序 。每个应用程序都会被分配到一定比例的资源,以确保每个应用程序都能获得公平的资源份额。

  2. 动态调整 :Fair策略会动态地调整资源分配,以适应集群资源的变化和应用程序的需求变化 。当集群资源有剩余时,Fair策略会将剩余资源分配给需要资源的应用程序,以提高资源的利用率

  3. 优先级支持 :Fair策略可以支持为不同的应用程序设置优先级 ,以确保高优先级的应用程序可以优先获得资源。

  • Fair策略的优点是简单直观,能够实现资源的公平分配。
  • 但是,它可能无法满足一些特定应用程序的需求,如长时间运行的作业可能会等待时间过长。

DRF策略(Dominant Resource Fairness):

DRF策略是一种更为复杂和高效的公平调度算法,它考虑了各个应用程序对集群中不同资源的需求,并尽量满足每个应用程序对其"主导资源"的需求 。DRF策略的核心思想是确保每个应用程序在其主导资源上获得公平的份额。

DRF策略主要包括以下几个步骤:

  1. 主导资源计算 :DRF策略会根据每个应用程序的资源需求,计算出其在集群中的主导资源。主导资源通常是应用程序在资源利用上占比最大的资源,如内存、CPU等。

  2. 资源分配 :DRF策略会优先满足每个应用程序对其主导资源的需求,确保每个应用程序都能获得公平的主导资源份额。如果集群资源有剩余,则会根据次要资源(非主导资源)的需求来分配剩余资源。

  3. 资源调整DRF策略会动态调整资源分配,以适应集群资源的变化和应用程序的需求变化。它会根据每个应用程序的主导资源和次要资源的需求,优先满足主导资源的需求,然后再分配剩余资源。

  • DRF策略的优点是能够更加精确地满足每个应用程序对资源的需求,提高了资源的利用率和集群的性能。
  • 但是,DRF策略的实现比较复杂,计算成本较高。
相关推荐
python算法(魔法师版)21 分钟前
.NET NativeAOT 指南
java·大数据·linux·jvm·.net
星川皆无恙35 分钟前
大模型学习:Deepseek+dify零成本部署本地运行实用教程(超级详细!建议收藏)
大数据·人工智能·学习·语言模型·架构
L耀早睡1 小时前
mapreduce打包运行
大数据·前端·spark·mapreduce
姬激薄1 小时前
MapReduce打包运行
大数据·mapreduce
计算机人哪有不疯的1 小时前
Mapreduce初使用
大数据·mapreduce
菜鸟冲锋号2 小时前
Flink SQL、Hudi 、Doris在数据上的组合应用
大数据·flink
尘世壹俗人2 小时前
hadoop.proxyuser.代理用户.授信域 用来干什么的
大数据·hadoop·分布式
白露与泡影3 小时前
基于Mongodb的分布式文件存储实现
分布式·mongodb·wpf
鸿乃江边鸟4 小时前
Starrocks的主键表涉及到的MOR Delete+Insert更新策略
大数据·starrocks·sql
追风赶月、4 小时前
【Redis】redis用作缓存和分布式锁
redis·分布式·缓存