【Hadoop】YARN容量调度器详解

这篇具有很好参考价值的文章主要介绍了【Hadoop】YARN容量调度器详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

hadoop调度器详解,# 【==== HDFS&YARN ====】,hadoop,YARN,Capacity,Scheduler,容量调度,YARN WEB UI,YARN 调度配置

🦄 个人主页—🎐开着拖拉机回家_Linux,Java基础学习,大数据运维-CSDN博客 🎐✨🍁

🪁🍁🪁🍁🪁🍁🪁🍁 🪁🍁🪁🍁🪁🍁🪁 🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁

目录

一、CapacityScheduler简介

二、CapacityScheduler特性

三、CapacityScheduler配置

四、YARN WEB UI 参数详解


一、CapacityScheduler简介


Hadoop YARN的核心组件是ResourceManager,负责集群资源管理与调度,而ResourceManager组件的核心是调度器,负责统筹集群资源,满足应用的资源需求。调度器不仅需要优化整个集群的资源布局,避免热点等问题对应用的影响,最大程度利用集群资源;还要能协调好大量应用在集群的运行,基于多租户(队列)公平性、应用优先级等策略解决好资源竞争等问题;也要能满足个别应用在节点依赖、放置策略等方面的特殊需求。

YARN调度器是可拔插的插件,主要有FIFOScheduler、FairScheduler和CapacityScheduler三类。

  • FIFOScheduler:是最简单的调度器,不支持多租户(所有应用都提交到Default队列),不考虑集群的资源分布(节点上堆叠调度),只支持以FIFO(First In,First Out)策略依次调度应用,无其他控制与调度特性。只适用于及其简单的场景,因此很少应用于正式生产。
  • FairScheduler:是CDH(Cloudera Distributed Hadoop)的默认调度器,与HDP(Hortonworks Data Platform)合并后的CDP(Cloudera Data Platform)不再使用(迁移到CapacityScheduler),Apache Hadoop社区也建议迁移到CapacityScheduler。FairScheduler支持较为完善的多租户管理与资源调度能力,包括多级队列、配额管理、ACL控制、弹性资源共享、租户间公平性调度策略、租户内应用调度策略、资源预留、抢占、异步调度等,然而在Apache Hadoop社区的发展相比CapacityScheduler仍稍显落后,核心调度未考虑整个集群的资源布局,也不支持Node Labels(分区调度)、Node Attributes(节点打标调度)、Placement Constraints(放置约束)等调度特性。
  • CapacityScheduler:是Apache Hadoop社区、HDP(Hortonworks Data Platform)及合并后CDP(Cloudera Data Platform)的默认调度器,具有最完善的多租户管理与资源调度能力,不仅包含了FairScheduler的全部能力,还能协调好整个集群的资源布局(基于Global Scheduling),减少热点概率,最大程度利用集群资源,还支持Node Labels(分区调度)Node Attributes(节点打标调度)、Placement Constraints(放置约束)等调度特性。

下面重点对CapacityScheduler进行介绍,其他调度器的使用说明请参考社区文档。


二、CapacityScheduler特性


  • 分层队列——支持分层队列,以确保在允许其他队列使用空闲资源之前,在组织的子队列之间共享资源,从而提供更多的控制和可预测性。
  • 容量保证——队列被分配了网格容量的一小部分,在某种意义上,一定容量的资源将供它们使用。提交到队列的所有应用程序都可以访问分配给队列的容量。管理员可以对分配给每个队列的容量配置软限制和可选的硬限制,就是可以使用其他队列的剩余资源,也可以严格限制不能超出限制。
  • 安全性——每个队列都有严格的acl,它控制哪些用户可以向各个队列提交应用程序。此外,还有安全防护措施,以确保用户不能查看和/或修改来自其他用户的应用程序。此外,还支持每个队列和系统管理员角色。
  • 弹性资源共享——可以将空闲资源分配给超出其容量的任何队列。当队列配置资源有空闲时,可以分配给其他有资源需求的队列。当再次需要这些资源时可以抢夺回这些资源。这确保了资源以可预测和弹性的方式对队列可用,从而防止集群中人为的资源孤岛,从而有助于利用率。
  • 多租户——提供了一组全面的限制,以防止单个应用程序、用户和队列独占队列或整个集群的资源,以确保集群不会不堪重负。
  • 可操作性
    • 运行时配置——管理员可以在运行时以安全的方式更改队列定义和属性(如容量、acl),以尽量减少对用户的干扰。此外,还为用户和管理员提供了一个控制台,以查看系统中各种队列的当前资源分配情况。管理员可以在运行时添加额外的队列,但不能在运行时删除队列,除非队列已停止并且没有挂起/正在运行的应用程序。
    • 取消应用程序——管理员可以在运行时停止队列,以确保在现有应用程序运行到完成时,没有新的应用程序可以提交。如果队列处于STOPPED状态,则不能将新的应用程序提交给它自己或它的任何子队列。现有的应用程序将继续完成,因此可以正常地耗尽队列。管理员还可以启动已停止的队列。
  • 基于资源的调度——支持资源密集型应用程序,其中应用程序可以选择指定比默认值更高的资源需求,从而容纳具有不同资源需求的应用程序。目前,内存是支持的资源需求。
  • 优先级调度——该功能允许应用程序以不同的优先级提交和调度。整数值越大,优先级越高。目前,应用程序优先级仅支持FIFO排序策略。
  • 绝对资源配置——管理员可以为队列指定绝对资源,而不是提供基于百分比的值。这为管理员提供了更好的控制,以便为给定队列配置所需的资源量。

三、CapacityScheduler配置


Ambari 2.7.4配置页面

hadoop调度器详解,# 【==== HDFS&YARN ====】,hadoop,YARN,Capacity,Scheduler,容量调度,YARN WEB UI,YARN 调度配置

配置队列层级如下:

root
├── acc
└── ipva
├── bzv2
└── default

Ambari-queue-manager配置如下:

hadoop调度器详解,# 【==== HDFS&YARN ====】,hadoop,YARN,Capacity,Scheduler,容量调度,YARN WEB UI,YARN 调度配置

capacity-scheduler.xml 配置文件

 
  <configuration  xmlns:xi="http://www.w3.org/2001/XInclude">
    <!-- 设置所有提交的job中ApplicationMaster的资源比例上限,该参数通常用于限制处于活动状态的job数量。-->
    <property>
      <name>yarn.scheduler.capacity.maximum-am-resource-percent</name>
      <value>0.2</value>
    </property>
    
    <!-- 最多可运行的应用数,默认10000 -->
    <property>
      <name>yarn.scheduler.capacity.maximum-applications</name>
      <value>10000</value>
    </property>
    
    <!--  队列本地延迟设置,根据机架感知,对于有nodemanager的客户端,会优先考虑向本地的nodemanager派发task,该值用于配置,默认尝试次数为40次 -->
    <property>
      <name>yarn.scheduler.capacity.node-locality-delay</name>
      <value>40</value>
    </property>
    
    <!-- 该配置指定调度器使用的资源计算器,资源计算器用于在调度器中比较资源。默认值是 org.apache.hadoop.yarn.util.resource.DefaultResourseCalculator,只使用内存进行比较
    DominantResourceCalculator 用 Dominant-resource比较多维度资源,如内存,CPU等-->
    <property>
      <name>yarn.scheduler.capacity.resource-calculator</name>
      <value>org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator</value>
    </property>
    
    <!--  访问控制,控制谁可以管理(包括提交和取消)该队列的任务,表示任何人  -->
    <property>
      <name>yarn.scheduler.capacity.root.acc.acl_administer_queue</name>
      <value>*</value>
    </property>
	
    <!-- 限定哪些用户/用户组可向给定队列中提交应用程序  -->
    <property>
      <name>yarn.scheduler.capacity.root.acc.acl_submit_applications</name>
      <value>*</value>
    </property>
	
    <!-- acc 队列资源比例 -->
    <property>
      <name>yarn.scheduler.capacity.root.acc.capacity</name>
      <value>60</value>
    </property>
	
    <!--  acc 队列最大资源比例 -->
    <property>
      <name>yarn.scheduler.capacity.root.acc.maximum-capacity</name>
      <value>70</value>
    </property>
	
    <!-- 指定队列内单个用户的最小资源比例(相对于队列保障资源),队列内单个用户的资源限制=max(队列保障资源/用户数, 队列保障资源 * minimumUserLimitPercent / 100), 默认值:100。 -->
    <property>
      <name>yarn.scheduler.capacity.root.acc.minimum-user-limit-percent</name>
      <value>100</value>
    </property>
    
    <!-- 指定队列内应用调度策略,包括Fifo与Fair两种,Fifo即先入先出调度,对所有应用按优先级从高到低、提交时间从前往后的顺序排序,
	   Fair是公平调度,对所有应用按资源使用比例从小到大、提交时间从前往后的顺序排序。默认值:Fifo, 一般应用场景配置成Fair更合适。 -->
    <property>
      <name>yarn.scheduler.capacity.root.acc.ordering-policy</name>
      <value>fifo</value>
    </property>
    
    <!-- acc 队列优先级 ,默认值0 -->
    <property>
      <name>yarn.scheduler.capacity.root.acc.priority</name>
      <value>0</value>
    </property>
	
    <!-- 指定队列状态,默认值:RUNNING。通常不需要配置,只有在需要删除队列的时候,修改指定队列的状态为STOPPED,待队列下应用全部结束后队列将会被自动删除。 -->
    <property>
      <name>yarn.scheduler.capacity.root.acc.state</name>
      <value>RUNNING</value>
    </property>
	
    <!-- acc 队列内单个用户的资源上限因子,队列内单个用户最大可用资源=min(队列最大资源, yarn.scheduler.capacity.xx.capacity * userLimitFactor),默认值:1.0。  -->
    <property>
      <name>yarn.scheduler.capacity.root.acc.user-limit-factor</name>
      <value>1.5</value>
    </property>
	
    <!-- root 队列可以访问的label列表,默认不配置,访问所有无标签的  -->
    <property>
      <name>yarn.scheduler.capacity.root.accessible-node-labels</name>
      <value>*</value>
    </property>
	
    <!-- 为队列指定一个管理员,该管理员可控制该队列的所有应用程序,比如杀死任意一个应用程序等。 -->
    <property>
      <name>yarn.scheduler.capacity.root.acl_administer_queue</name>
      <value>yarn,spark,hive</value>
    </property>
	
    <!-- 限定用户/用户组可向给定队列中提交应用程序。需要注意的是,该属性具有继承性,即如果一个用户可以向某个队列中提交应用程序,则它可以向它的所有子队列中提交应用程序 -->
    <property>
      <name>yarn.scheduler.capacity.root.acl_submit_applications</name>
      <value>yarn,ambari-qa</value>
    </property>
	
    <!-- bz2 队列 与acc 类似  -->
	  <!-- ipva 队列 与acc 类似  -->
	  <!-- 省略部分  -->
   
    <!-- root根下的 子队列 -->
    <property>
      <name>yarn.scheduler.capacity.root.queues</name>
      <value>acc,bz2,default,ipva</value>
    </property>
    
  </configuration>

关键参数说明:

yarn.scheduler.capacity.root.acc.capacity队列资源容量的百分比,用浮点数表示(如12.5)或者是作为绝对资源队列的最小容量。在各层级上所有队列的百分比之和必须等于100。

yarn.scheduler.capacity.root.acc.maximum-capacity最大队列容量,以百分比(%)表示为浮点数,或以绝对资源队列最大容量表示。这限制了队列中应用程序的弹性。1)取值范围为0 ~ 100。2)管理员需要确保绝对最大容量>=每个队列的绝对容量。此外,将此值设置为-1将最大容量设置为100%。

yarn.scheduler.capacity.root.acc.user-limit-factor: 这个参数配置为允许单个用户最多能获取的队列资源(即yarn.scheduler.capacity..capacity的值)的倍数,值是一个浮点值。也就是说如果把这个参数设置为大于1时,用户使用的资源可以超过队列资源。如果该值为2.0,则单个用户使用的最多资源量可以是该队列容量的2倍,但无论配置为多大都不能超过队列的最大资源(即yarn.scheduler.capacity..maximum-capacity的值)。默认值为1,确保单个用户无论集群有多空闲,永远不会占用超过队列配置的资源量。


四、YARN WEB UI 参数详解


如下图 点击 Scheduler可以看到在 Ambari 页面上配置的层级队列

hadoop调度器详解,# 【==== HDFS&amp;YARN ====】,hadoop,YARN,Capacity,Scheduler,容量调度,YARN WEB UI,YARN 调度配置

如下是acc 队列的使用情况,不用 队列使用不用的颜色显示

hadoop调度器详解,# 【==== HDFS&amp;YARN ====】,hadoop,YARN,Capacity,Scheduler,容量调度,YARN WEB UI,YARN 调度配置

hadoop调度器详解,# 【==== HDFS&amp;YARN ====】,hadoop,YARN,Capacity,Scheduler,容量调度,YARN WEB UI,YARN 调度配置

资源说明

  • 总内存资源: 101.25*1024 = 103680M
  • acc队列容量:103680*60% = 62208M
  • acc队列容量最大:103680*70% = 72575M

显示

解释

Queue State: RUNNING

队列状态 RUNNING

Used Capacity : 78.2%

已使用资源占队列配置值的百分比48640/62208=78.2%

Effective Capacity: memory:62208, vCores:36> (60.0%)

有效容量,表示队列实际可用的内存和虚拟核心资源

分别为 62208 MB 和 36 个。

Effective Max Capacity: 72575, vCores:41> (70.0%)

有效最大容量,表示队列实际可用的内存和虚拟核心资源分别为 72575 MB 和 41 个。

Absolute Used Capacity: 46.9%

已使用绝对容量 48640/103680=46.9%

Absolute Configured Capacity: 60.0%

表示队列在整个集群中占据配置容量60%。

Absolute Configured Max Capacity: 70.0%

表示队列在整个集群中占据最大配置容量70%。

Used Resources: <48640, vCores:15>

acc 队列使用 资源

Configured Max Application Master Limit: 20.0

AppMaster 限制使用资源 20%

Max Application Master Resources: <memory:14848, vCores:1>

表示每个 Application Master 最多可以使用 2560 MB 内存和 1 个虚拟核心资源

Used Application Master Resources: <memory:1024, vCores:1>

AppMaster 资源使用 1核1G

Max Application Master Resources Per User: <memory:14848, vCores:1>

表示每个用户的 Application Master 最多可以使用 14848MB 内存和 1 个虚拟核心资源。

Num Schedulable Applications: 1

调度的App调用个数为 1

Num Non-Schedulable Applications: 0

没有被调度的app应用个数

Num Containers: 3

容器运行 个数3

Max Applications: 6000

最大应用数量 6000

Max Applications Per User: 6000

每个user最多可以运行的应用数量 6000

Configured Minimum User Limit Percent: 100%

每个user最多可以使用队列资源的百分比

Configured User Limit Factor: 1.5

最多能获取的队列资源的1.5倍

Accessible Node Labels: *

标签策略 为匹配所有

Ordering Policy: FifoOrderingPolicy

队列内部任务采用策略Fifo

参考文章:


什么是YARN调度器_开源大数据平台E-MapReduce-阿里云帮助中心

【深入浅出 Yarn 架构与实现】 Yarn 三种调度器_yarn调度器-CSDN博客

yarn web ui 参数详解 - gentleman_hai - 博客园文章来源地址https://www.toymoban.com/news/detail-753886.html

到了这里,关于【Hadoop】YARN容量调度器详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • hadoop命令行查看hdfs容量剩余

    #需要有superuser权限才能执行 hadoop dfsadmin -report #Remaining是剩余的容量 也可以通过浏览器访问50070端口查看

    2024年02月15日
    浏览(68)
  • Hadoop YARN的调度器

    YARN(Yet Another Resource Negotiator)是Hadoop生态系统中的资源管理和作业调度框架,负责集群资源的分配、作业的调度和任务的执行,使得在大规模集群上可以高效地运行各种计算框架,如MapReduce、Apache Spark等。YARN的调度器负责将集群资源分配给不同的应用程序,以确保资源的高

    2024年02月12日
    浏览(37)
  • Hadoop生态 | HDFS | Yarn | Hive | Hbase

    ⭐ 简单说两句 ⭐ 作者: 后端小知识 , CSDN后端领域新星创作者|阿里云专家博主 CSDN 个人主页 :后端小知识 🔎 GZH : 后端小知识 🎉 欢迎关注 🔎 点赞 👍 收藏 ⭐️ 留言 📝 进入大数据阶段就意味着进入NoSQL阶段,更多的是面向OLAP场景,即数据仓库、BI应用等。 大数据技

    2024年04月08日
    浏览(53)
  • Hadoop YARN功能介绍--资源管理、调度任务

    YARN是一个通用 资源管理系统平台和调度平台 ,可为上层应用提供统一的资源管理和 调度。 他的引入为集群在利用率、资源统一管理和数据共享等方面带来了好处。 集群的硬件资源,和程序运行无关,比如内存、cup 资源如何分配 支持各种计算程序 ResourceManager(物理层面集群

    2024年02月07日
    浏览(40)
  • 单机搭建hadoop环境(包括hdfs、yarn、hive)

    单机可以搭建伪分布式hadoop环境,用来测试和开发使用,hadoop包括: hdfs服务器, yarn服务器,yarn的前提是hdfs服务器, 在前面两个的基础上,课可以搭建hive服务器,不过hive不属于hadoop的必须部分。 过程不要想的太复杂,其实挺简单,这里用最糙最快最直接的方法,在我的单

    2024年02月20日
    浏览(51)
  • Hadoop三大“金刚”完美剖析 ─────── HDFS、MapReduce、YARN

    因为HDFS是分布式储存文件的模式,所以在储存文件的数据时,会将文件切分为大小一致的数据块, 如果出现文件大小不是128M的倍数时,那么最后一个文件会与之前切分文件大小不一致。 被切分成的数据块就是Block块,NameNode将Block块进行分布式储存到DataNode中。    (Block块

    2024年04月10日
    浏览(41)
  • Hadoop3教程(二十五):Yarn的多队列调度器使用案例

    生产环境下怎么创建队列? 调度器默认只会开一个default队列,这个肯定是不满足生产要求的; 可以按照框架来划分队列。比如说hive/spark/flink的任务分别放在不同的队列里,不过这么做的效率不高,企业用的不是很多。 按照业务模块来划分队列。比如说登录注册的业务,单

    2024年02月02日
    浏览(44)
  • Hadoop——HDFS、MapReduce、Yarn期末复习版(搭配尚硅谷视频速通)

    1.1 HDFS定义 HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次, 它是分布式的 ,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。 HDFS的使用场景 :适合一次写入,多次读出的场景。一个文件经过创建、写入和关

    2024年01月17日
    浏览(41)
  • 【运维】hadoop 集群安装(三)hdfs、yarn集群配置、nodemanager健康管理讲解

    上篇简单说明了多节点的hadoop节点怎么安装,但是没有细致的分析hadoop相关配置,具体怎么根据环境进行配置,接下来我们对这些配置进行讲解 Daemon Environment Variable NameNode HDFS_NAMENODE_OPTS DataNode HDFS_DATANODE_OPTS Secondary NameNode HDFS_SECONDARYNAMENODE_OPTS ResourceManager YARN_RESOURCEMANAGER_OP

    2024年02月10日
    浏览(42)
  • 23、hadoop集群中yarn运行mapreduce的内存、CPU分配调度计算与优化

    1、hadoop3.1.4简单介绍及部署、简单验证 2、HDFS操作 - shell客户端 3、HDFS的使用(读写、上传、下载、遍历、查找文件、整个目录拷贝、只拷贝文件、列出文件夹下文件、删除文件及目录、获取文件及文件夹属性等)-java 4、HDFS-java操作类HDFSUtil及junit测试(HDFS的常见操作以及H

    2024年02月07日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包