Yarn队列租户配置教程(实践记录)

简介: Yarn队列租户配置教程(实践记录)

1. 配置

Yarn资源调度有三种策略,分别是:

调度策略 描述
FIFO(先进先出) 单队列,同一时间队列中只有一个任务在执行
Capacity Scheduler(容量调度器) 多队列,每个队列内部先进先出, 同一时间队列中只有一个任务在执行, 队列的并行度为队列的个数
Fair Scheduler(公平调度器) 多队列,每个队列内部按照缺额大小分配资源启动任务,同一时间队列中有多个任务执行

本文主要配置的是Fair Scheduler调度,即公平调度策略。

Step1. 指定调度策略

目前hadoop3.X版本默认使用的是Capacity Scheduler,因此需要指定调度策略,只要在yarn-site.xml/opt/hadoop-2.7.7/etc/hadoop/)添加如下内容:

<!-- 指定调度策略为FairScheduler -->
<property>
  <name>yarn.resourcemanager.scheduler.class</name>
  <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
<!-- Fair Scheduler 策略配置文件的位置-->
<property>
  <name>yarn.scheduler.fair.allocation.file</name>
  <value>/opt/hadoop-2.7.7/etc/hadoop/fair-scheduler.xml</value>
</property>

注意到了还需要配置Fair Scheduler的配置文件。

Step2. 配置fair-scheduler.xml

fair-scheduler.xml内容如下:

<?xml version="1.0" ?>
<allocations>
    <queue name="root">
        <minResources>2048 mb,2 vcores</minResources>
        <maxResources>12240 mb,8 vcores</maxResources>  
        <maxRunningApps>10</maxRunningApps>
        <schedulingMode>fair</schedulingMode>
        <aclSubmitApps>root</aclSubmitApps>
        <aclAdministerApps>root</aclAdministerApps>
        <queue name="spark-max">
            <minResources>1024 mb,1 vcores</minResources>
            <maxResources>6120 mb,8 vcores</maxResources>  
            <maxRunningApps>10</maxRunningApps>
            <aclSubmitApps>admin,user_max</aclSubmitApps>
            <aclAdministerApps>admin</aclAdministerApps>
            <weight>2.0</weight>
            <schedulingPolicy>fair</schedulingPolicy>
        </queue>
    <queue name="spark-mid">
            <minResources>1024 mb,1 vcores</minResources>
            <maxResources>3672 mb,4 vcores</maxResources>  
            <maxRunningApps>10</maxRunningApps>
            <aclSubmitApps>admin,user_mid</aclSubmitApps>
            <aclAdministerApps>admin</aclAdministerApps>
            <weight>1.0</weight>
            <schedulingPolicy>fair</schedulingPolicy>
        </queue>
        <queue name="spark-min">
            <minResources>1024 mb,1 vcores</minResources>
            <maxResources>2448 mb,2 vcores</maxResources>  
            <maxRunningApps>10</maxRunningApps>
            <aclSubmitApps>admin,user_min</aclSubmitApps>
            <aclAdministerApps>admin</aclAdministerApps>
            <weight>1.0</weight>
            <schedulingPolicy>fair</schedulingPolicy>
        </queue>
        <user name="admin">
            <maxRunningApps>10</maxRunningApps>
        </user>
    </queue>
    <userMaxAppsDefault>10</userMaxAppsDefault>
</allocations>

注意在Yarn的Web UI界面可以查看内存以及核数总量:

属性解析如下:

参数名称 说明
minResources 最少资源保证量,设置格式为“X mb, Y vcores”,当一个队列的最少资源保证量未满足时,它将优先于其他同级队列获得资源,对于不同的调度策略(后面会详细介绍),最少资源保证量的含义不同,对于fair策略,则只考虑内存资源,即如果一个队列使用的内存资源超过了它的最少资源量,则认为它已得到了满足;对于drf策略,则考虑主资源使用的资源量,即如果一个队列的主资源量超过它的最少资源量,则认为它已得到了满足。
maxResources 最多可以使用的资源量,fair scheduler会保证每个队列使用的资源量不会超过该队列的最多可使用资源量。
maxRunningApps 最多同时运行的应用程序数目。通过限制该数目,可防止超量Map Task同时运行时产生的中间输出结果撑爆磁盘。
minSharePreemptionTimeout 最小共享量抢占时间。如果一个资源池在该时间内使用的资源量一直低于最小资源量,则开始抢占资源。
schedulingMode/schedulingPolicy 队列采用的调度模式,可以是fifo、fair或者drf。
aclSubmitApps 可向队列中提交应用程序的Linux用户或用户组列表,默认情况下为“*”,表示任何用户均可以向该队列提交应用程序。需要注意的是,该属性具有继承性,即子队列的列表会继承父队列的列表。配置该属性时,用户之间或用户组之间用“,”分割,用户和用户组之间用空格分割,比如“user1, user2 group1,group2”。
aclAdministerApps 该队列的管理员列表。一个队列的管理员可管理该队列中的资源和应用程序,比如可杀死任意应用程序。

2. 启动

重启hadoop:

$ cd /opt/hadoop-2.7.7/sbin/
$ ./stop-all.sh
$ ./start-all.sh
$ jps

如果显示如下,表示正常:

打开WebUI,浏览器访问http://10.194.188.37:8088/,可以看到使用了公平策略,以及创建了3个队列。

3. 验证

从fair-sheduler.xml文件可以看到:

也就是需要验证:

  • spark-max 能否提交到spark-max队列(期望是可以的)
  • spark-max能否提交到spark-mid队列(期望是不可以的)

Step1. 创建用户

根据fair-sheduler.xml,创建四个用户,分别为:admin、user_max、user_mid、user_min;

# 新增用户命令(例如新增admin)
$ adduser admin
# 为新增用户创建密码(例如为admin新增密码)
$ passwd admin
# 其余的用户创建依次类推

查看新增的用户:

$ compgen -u

Step2. 验证提交

验证1:user_max用户提交到root队列(预期不成功)

首先切换到user_max用户:

$ su user_max

然后使用运行spark-shell到yarn的root队列:

$ cd /opt/spark-2.4.8-bin-hadoop2.7/bin/
$ ./spark-shell --master yarn --queue root

运行结果:

与预期的一致。

验证2:user_max用户提交到spark-max队列(预期成功)

执行命令:

$ ./spark-shell --master yarn --queue spark-max

运行结果:

同时在yarn的web ui也可以看到已经成功地提交到yarn了。

验证3:user_max用户提交到spark-mid队列(预期不成功)

执行命令:

$ ./spark-shell --master yarn --queue spark-mid

运行结果,与预想的一样不成功:

4. 问题汇总

问题1. hadoop 无法停止?

  • 解决方案:直接使用jps命令查询出所有hadoop相关的进程,然后使用kill -9 进程号命令把yarn相关的进程杀掉。

问题2. 解决Permission denied: user=dr.who, access=READ_EXECUTE, inode=“/user/user_max”:root:supergroup:drwx ?

  • 解决方案:这是由于新增的用户对hdfs没有权限,使用命令hdfs dfs -chmod -R 777 /user

问题3. 解决faire scheduler空指针问题?


问题4. cm如何配置FairScheduler?

目录
相关文章
|
12天前
|
消息中间件 资源调度 关系型数据库
如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理
本文介绍了如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理。主要内容包括安装Debezium、配置Kafka Connect、创建Flink任务以及启动任务的具体步骤,为构建实时数据管道提供了详细指导。
34 9
|
1月前
|
资源调度
Ubuntu22.04静态ip配置+yarn build后显示内存超限,变异失败
Ubuntu22.04静态ip配置+yarn build后显示内存超限,变异失败
37 2
Ubuntu22.04静态ip配置+yarn build后显示内存超限,变异失败
|
1月前
|
XML 分布式计算 资源调度
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
149 5
|
1月前
|
XML 资源调度 网络协议
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
86 4
|
1月前
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
76 4
|
3月前
|
资源调度 关系型数据库 MySQL
【Flink on YARN + CDC 3.0】神操作!看完这篇教程,你也能成为数据流处理高手!从零开始,一步步教会你在Flink on YARN模式下如何配置Debezium CDC 3.0,让你的数据库变更数据瞬间飞起来!
【8月更文挑战第15天】随着Apache Flink的普及,企业广泛采用Flink on YARN部署流处理应用,高效利用集群资源。变更数据捕获(CDC)工具在现代数据栈中至关重要,能实时捕捉数据库变化并转发给下游系统处理。本文以Flink on YARN为例,介绍如何在Debezium CDC 3.0中配置MySQL连接器,实现数据流处理。首先确保YARN上已部署Flink集群,接着安装Debezium MySQL连接器并配置Kafka Connect。最后,创建Flink任务消费变更事件并提交任务到Flink集群。通过这些步骤,可以构建出从数据库变更到实时处理的无缝数据管道。
292 2
|
4月前
|
缓存 资源调度 JavaScript
秒懂Yarn:从安装到配置的全流程详解
**Yarn**是Facebook推出的JavaScript包管理器,旨在提供更快、更安全的依赖管理。它通过并行安装、离线模式、版本锁定和友好的命令行界面提升效率。要安装Yarn,可以使用npm、Homebrew或Chocolatey。基本命令包括初始化项目(`yarn init`)、安装/移除/升级依赖(`yarn add/remove/upgrade`)。配置Yarn涉及设置`.yarnrc`文件,如更改registry。通过`yarn.lock`文件保证依赖一致性。文章还提供了使用Yarn进行API测试和项目管理的实战案例。
237 0
|
2月前
|
资源调度 分布式计算 Hadoop
YARN(Hadoop操作系统)的架构
本文详细解释了YARN(Hadoop操作系统)的架构,包括其主要组件如ResourceManager、NodeManager和ApplicationMaster的作用以及它们如何协同工作来管理Hadoop集群中的资源和调度作业。
126 3
YARN(Hadoop操作系统)的架构
|
2月前
|
资源调度 分布式计算 Hadoop
使用YARN命令管理Hadoop作业
本文介绍了如何使用YARN命令来管理Hadoop作业,包括查看作业列表、检查作业状态、杀死作业、获取作业日志以及检查节点和队列状态等操作。
54 1
使用YARN命令管理Hadoop作业
|
3月前
|
资源调度 分布式计算 算法
【揭秘Yarn调度秘籍】打破资源分配的枷锁,Hadoop Yarn权重调度全攻略!
【8月更文挑战第24天】在大数据处理领域,Hadoop Yarn 是一种关键的作业调度与集群资源管理工具。它支持多种调度器以适应不同需求,默认采用FIFO调度器,但可通过引入基于权重的调度算法来提高资源利用率。该算法根据作业或用户的权重值决定资源分配比例,权重高的可获得更多计算资源,特别适合多用户共享环境。管理员需在Yarn配置文件中启用特定调度器(如CapacityScheduler),并通过设置队列权重来实现资源的动态调整。合理配置权重有助于避免资源浪费,确保集群高效运行,满足不同用户需求。
51 3