关键字:Hadoop 多用户、资源、fair scheduler

在一个公司内部的Hadoop Yarn集群,肯定会被多个业务、多个用户同时使用,共享Yarn的资源,如果不做资源的管理与规划,那么整个Yarn的资源很容易被某一个用户提交的Application占满,其它任务只能等待,这种当然很不合理,我们希望每个业务都有属于自己的特定资源来运行MapReduce任务,Hadoop中提供的公平调度器–Fair Scheduler,就可以满足这种需求。

Fair Scheduler将整个Yarn的可用资源划分成多个资源池,每个资源池中可以配置最小和最大的可用资源(内存和CPU)、最大可同时运行Application数量、权重、以及可以提交和管理Application的用户等。

根据用户名分配资源池

如图所示,假设整个Yarn集群的可用资源为100vCPU,100GB内存,现在为3个业务各自规划一个资源池,另外,规划一个default资源池,用于运行其他用户和业务提交的任务。如果没有在任务中指定资源池(通过参数mapreduce.job.queuename),那么可以配置使用用户名作为资源池名称来提交任务,即用户businessA提交的任务被分配到资源池businessA中,用户businessC提交的任务被分配到资源池businessC中。除了配置的固定用户,其他用户提交的任务将会被分配到资源池default中。

这里的用户名,就是提交Application所使用的Linux/Unix用户名。

另外,每个资源池可以配置允许提交任务的用户名,比如,在资源池businessA中配置了允许用户businessA和用户lxw1234提交任务,如果使用用户lxw1234提交任务,并且在任务中指定了资源池为businessA,那么也可以正常提交到资源池businessA中。

根据权重获得额外的空闲资源

在每个资源池的配置项中,有个weight属性(默认为1),标记了资源池的权重,当资源池中有任务等待,并且集群中有空闲资源时候,每个资源池可以根据权重获得不同比例的集群空闲资源。

比如,资源池businessA和businessB的权重分别为2和1,这两个资源池中的资源都已经跑满了,并且还有任务在排队,此时集群中有30个Container的空闲资源,那么,businessA将会额外获得20个Container的资源,businessB会额外获得10个Container的资源。

最小资源保证

在每个资源池中,允许配置该资源池的最小资源,这是为了防止把空闲资源共享出去还未回收的时候,该资源池有任务需要运行时候的资源保证。

比如,资源池businessA中配置了最小资源为(5vCPU,5GB),那么即使没有任务运行,Yarn也会为资源池businessA预留出最小资源,一旦有任务需要运行,而集群中已经没有其他空闲资源的时候,这个最小资源也可以保证资源池businessA中的任务可以先运行起来,随后再从集群中获取资源。

动态更新资源配额

Fair Scheduler除了需要在yarn-site.xml文件中启用和配置之外,还需要一个XML文件来配置资源池以及配额,而该XML中每个资源池的配额可以动态更新,之后使用命令:yarn rmadmin –refreshQueues 来使得其生效即可,不用重启Yarn集群。

需要注意的是:动态更新只支持修改资源池配额,如果是新增或减少资源池,则需要重启Yarn集群。

Fair Scheduler配置示例

以上面图中所示的业务场景为例。

yarn-site.xml中的配置:

yarn.resourcemanager.scheduler.class

org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler

yarn.scheduler.fair.allocation.file

/etc/hadoop/conf/fair-scheduler.xml

yarn.scheduler.fair.preemption

true

yarn.scheduler.fair.user-as-default-queue

true

default is True

yarn.scheduler.fair.allow-undeclared-pools

false

default is True

yarn.resourcemanager.scheduler.class

配置Yarn使用的调度器插件类名;

Fair Scheduler对应的是:

org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler

yarn.scheduler.fair.allocation.file

配置资源池以及其属性配额的XML文件路径(本地路径);

yarn.scheduler.fair.preemption

开启资源抢占。

yarn.scheduler.fair.user-as-default-queue

设置成true,当任务中未指定资源池的时候,将以用户名作为资源池名。这个配置就实现了根据用户名自动分配资源池。

yarn.scheduler.fair.allow-undeclared-pools

是否允许创建未定义的资源池。

如果设置成true,yarn将会自动创建任务中指定的未定义过的资源池。设置成false之后,任务中指定的未定义的资源池将无效,该任务会被分配到default资源池中。

fair-scheduler.xml中的配置:

30

51200mb,50vcores

102400mb,100vcores

100

1.0

fair

10240mb,10vcores

30720mb,30vcores

100

fair

1.0

*

5120mb,5vcores

20480mb,20vcores

100

fair

2.0

businessA,lxw1234 group_businessA,group_lxw1234

businessA,hadoop group_businessA,supergroup

5120mb,5vcores

20480mb,20vcores

100

fair

1

businessB group_businessA

businessA,hadoop group_businessA,supergroup

5120mb,5vcores

20480mb,20vcores

100

fair

1.5

businessC group_businessC

businessC,hadoop group_businessC,supergroup

minResources

最小资源

maxResources

最大资源

maxRunningApps

最大同时运行application数量

weight

资源池权重

aclSubmitApps

允许提交任务的用户名和组;

格式为: 用户名 用户组

当有多个用户时候,格式为:用户名1,用户名2 用户名1所属组,用户名2所属组

aclAdministerApps

允许管理任务的用户名和组;

格式同上。

Fair Scheduer各资源池配置及使用情况,在ResourceManager的WEB监控页面上也可以看到:

您可以关注 lxw的大数据田地 ,或者 加入邮件列表 ,随时接收博客更新的通知邮件。

如果觉得本博客对您有帮助,请 赞助作者 。

hadoop job 未跑满资源_Hadoop多用户资源管理–Fair Scheduler介绍与配置相关推荐

  1. hadoop job 未跑满资源_2018年第26周-解剖MapReduce Job

    Hadoop架构预览 Apache Hadoop是一个开源软件框架,用于在廉价硬件上大规模存储和计算数据集.以下是5个组成Hadoop的模块. cluster是一个集合的主机(被称为nodes).No ...

  2. hadoop job 未跑满资源_mapreduce任务占满整个集群资源

    赞同来自: 哦,我把yarn.nodemanager.pmem-check-enabled设置为true后,再次运行任务就报错了. 您说的使用量超过limit 两倍时,才启动kill.应该指得是虚拟内 ...

  3. hadoop namenode启动不了_Hadoop框架:HDFS高可用环境配置

    一.HDFS高可用 1.基础描述 在单点或者少数节点故障的情况下,集群还可以正常的提供服务,HDFS高可用机制可以通过配置Active/Standby两个NameNodes节点实现在集群中对NameN ...

  4. 学习笔记Hadoop(十二)—— Hadoop基础操作(4)—— YARN资源管理与调度策略

    六.YARN资源管理与调度策略 6.1.YARN资源管理 MapReduce任务/资源流程: 由5.1章节我们可知,当把yarn.scheduler.capacity.maximum-am-resou ...

  5. azure未连接_查找影响Azure成本的未使用资源

    azure未连接 To reduce Azure costs on unused and unnecessary resources, we should design with prevention ...

  6. 解决hadoop:未找到命令;hadoop:未找到命令问题

    解决hadoop:未找到命令:hadoop:未找到命令问题 做用户指定是追加到原有文件末尾还是覆盖原有的文件这个实验的时候,使用hdfs命令后提示我未找到命令,那我就改成hadoop命令,也未找到命令 ...

  7. 2021年大数据Hadoop(二十六):YARN三大组件介绍

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 Yarn三大组件介绍 ResourceManager No ...

  8. Hadoop YARN配置参数剖析(4)—Fair Scheduler相关参数

    首先在yarn-site.xml中,将配置参数yarn.resourcemanager.scheduler.class设置为org.apache.hadoop.yarn.server.resource ...

  9. 适合入门hadoop 2.7.7的集群环境搭建高可用版本配置(保姆版)

    需要的安装包: 1.jdk压缩包 2.hadoop压缩包 百度云盘链接 开始搭建hadoop集群 1 集群规划 安装VMware,使用三台虚拟机进行集群搭建,下面是每台虚拟机的规划: 2 网络配置 2 ...

最新文章

  1. monkey学习总结笔记
  2. Junit测试中找不到junit.framework.testcase
  3. java图片预览上传_Java实现图片上传预览 (使用ajax提交)
  4. 如何把VS Code打造成Java开发IDE?
  5. python3库查看调用_Python 3 中调用 COM 的库文件 | 学步园
  6. 同时运行两个PHP吗,PHP-避免由两个工作人员同时运行后台作业
  7. win10安装misql8_Windows10下安装MySQL8.0
  8. 运输层课后第13题解析
  9. ETL PostgreSQL in Oracle ODI 12c
  10. java 6个逆向工程软件
  11. addr2line的使用
  12. 《JavaScript百炼成仙》 全书知识点整理
  13. java idle 机制_Flink中Idle停滞流机制(源码分析)
  14. NLP文本分析(文本分类与句子评分)
  15. 使用Python来编写一个简单的感知机
  16. 线程池详解:线程池的七大参数及运行流程
  17. 银保监会计算机类专业知识,国家公务员局2019中国银保监会国考内容:计算机类专业知识...
  18. 网盘资源搜索工具,网罗各大平台的网盘
  19. 树莓派 Raspberry Pi (bullseye)更换阿里云源方法
  20. 第六、七章 嵌入式Linux开发

热门文章

  1. SQL中 char、varchar、text 和 nchar、nvarchar、ntext的区别
  2. perl 的mail严格正则表达式到底要怎么写?
  3. IBM斥资3.6亿美元建史上最复杂云计算中心
  4. java zmq zmsg,zmq 识别多个客户端
  5. android 测试工程 关闭混淆,混淆Android Test项目以及项目(在发布和混淆版本上运行测试)...
  6. java源码依赖分析_高德APP全链路源码依赖分析工程
  7. Java是否为整数_Java问题 输入一个数判定其是否为整数
  8. java 方法重载 应用举例,Java 实例 - 重载(overloading)方法中使用 Varargs
  9. java 获取上下文_如何获得spring上下文的方法总结
  10. Java的内存分配策略有哪些_Java的内存分配策略