search
HomeDatabaseMysql TutorialYARN Capacity Scheduler 简介

1. 简介 YARN中基础调度单元是队列(queue),每一个在 容量调度器(Capacity Scheduler)中的队列都有下面属性: · 短队列名 · 队列路径全名 · 相关子队列和应用的列表 · 队列的保证容量(guaranteed capacity) · 队列的最大容量(maximum capacity)

1. 简介

YARN中基础调度单元是队列(queue),每一个在 容量调度器(Capacity Scheduler)中的队列都有下面属性:
· 短队列名
· 队列路径全名
· 相关子队列和应用的列表
· 队列的保证容量(guaranteed capacity)
· 队列的最大容量(maximum capacity)
· 有效用户和他们相关的资源分配限制的列表
· 队列的状态
· 访问控制列表(ACLs)控制队列的访问

2. 启用容量调度器

通过设置ResourceManager平台中的/etc/hadoop/conf/yarn-site.xml(HDP或CDH平台)文件属性来启用容量调度器。
yarn.resourcemanager.scheduler.class --- org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
容量调度器的设置包含在YARN RM主机的/etc/hadoop/conf/capacity-scheduler.xml中,容量调度器在启动时读取这个文件,或者在管理员修改这个文件后通过下面命令重新载入配置,管理员的权限配置由RM的yarn.admin.acl属性配置。
yarn rmadmin -refreshQueues

3. 设定队列

YARN中基础调度单元是队列,每一个队列的容量指定了提交到该队列的应用的可用集群资源百分比。队列可以以反映使用资源资源的不同组织、组和用户的数据库结构、资源需求和访问限制的层级来表示。例如,假定公司有三个部门:Engineering, Support, and Marketing。Engineering部有两个子组:Development和QA。Support部有两个子组:training和Service,Marketing部被分割成了Sales和Advertising,下图显示了队列层级结构:
capacity_scheduler_queues
每一个子队列通过capacity-scheduler.xml的yarn.scheduler.capacity..queues配置属性依附到父队列之上。顶层队列”support”, “engineering”,和”marketing”队列会以下面的方式依附到root队列上。
Property: yarn.scheduler.capacity.root.queues
Value: support,engineering,marketing
Example:

<property>
  <name>yarn.scheduler.capacity.root.queues</name>
  <value>support,engineering,marketing</value>
  <description>The top-level queues below root.</description>
</property>

那么 “Support”子队列可以定义如下:

<property>
  <name>yarn.scheduler.capacity.support.queues</name>
  <value>training,services</value>
  <description>child queues under support</description>
</property>

“Engineering”子队列定义如下:

<property>
  <name>yarn.scheduler.capacity.engineering.queues</name>
  <value>development,qa</value>
  <description>child queues under engineering</description>
</property>

marketing子队列的定义如下:

<property>
  <name>yarn.scheduler.capacity.marketing.queues</name>
  <value>sales,advertising</value>
  <description>child queues under marketing</description>
</property>

层级别列特征
· 队列分两种:叶子(leaf)队列和父(parent)队列
· 父队列用于组织层级之间的管理. 他们可以包含更多的父队列和叶子队列,他们自己不会直接接受应用的提交。
· 叶子队是居于父队列之下并接受应用。叶子队列不会包含其他子队列,因此不会有任务配置属性以.queues结尾。
· 顶层的父队列root不属于任何组织,它代表了集群自身。
· 通过父队列和叶子队列,管理员可以为不同的组织层级指定容量分配
队列调度
· 层级队列确保了资源会首先在组织子队列之间分享,然后才会将剩余的资源其他组织分配之前分享。这会确保每一个组织可以控制控制资源的使用。
· 每一个层级、每一个父队列保证了它的子队列以一个按需的方式排序。队列的排序由每一个当前使用的队列容量决定(或者当两个队列的预留容量相同时由队列路径全名决定)
· root队列会知道集群容量如何在一级父队列之间分布式共享,并在它们的子队列中启用调度。
· 每一个父队列会将容量的限制应用到子队列之中。
· 叶子·队列维持一个活跃应用的列表(可能来自多个用户)并以FIFO的方式调度资源,并受制于分配给用户的资源容量限制。

4. 通过ACL来限制队列的访问

访问控制列表用于限制用户和管理员来访问队列。应用只能提交到叶子队列上,但是ACL限制可以设在父队列上,并应用到它所有的子队列中。
在容量调度器中,通过acl_submit_application属性来配置给用户或组来授权队列的访问,列表的格式为”user1,user2 group1,group”—–以逗号分割的用户列表,紧接一个空格后是一个逗号分割的组列表。
acl_submit_applications 可以设为”*”(星号)可以允许所有用户和组访问,而设置为” “(空字符)则阻塞了所有用户和组的访问。
下面的例子限制了support队列仅对用户”Sherlock”、”pacilli”和cfo-group组的成员的开放访问
属性: yarn.scheduler.capacity.root.support.acl_submit_applications
值: sherlock,pacioli cfo-group
每一个ACL可以在控制管理任意层级队列。队列管理员可以提交应用到任意队列(不通过显式提交ACL的方式)、杀死队列中的所有应用并获得队列应用中的信息。
管理员ACL可以通过配置acl_administer_queue属性获得,下面的例子管理员会授权support队列给cfo-group组。
属性: yarn.scheduler.capacity.root.support.acl_administer_queue
值: cfo-group
描述: 一个空格字符后接着 “cfo-group”

5. 通过队列管理集群的容量资源

容量调度器被设计用来允许组织间以非常类似FIFO队列的方式来共享集群资源。YARN并不将整个节点(node)分配给队列,队列拥有集群容量的一部分,而指定的队列容量会从以意数量的节点动态的方式实现。
调度是一个匹配资源需求的过程—来自多个用户的不同应用,提交到队列体系中的不同层级的不同队列之中,并使用集群节点中的可用容量资源进行分配。由于集群容量资源的总量会变化,容量属性值可以为百分数。
“容量”属性可以被管理员分配集群容量的百分比资源给队列。下面的属性将集群资源 以6:1:3比率(60%, 10%, and 30%)分配给了Engineering, Support, 和Marketing组织
属性: yarn.scheduler.capacity.root.engineering.capacity
值: 60
属性: yarn.scheduler.capacity.root.support.capacity
值: 10
属性: yarn.scheduler.capacity.root.marketing.capacity
值: 30
现在假定Engineering决定以1:4的比率将资源分配给Development组和QA组,可以通过下面的设置实现:
属性: yarn.scheduler.capacity.root.engineering.development.capacity
值: 20
属性: yarn.scheduler.capacity.root.engineering.qa.capacity
值: 80
注意:每层容量值的和必须为100%,而且你不能将一个子队列的值设置为0.
下图展示了该集群的容量配置:
capacity_scheduler_queue_percents

英文原文地址:
http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.1.2/bk_system-admin-guide/content/introduction.html

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
JavaScript包管理器比较:Npm vs Yarn vs PnpmJavaScript包管理器比较:Npm vs Yarn vs PnpmAug 09, 2022 pm 04:22 PM

本篇文章带大家了解一下三种JavaScript包管理器(npm、yarn、pnpm),并将这三种包管理器进行对比,聊聊npm、yarn、pnpm三者的区别和关联,希望对大家有所帮助,如有问题欢迎指出!

一文浅析JS包管理工具:yarn一文浅析JS包管理工具:yarnAug 09, 2022 pm 03:49 PM

yarn 和 npm 一样也是 JavaScript 包管理工具,下面本篇文章就来带大家了解一下yarn包管理工具,希望对大家有所帮助!

Python ORM 性能基准测试:比较不同 ORM 框架Python ORM 性能基准测试:比较不同 ORM 框架Mar 18, 2024 am 09:10 AM

对象关系映射(ORM)框架在python开发中扮演着至关重要的角色,它们通过在对象和关系数据库之间建立桥梁,简化了数据访问和管理。为了评估不同ORM框架的性能,本文将针对以下流行框架进行基准测试:sqlAlchemyPeeweeDjangoORMPonyORMTortoiseORM测试方法基准测试使用了一个包含100万条记录的SQLite数据库。测试对数据库执行了以下操作:插入:向表中插入10,000条新记录读取:读取表中的所有记录更新:更新表中所有记录的单个字段删除:删除表中的所有记录每个操作

Python ORM 在大数据项目中的应用Python ORM 在大数据项目中的应用Mar 18, 2024 am 09:19 AM

对象关系映射(ORM)是一种编程技术,允许开发人员使用对象编程语言来操作数据库,而无需直接编写sql查询。python中的ORM工具(例如SQLAlchemy、Peewee和DjangoORM)简化了大数据项目的数据库交互。优点代码简洁性:ORM消除了编写冗长的SQL查询的需要,这提高了代码简洁性和可读性。数据抽象:ORM提供了一个抽象层,将应用程序代码与数据库实现细节隔离开来,提高了灵活性。性能优化:ORM通常会使用缓存和批量操作来优化数据库查询,从而提高性能。可移植性:ORM允许开发人员在不

Yii框架简介:了解Yii的核心概念Yii框架简介:了解Yii的核心概念Jun 21, 2023 am 09:39 AM

Yii框架是一个高性能、高扩展性、高可维护性的PHP开发框架,在开发Web应用程序时具有很高的效率和可靠性。Yii框架的主要优点在于其独特的特性和开发方法,同时还集成了许多实用的工具和功能。Yii框架的核心概念MVC模式Yii采用了MVC(Model-View-Controller)模式,是一种将应用程序分为三个独立部分的模式,即业务逻辑处理模型、用户界面呈

深入了解常用的7种Java设计模式深入了解常用的7种Java设计模式Dec 23, 2023 pm 01:01 PM

了解Java设计模式:常用的7种设计模式简介,需要具体代码示例Java设计模式是一种解决软件设计问题的通用解决方案,它提供了一套被广泛接受的设计思想与行为准则。设计模式帮助我们更好地组织和规划代码结构,使得代码具有更好的可维护性、可读性和可扩展性。在本文中,我们将介绍Java中常用的7种设计模式,并提供相应的代码示例。单例模式(SingletonPatte

使用 Python ORM 实现高效的数据持久性使用 Python ORM 实现高效的数据持久性Mar 18, 2024 am 09:25 AM

对象关系映射(ORM)是一种技术,它允许在面向对象编程语言和关系数据库之间建立桥梁。使用pythonORM可以显著简化数据持久性操作,从而提高应用程序的开发效率和可维护性。优势使用PythonORM具有以下优势:减少样板代码:ORM自动生成sql查询,从而避免编写大量的样板代码。简化数据库交互:ORM提供了一个统一的接口,用于与数据库交互,简化了数据操作。提高安全性:ORM使用参数化查询,可以防止SQL注入等安全漏洞。促进数据一致性:ORM确保对象与数据库之间的同步,维护数据一致性。选择ORM有

用 Python Tkinter 为你的项目增添 GUI 魅力用 Python Tkinter 为你的项目增添 GUI 魅力Mar 24, 2024 am 09:46 AM

Tkinter是python中用于创建图形用户界面(GUI)的一个强大库。它以其简单性、跨平台兼容性和与Python生态系统的无缝集成而闻名。通过使用Tkinter,您可以为您的项目添加用户友好的界面,从而提高用户体验并简化与应用程序的交互。创建TkinterGUI应用程序要使用Tkinter创建GUI应用程序,请执行以下步骤:导入Tkinter库:importtkinterastk创建Tkinter主窗口:root=tk.Tk()配置主窗口:设置窗口标题、大小、位置等添加GUI元素:使用Tki

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Tools

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools