Yarn【多队列实例、任务优先级设置】

简介: Yarn【多队列实例、任务优先级设置】

前言

我们知道,Hadoop常见的三种调度器:FIFO调度器(几乎不用,因为它是先来先服务)、容量调度器(Apache Hadoop 默认的调度器)、公平调度器(CDH默认调度器)。

其中,容量调度器和公平调度器都是支持多任务队列的,但是我们如果不去指定,它默认把任务都放到一个默认的队列(‘default’队列)当中去,如果提交的任务比较多,那么并发度肯定很低,毕竟每个队列都是一个FIFO队列。这就需要我们创建多个队列。

怎么创建队列

  1. 默认:调度器默认就 1 default 队列,不能满足生产要求(所有任务都在一个队列中,相当于在一个FIFO队列,并发度极低)。
  2. 按照框架:mr / hive /spark/ flink 每个框架的任务放入指定的队列(但是企业用的不是特别多,毕竟假如大公司,一次上万个任务,除以4之后每个队列的压力仍然很大
  1. 按照业务模块:登录注册、购物车、下单、业务部门 1、业务部门 2 ...(主流创建队列的方式)

创建多队列的好处

  1. 不用担心因为一个队列的原因,导致实习生直接一手递归死循环把整个集群资源耗尽干瘫痪。
  2. 降级使用,特殊时期保证重要的任务队列资源充足(双11、618)。

实际案例

需求

       default 队列占总内存的 40% ,最大资源容量占总资源 60%(也就是说当自己资源不足的时候,可以去抢占别人的资源,但是不能超过60%)  hive 队列占总内存的 60% ,最大资源容量占总资源 80% 

配置capacity-scheduler.xml

我们可以看到,目前default队列的总容量占总资源的100%,最大容量同样占100%。

我们需要配置的是 hadoop3.1.3etc/hadoop/capacity-scheduler.xml

替换修改后的调度器配置文件

分发脚本

刷新队列

语法: yarn rmadmin -refreshQueues

指定执行队列案例测试

       使用wordcount案例进行测试,要求指定使用 hive 队列来提交任务。(不指定的话默认使用的是default队列)

命令:

 hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar wordcount -D mapreduce.job.queuename=hive /wcinput /wcoutput2

此外,如果是我们自己编写的MapReduce程序,我们可以在Driver类中来指定提交任务的队列:

public static void main(String[] args) throws IOException, 
ClassNotFoundException, InterruptedException {
 Configuration conf = new Configuration();
 conf.set("mapreduce.job.queuename","hive");
 //1. 获取一个 Job 实例
 Job job = Job.getInstance(conf);
//....
 //6. 提交 Job
 boolean b = job.waitForCompletion(true);
 System.exit(b ? 0 : 1);
 }

容量调度器下的任务优先级

       容量调度器,支持任务优先级的配置,在资源紧张时,优先级高的任务将优先获取资源。

默认情况, Yarn 将所有任务的优先级限制为 0(也就是说,默认每个队列都是一个FIFO队列,按照先来先服务的原则) ,若想使用任务的优先级功能,须开放该限制。

1、修改yarn-site.xml

设置5个优先级等级

<property>
 <name>yarn.cluster.max-application-priority</name>
 <value>5</value>
</property>

2、分发配置、重启Yarn

更新了yarn-site.xml需要重启yarn才能生效

 

3、提交任务时指定任务优先级

hadoop jar /opt/module/hadoop-3.3.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar pi -D mapreduce.job.priority=5 5 2000000

4、提交任务后指定任务优先级

yarn application -appID application_1611133087930_0009 -updatePriority 5


相关文章
|
4月前
|
消息中间件 分布式计算 Java
Linux环境下 java程序提交spark任务到Yarn报错
Linux环境下 java程序提交spark任务到Yarn报错
54 5
|
3月前
|
资源调度 分布式计算 大数据
大数据-111 Flink 安装部署 YARN部署模式 FlinkYARN模式申请资源、提交任务
大数据-111 Flink 安装部署 YARN部署模式 FlinkYARN模式申请资源、提交任务
130 0
|
8月前
|
SQL 分布式计算 资源调度
Hadoop Yarn 配置多队列的容量调度器
配置Hadoop多队列容量调度器,编辑`capacity-scheduler.xml`,新增`hive`队列,`default`队列占总内存40%,最大60%;`hive`队列占60%,最大80%。配置包括队列容量、用户权限和应用生存时间等,配置后使用`yarn rmadmin -refreshQueues`刷新队列,无需重启集群。多队列配置可在Yarn WEB界面查看。
112 4
|
8月前
|
消息中间件 资源调度 Oracle
实时计算 Flink版产品使用合集之使用yarn-session的模式来提交任务,空间的资源是否释放给yarn
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
8月前
|
SQL 资源调度 监控
实时计算 Flink版产品使用合集之Flink on YARN 下,任务代码中通过 JobListener 监听任务状态,onJobSubmitted 和 onJobExecuted 同时触发如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
142 3
|
8月前
|
消息中间件 资源调度 分布式计算
实时计算 Flink版产品使用合集之1.13版本上部署一个flink1.17为什么任务启动一直accepted状态yarn的,有什么排查方向吗资源什么的都是充足的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
7月前
|
资源调度 分布式计算 Hadoop
实时计算 Flink版产品使用问题之yarn session模式中启动的任务链接是http IP,想把IP映射为主机hadoop,该怎么操作
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
8月前
|
资源调度 分布式计算 算法
【Hadoop Yarn】Hadoop Yarn 基于优先级的调度算法
【4月更文挑战第7天】【Hadoop Yarn】Hadoop Yarn 基于优先级的调度算法
|
4月前
|
资源调度 分布式计算 Hadoop
YARN(Hadoop操作系统)的架构
本文详细解释了YARN(Hadoop操作系统)的架构,包括其主要组件如ResourceManager、NodeManager和ApplicationMaster的作用以及它们如何协同工作来管理Hadoop集群中的资源和调度作业。
177 3
YARN(Hadoop操作系统)的架构
|
4月前
|
资源调度 分布式计算 Hadoop
使用YARN命令管理Hadoop作业
本文介绍了如何使用YARN命令来管理Hadoop作业,包括查看作业列表、检查作业状态、杀死作业、获取作业日志以及检查节点和队列状态等操作。
78 1
使用YARN命令管理Hadoop作业