Hadoop-2.2.0中文文档—— MapReduce 下一代--容量调度器
目的
这份文档描写叙述 CapacityScheduler,一个为Hadoop能同意多用户安全地共享一个大集群的插件式调度器,如他们的应用能适时被分配限制的容量。
概述
CapacityScheduler 被设计成以分享的、多用户集群执行 Hadoop 应用并最大化利用集群的机制。
传统上。每一个组织都会有它自己的私有电脑资源,在顶峰或接近顶峰状态有充足的容量来面对组织的SLA。这通常导致低平均利用和管理多个独立集群的管理费用,每一个集群要有一个。
组织间共享安装在Hadoop的集群是一种低成本的方式,同意他们得到规模经济利益,而不用创建私有集群。然而。组织关心共享一个集群是由于他们操心别人使用对他们的SLA重要的资源。
CapacityScheduler被设计成同意每一个组织的容量保证。来共享一个大的集群。
当中心思想是 Hadoop集群中的可用资源是基于他们的计算须要多个组织间共享的。有一个额外优点是一个组织能得到不论什么别的用户没有在使用的容量。
这在一个有效支出模式中为组织提供了弹性。
跨组织间共享集群的必要性是支持多用户。由于每一个组织必须被保证容量和安全以确保共享的应用。
CapacityScheduler 提供了一个严格的限制以确保单应用或用户或队列不能以不合适的方式消费集群中的资源。
还有。 CapacityScheduler 提供了在用户在初始化/请求应用时的限制。以保证集群的稳定性。
CapacityScheduler提供的主要抽象概念是 queues.
这些队列一般由管理员设置以经济地共享集群。
要对集群资源提供很多其它的控制和预測, CapacityScheduler 支持层级化队列以保证组织中共享的资源在别的队列之前能使用,对给定的组织间共享资源提供了友好性。
特性
CapacityScheduler 支持例如以下的特性:
- 层级化 队列 —— 支持队列层级化以保证在其它用户使用空暇资源之前,子队列中的资源由一个组织共享。从而提供很多其它的控制性和可预測性。
- Capacity 保证 —— 就一个确定的资源容量安排而言。队列被分配成网格中的容量的一部分 。
全部提交给一个队列的应用将对分配给队列的容量有使用权。
管理者能够在每一个队列的分配容量上配置软限制和可选的硬限制。
- 安全 —— 每一个队列有严格的ACLs。控制着那个用户能够像一个单独的队列提交应用。
还有,有安全保障保证用户不能看 而且/或 改动来自别的用户的应用。另外,支持每一个队列和系统管理者角色。
- 弹性 —— 闲置资源能够分配给不论什么超过其容量的队列。当以低容量正在执行的队列须要这些资源,随着在这些资源上的任务调度的完毕,他们将会被分配给以低容量执行的队列(不支持抢占)。
这保证了队列能够有预測性的、弹性的获取资源,因而对避免在集群中为提高利用率,而对资源人工清仓。
- 多用户 —— 提供了全面的限制以防止一个独立应用、用户和队列垄断队列中的资源或作为一个总体的集群,以保证集群不被压垮。
- 可移植性
- 执行时配置 —— 队列定义和属性,如容量、ACLs能够在执行时被管理员以安全的方式改动,以最小化对用户的破坏。还有,提供给用户和管理员一个控制台来查看系统中当前不同队列的分配的资源。
管理员能够在执行时加入额外的队列,可是队列不能在执行时删除。
- Drain 应用 —— 管理员能够在执行时停止队列。以保证当现存的应用执行完毕前,没有新应用能够提交。假设一个队列是在STOPPED 状态, 新的应用不能提交给它或不论什么其子队列。已存在应用将继续到完毕,因此队列能够优雅地关闭。此时管理员能够启动关闭了的应用。
- 执行时配置 —— 队列定义和属性,如容量、ACLs能够在执行时被管理员以安全的方式改动,以最小化对用户的破坏。还有,提供给用户和管理员一个控制台来查看系统中当前不同队列的分配的资源。
- 基于资源调度 - 对资源集中的应用有支持,一个应用能够可选的指定比默认更高的资源须要,因而适应应用有不同的资源须要。当前,支持内存作为资源须要。
配置
设置 ResourceManager以用CapacitySchedulerconf/yarn-site.xml中设置下列属性
,在属性 值 yarn.resourcemanager.scheduler.classorg.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler- 设置队列
conf/capacity-scheduler.xml 是
CapacityScheduler.
的配置文件CapacityScheduler有一个提前定义的队列叫做 root. 系统中的全部队列都是root队列的子队列。另外的队列能够在配置
yarn.scheduler.capacity.root.queues用一些逗号分隔的子队列。
中CapacityScheduler的配置使用一种叫做 queue path 的概念来配置队列的层级。 queue path 是队列层级的全路径。从 root
開始, 以 . (点)作为分隔符。一个给定的队列的子队列能够用 knod配置:
yarn.scheduler.capacity.<queue-path>.queues来定义。除非声明,子队列不直接继承父队列的属性。
以下是一个有三个顶级队列a,b和c和一些a,b的二级队列的样例:
<property>
<name>yarn.scheduler.capacity.root.queues</name>
<value>a,b,c</value>
<description>The queues at the this level (root is the root queue).
</description>
</property> <property>
<name>yarn.scheduler.capacity.root.a.queues</name>
<value>a1,a2</value>
<description>The queues at the this level (root is the root queue).
</description>
</property> <property>
<name>yarn.scheduler.capacity.root.b.queues</name>
<value>b1,b2,b3</value>
<description>The queues at the this level (root is the root queue).
</description>
</property> - 队列属性
- 资源分配
属性 描写叙述 yarn.scheduler.capacity.<queue-path>.capacity队列 容量 百分比 (%) 写为浮点数 (e.g. 12.5). 在每一层上,全部队列容量的总和,必须等于100。假设有闲置资源和弹性。队列中的应用可能消耗比队列容量很多其它的资源。 yarn.scheduler.capacity.<queue-path>.maximum-capacity写为浮点数的最大队列百分比 (%) .这个限制队列中应用的弹性。 默觉得 -1 ,即禁用之。 yarn.scheduler.capacity.<queue-path>.minimum-user-limit-percent在不论什么给定时间,假设有资源使用须要,每一个队列对一个用户执行一个资源分配百分比限制。用户限制会在一个最小值和最大值之间变动。 前者(最小值) 设置给这个值,后者(最大值)根据已经提交了应用的用户的数量,比如,假设这个值是25。假设两个用户已经提交应用给一个队列。没实用户能够使用超过 50% 的队列资源。假设第三个用户提交了一个应用。没有一个用户能够使用超过 33% 的队列资源。有4或很多其它的用户,没实用户能够使用超过
25% 的队列资源。值为100 则说明没实用户限制。默认值是100.
yarn.scheduler.capacity.<queue-path>.user-limit-factor队列容量中的多数能够配置为同意单用户获取很多其它的资源。默认的,这个设为 1 ,以保证单个用户永远不会占用超过队列配置容量。而不管不管集群如何闲置。此值声明为一个浮点数。 - 执行和请求应用限制
CapacityScheduler支持以下的參数以控制正在和等待执行的应用:属性 描写叙述 yarn.scheduler.capacity.maximum-applications/yarn.scheduler.capacity.<queue-path>.maximum-applications系统中应用的最大数量。能够是当前激活的包含正在和等待执行的。每一个队列上的限制是他们的队列容量和用户限制的直接比例 。这是一个硬限制。而且当达到了限制,不论什么应用提交都会被拒绝。默认是 10000. 这个能够通过 yarn.scheduler.capacity.maximum-applications为全部队列设置,也能够被在每一个队列上的设置yarn.scheduler.capacity.<queue-path>.maximum-applications.
覆盖yarn.scheduler.capacity.maximum-am-resource-percent/yarn.scheduler.capacity.<queue-path>.maximum-am-resource-percent集群中的最大资源比列能够用来执行应用master——控制当前激活的应用数量。每一个队列上的限制是他们的队列容量和用户限制的直接比例 。 声明为一个浮点数——如0.5 =
50%. 默认是 10%. 这个能够通过yarn.scheduler.capacity.maximum-am-resource-percent为全部队列设置。也能够被在每一个队列上的设置yarn.scheduler.capacity.<queue-path>.maximum-am-resource-percent覆盖. - 队列管理和权限
CapacityScheduler支持例如以下的參数配置以管理资源:属性 描写叙述 yarn.scheduler.capacity.<queue-path>.state队列的状态。 能够是RUNNING 和 STOPPED 中的一个。假设一个队列在 STOPPED 状态,新的应用不能提交给它或不论什么其子队列。因此,假设root 队列是 STOPPED 状态,则无应用能够提交给整个集群。已存在应用将继续到完毕,因此队列能够优雅地关闭。
yarn.scheduler.capacity.root.<queue-path>.acl_submit_applicationsACL 控制谁能够提交应用给一个给定的队列。假设给定的 用户/组 在给定的队列或层级中他们能够提交应用的父队列中的一个上有必要的 ACLs。 假设没有特别声明,这个属性的 ACLs 继承于父队列。
yarn.scheduler.capacity.root.<queue-path>.acl_administer_queueACL 控制谁能够 管理 给定队列上的应用。假设给定的 用户/组 在给定的队列或层级中他们能够管理应用的父队列中的一个上有必要的 ACLs。假设没有特别声明,这个属性的 ACLs 继承于父队列。 注意: 一个 ACL 的格式是这样 user1, user2空格group1, group2. * 代表不论什么人.
空格代表没有人。假设没有声明。对root队列,默认是 * 。 - 回想 CapacityScheduler 的配置
一旦完毕了安装配置, 在启动YARN集群后你能够在浏览器中检查。
- 以正常方式启动 YARN 集群。
- 启动
ResourceManagerweb UI. - /scheduler 页面应该显示每一个队列的使用情况。
- 资源分配
改变队列配置
改变队列属性和加入新队列非常easy。你须要编辑 conf/capacity-scheduler.xml 并执行 yarn
rmadmin -refreshQueues.
$ vi $HADOOP_CONF_DIR/capacity-scheduler.xml
$ $HADOOP_YARN_HOME/bin/yarn rmadmin -refreshQueues
说明: 队列不能被删除,仅仅支持加入新队列——更新的配置应该合法。比如,每一层的队列容量应该是100%。
Hadoop-2.2.0中文文档—— MapReduce 下一代--容量调度器的更多相关文章
- Hadoop-2.2.0中文文档—— MapReduce 下一代 - Encrypted Shuffle
简单介绍 Encrypted Shuffle capability (加密洗牌功能? )同意用HTTPS 和 可选的client验证 (也称作双向的 HTTPS, 或有client证书的 HTTPS) ...
- Hadoop-2.2.0中国文档—— MapReduce 下一代 -- 公平调度
目的 此文档描写叙述了 FairScheduler, Hadoop 的一个可插入式的调度器,同意 YARN 应用在一个大集群中公平地共享资源. 简单介绍 公平调度是一种分配资源给应用的方法.以致到最后 ...
- Hadoop-2.2.0中文文档——MapReduce 下一代 -——集群配置
目的 这份文档描写叙述了怎样安装.配置和管理从几个节点到有数千个节点的Hadoop集群. 玩的话,你可能想先在单机上安装.(看单节点配置). 准备 从Apache镜像上下载一个Hadoop的稳定版本号 ...
- Hadoop-2.2.0中文文档—— MapReduce下一代- 可插入的 Shuffle 和 Sort
简单介绍 可插入的 shuffle 和 sort 功能,同意在shuffle 和 sort 逻辑中用可选择的实现类替换.这个情况的样例是:用一个不是HTTP的应用协议,如RDMA来 shuffle 从 ...
- Apache Spark 2.2.0 中文文档
Apache Spark 2.2.0 中文文档 - 快速入门 | ApacheCN Geekhoo 关注 2017.09.20 13:55* 字数 2062 阅读 13评论 0喜欢 1 快速入门 使用 ...
- Apache Storm 1.1.0 中文文档 | ApacheCN
前言 Apache Storm 是一个免费的,开源的,分布式的实时计算系统. 官方文档: http://storm.apache.org 中文文档: http://storm.apachecn.org ...
- Django2.0中文文档
title: Django2.0中文文档 tags: Python,Django,入沐三分 grammar_cjkRuby: true --- Django2.0版本已经发布了,我们先来看一个图片 从 ...
- webpack4.0中文文档踩坑记录
一直没有正儿八经去看过webpack4.0的文档,前段时间工作比较轻松,于是就有了此文...面都这样一个问题:请问在您的开发生涯中,令你最痛苦最无奈的是什么?小生的回答只有一个:“阅读那些令人发指的文 ...
- PyTorch官方中文文档:torch.optim 优化器参数
内容预览: step(closure) 进行单次优化 (参数更新). 参数: closure (callable) –...~ 参数: params (iterable) – 待优化参数的iterab ...
随机推荐
- UIScrollView/UITableView 一直显示滚动条(ScrollBar Indicators)、滚动条Width(宽度)、滚动条Color(颜色)
在 IOS 中,对 UIScrollView 的滚动条(ScrollBar Indicators)的自定义设置接口,一直都是很少的.除了能自定义简单的样式(UIScrollViewIndicatorS ...
- Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储
Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...
- python+tesseract验证码识别的一点小心得
由于公司需要,最近开始学习验证码的识别 我选用的是tesseract-ocr进行识别,据说以前是惠普公司开发的排名前三的,现在开源了.到目前为止已经出到3.0.2了 当然了,前期我们还是需要对验证码进 ...
- oracle软件安装完毕之后,如何创建数据库
oracle软件安装完毕之后,如何创建数据库 学习了:https://zhidao.baidu.com/question/1800966379896476147.html 使用了Database Co ...
- codeforces 204(Div.1 A) Little Elephant and Interval(贪心)
题意: 有一种个位数与最高位数字相等的数字,求在l,r的范围内,这样的数字的个数. 思路: 找下规律就知道当当n>10的时候除去个位以后的答案等于n/10,然后考虑第一个数字是否小于最后一个.小 ...
- koajs 项目实战(二)
此篇文章,接 koajs 项目实战(一)后写 (六)表单提交和参数接收 表单: <form method="post" action="./users/zhuce& ...
- ES6 rest与扩展运算符
1.rest 变量将多余的参数放入数组中. function add(...values) { let sum = 0; for (var val of values) { sum += val; } ...
- SQL CASE WHEN ... THEN ... ELSE.. END 实例
用一个SQL语句完成不同条件的分组(SELECT部分): select QuoteOrderId,SUM(case when(ApprovalStatus=1)then Amount else 0 e ...
- Oraclet提交提示Record is locked by another user错误
http://blog.csdn.net/alifel/article/details/4324338下午修改oracle datebase中的字段时,提示"Record is locked ...
- SpringMvc自动代理
自动配置的好处是不需要挨个 实现[org.springframework.aop.framework.ProxyFactoryBean] ,只需要 advisor 配置和 <bean id=&q ...