Furion Scheduler的混合负载管理

Furion Scheduler的混合负载管理转 http www transwarp cn news detail id 203 多租户场景下实现 Inceptor 中的作业调度是复杂的 不仅要考虑到任务自身的优先级和资源占用情况 而且要结合不同用户 组 角色的权限以及资源配额限制 做细粒度的调度管理 通常会遇到以下几项问题 1 资源被大批处理任务占用 导致小的报表任务一直无法被调度 2 某个用户持续提交任务

多租户场景下实现Inceptor中的作业调度是复杂的,不仅要考虑到任务自身的优先级和资源占用情况,而且要结合不同用户|组|角色的权限以及资源配额限制,做细粒度的调度管理。通常会遇到以下几项问题:

1. 资源被大批处理任务占用,导致小的报表任务一直无法被调度。

2. 某个用户持续提交任务,导致系统资源被过度占用,无法执行其他用户的任务。

3. 以往以Stage为调度粒度的方式不能充分利用空闲CPU资源,需要细化粒度。

为解决以上问题,我们在Inceptor 5.0中优化了原有的资源调度器Inceptor Scheduler,可以解决混合负载下的资源调度问题,提供更好的SLA。

传统Scheduler的调度算法


让我们先回顾一下TDH 4.x系列中Inceptor Scheduler的大致工作流程。当一个SQL的执行计划Action被触发后,SparkContext被创建,接着实例化DAGScheduler,DAGScheduler负责根据RDD依赖链划分Stage任务阶段,随后把Stage以TaskSet的形式提交给TaskScheduler。TaskScheduler负责维护所有TaskSet,并根据设置的调度模式,对各个TaskSet进行调度。TaskScheduler会为每个TaskSet创建一个TaskSetManager对象,用于管理TaskSet的生命周期,以及TaskSet内部Task的调度。该过程中的资源调度以TaskSet或者Task为粒度,会话对其不可见,也就是说它无法在多租户的场景下,根据用户权限和优先级的不同去分配资源,因此限制了作业调度在企业级生产中的灵活性。

新Scheduler的创新一:更精细的调度模式


Inceptor Scheduler共支持三种调度模式:FIFO、FAIR、FURION。这三种模式的区别在于调度逻辑的差别。

FIFO:先进先出是最简单的模式,它根据所有提交的任务按照顺序逐一执行,调度对象是TaskSet。

FAIR:FAIR提供了队列(或资源池)的概念,不同队列具有不同权重。FAIR的调度对象是TaskSet,TaskSet可以提交至不同队列。队列之间的调度采用fair策略,队列内部可以采用fifo或fair策略。

Furion Scheduler的混合负载管理

FURION:FURION是开源Spark所不支持的调度模式。它采用树形结构构建队列关系,调度指标有CPU资源数量和比值、队列权重、运行任务数。每个队列都是树形结构中的一个节点,根据节点中的父子和兄弟关系在调度指标上的关系决定调度顺序。FURION调度对象是Task。

Furion Scheduler的混合负载管理

FURION模式和FAIR模式的对比

1. FURION和FAIR模式在实现方式上存在共性:

首先它们都是完全公平策略的一种实现;

其次都是采用加权的排序调度算法。

2. 不同之处在于:

FURION中的队列关系采用数据结构构建,而FAIR中的队列关系是平行的;

其次FURION是对Task粒度进行调度,而FAIR的调度粒度是Task。

3. 总体上,Furion Scheduler比FAIR Scheduler能提供更好地调度策略,资源管理的粒度,对权重和用户调度策略具有更好的感知能力。

新Scheduler的创新二:图形化的ACL和SLA配置


Inceptor Scheduler的配置可以通过配置文件或者在Guardian上实现。Guardian配置的方法更直观简单,更推荐普通用户使用,因此本文仅介绍Guardian上的配置方式。

成功安装Guardian插件后,打开Guardian界面点击“权限”->“INCEPTOR”,选择待配置的Inceptor服务。

Furion Scheduler的混合负载管理

Inceptor Scheduler在该配置模块中所涉及的配置内容包括“队列权限”和“计算配额”两项。

队列权限

队列权限的设置中,管理员可以对用户|组|角色设置GLOBAL(全局)权限,以及对某一个队列的权限。队列权限分为三种:SUBMIT、ADMIN、ACCESS。

1. SUBMIT:代表用户|组|角色对当前队列是否具有提交作业的权限。

2. ADMIN:代表用户|组|角色是否具有把对队列的任意操作权限赋予其他用户的权限。

3. ACCESS:表示用户|组|角色是否具有访问此Inceptor服务的权限,只能在全局配置中设置。

  • Furion Scheduler的混合负载管理

计算配额

点击计算配额项,进入计算配额管理页面。管理员可以在该界面上设置队列相关参数。

由于FURION涵盖了FAIR和FIFO的调度功能,调度方式更有效,所以目前Guardian上只按照FURION模式提供参数配置。各个队列按照树形结构显示,队列名称右侧提供了队列各项配置属性,其中包括队列的权重、预留CPU核数、预留CPU百分比、最大CPU核数、最大CPU百分比以及调度策略。

Guardian上还提供配置单个队列、单个连接和单个用户可以向Inceptor提交的最大SQL数,可以在“默认配置”和“用户设置”两栏中配置。在“用户设置”栏中点击“添加配额”添加用户计算配额。

Furion Scheduler的混合负载管理

不在用户设置中的用户将采用默认配置。

Furion Scheduler的混合负载管理

Inceptor Scheduler的作用效果演示


下面的视频对以下几个场景,演示了在Inceptor Scheduler的控制下可以达到的作业调度效果:

1. 普通用户之间的任务监控相互隔离,在作业状态监控页面上只能看到自己提交的任务。而Admin可以看到所有任务。

2. 在Guardian上配置队列权限和计算配额,并且及时生效。

3. 优先级高的任务先被执行。

4. 非共享的资源约束-资源预留功能。设置两个队列:etl1权重高但保留资源占比低;etl2权重低但保留资源占比高。然后观察执行速度。

5. 可共享的资源约束-最大资源配额。设置两个队列:etl1权重高但是被限制了最大资源配额;etc2权重低但是没有最大资源配额限制。然后观察执行速度。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232700.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm import cv2找不到指定模块_pycharm显示主菜单

    pycharm import cv2找不到指定模块_pycharm显示主菜单首先,我们是要导入opencv(cv2)包,那么这个包是不是必须就在我们这个文件夹下面才行?我认为必须是这样。所以,我们在cmd用pipinstall命令安装,也必须在这个文件夹下执行,并且放到pip.exe一起,我们从opencv官网下好的whl文件也应该放在python/scripts这个里面。在cmd里这样执行,就可以,根据自己的文件夹来,命令仅提供参考:cdC:\Users\YZTang\PycharmProjects\rk-pro\venv\Scriptspipinsta.

    2022年8月27日
    3
  • 国内的微软更新服务器地址,windows update 服务器

    国内的微软更新服务器地址,windows update 服务器SystemCenter2012R2CM系列之部署WindowsServer…1.Windows更新服务器(WindowsServerUpdateService(WSUS))介绍1)技术概述:WindowsServerUpdateServices(WSUS)启用信息技术管理员部署最新的Microsoft产品更新。在WindowsServer2012中,W…

    2022年5月18日
    46
  • mysql存储引擎

    mysql存储引擎mysql存储引擎

    2022年4月24日
    34
  • 安卓ffmpeg_有什么好用的视频解码

    安卓ffmpeg_有什么好用的视频解码本文章是用ffmeg解码封装格式(如mp4)转换为yuv420p保存到本地,本文是结合雷霄骅博客ppt和某地方学习的一个笔记(说出来等下被认为做广告就尴尬了)封装格式视频编码数据将封装格式解压后可以得到压缩过的音视频等.将压缩过的视频解压后可以得到视频像素数据(RGB,YUV等).常见的视频压缩格式有H.264,MPEG4等…YUV420P格式介绍YUV是视频像素格式,在压缩视频格式解

    2022年9月25日
    2
  • gtp6 linux 启动_glibc.i686安装

    gtp6 linux 启动_glibc.i686安装$dbca//无法启动dbca,提示错误如下:/opt/oracle/jre/1.1.8/bin/../lib/i686/green_threads/libzip.so:symbolerrno,versionGLIBC_2.0not……二、系统安装详细步骤1.上电/开机,按F2/Del进入BIOSSetup界面,…glibctftp、telnet…

    2022年6月7日
    176
  • 多线程处理mq消息_实现多线程有几种方式

    多线程处理mq消息_实现多线程有几种方式何为CMQ?腾讯云消息队列(CloudMessageQueue,CMQ)是一种分布式消息队列服务,它能够提供可靠的基于消息的异步通信机制,能够将分布式部署的不同应用(或同一应用的不同组件)之间的收发消息,存储在可靠有效的CMQ队列中,防止消息丢失。CMQ支持多进程同时读写,收发互不干扰,无需各应用或组件始终处于运行状态。——来源以及更多内容推荐看官方文档。…

    2025年7月8日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号