公交车伴随着我们的日常生活已是随处可见,不同路线的公交车根据各自的时间表有序发出,到达站点,接上站台的乘客再缓缓驶向下一站……早高峰会有短区间的加班车,发车间隔也更短,夜半时分的班次则间隔更长。这一切都服从于公交总站的调度。

在大数据平台中,也会有各式各样的任务需要按照一定的时间间隔和先后顺序有序进行,而管理这一切的就是调度引擎。它不仅要让任务按时按点的执行,更要面对种种复杂的场景,例如:

    10分钟执行一次的周期任务执行了11分钟,下一周期是否要直接开始计算
    需要A任务执行完成后才执行的B任务,等待了一天还未等到A执行完毕,是否该继续等待
    十万个任务同时被提交,该以怎样的顺序进行执行

问题种类繁多,如果没有一个健壮智能的调度引擎,是无法像有序的公交车系统一样支撑起一个大数据平台的任务执行的。

在市场上存在许多的调度框架,比如:Quartz、Elastic-Job、XXL-JOB等,但是他们仅支持定时提交任务,就好比固定班次的公交车,虽然能按时到达站点,却难以面对早晚的乘车高峰。这样单一的调度方式是远远满足不了“曲折离奇、复杂多变”的业务场景。这个时候我们数栈自研的百万级分布式调度引擎--DAGScheduleX就上场啦,它不仅满足定时功能,内置丰富的策略来应对不同情况下的场景,如:资源限制、快速失败、优先级动态调整、快速过期、上下游调度状态依赖。

数栈支持基础定时调度与复杂跨周期依赖策略。

在整个数栈架构中,DAGScheduleX作为数栈平台应用和底层大数据集群的纽带,起着承上启下的作用,在集群资源范围内,协调着任务资源分配,安排着任务提交运行与周期性调度。

一、DAGScheduleX的主要流程

二、多集群配置和多租户隔离

在实际的数据开发中,我们可能会有开发、测试等多环境。若要将任务提交在对应的集群下,我们只需要在数栈的控制台上配置好不同的集群环境,并绑定不同的租户,此时任务提交会根据不同租户实现集群隔离。

1. 控制台可以绑定不同类型的集群: 如生产环境A Hadoop、 生产环境B LibrA
    2. 多个租户可绑定一个集群
    3. 提交任务时,通过tenantId 区分目标集群了

三、实例生成和提交

DAGScheduleX目前支持多种计算组件,如Flink、Spark、TensorFlow、Python、Shell 、Hadoop MR、Kylin、Odps、RDBMS(多种关系型数据库)等等,所有上层应用提交任务都只要找好对应的插件类型就可以执行了。

DAGScheduleX支持自定义任务类型,扩展新的插件也是非常的方便,只要定义好对应的插件typeName并实现IClient中的定义的接口方法就可以。接口方法有以下:

    init(初始化)方法
    judgeSlots(资源判断)方法
    submitJob(提交任务)方法
    getJobStatus(获取任务状态)方法
    getJobLog(获取任务执行日志)方法
    cancelJob(取消任务)方法

一个Task(任务)提交到DAGScheduleX,就会提前一天生成好第二天的Job(实例)任务,到了执行的当天他们都会按照规定好的调度时间去运行,然后再获取执行结果。当然补数据和立即运行是不受限的,DAGScheduleX还支持跨租户间任务上下游依赖、任务自依赖、任务优先级调整、控制台任务队列管理、运维中心任务监控等功能。

四、任务告警

在上下游依赖链路较长的时候,一个上游Job(实例)失败就可能导致下游的数据出现问题。对于这种情况,DAGScheduleX支持多种场景的监控告警:

    执行超过规定时长
    执行失败
    任务未运行
    任务停止

控制台告警通道不仅支持钉钉、短信、邮件等通用告警方式还支持用户自定义的告警通道:

    引入DAGScheduleX的告警sdk
    实现ICustomizeChannel中的自定义告警逻辑
    控制台告警通道上传打包好的jar
    应用中配置对应的告警场景

五、总结

DAGScheduleX是一个能对任务进行实例生成,实例调度、实例提交、实例运维、实例告警的分布式任务调度引擎。而数栈的离线计算、流计算、算法开发等所有的套件都依赖于调度引擎来执行任务,是很重要的枢纽。

本文首发于:数栈研习社

数栈是云原生—站式数据中台PaaS,我们在github上有一个有趣的开源项目:FlinkX,FlinkX是一个基于Flink的批流统一的数据同步工具,既可以采集静态的数据,比如MySQL,HDFS等,也可以采集实时变化的数据,比如MySQL binlog,Kafka等,是全域、异构、批流一体的数据同步引擎,大家如果有兴趣,欢迎来github社区找我们玩~

浅析百万级分布式调度引擎——DAGScheduleX能做什么?的更多相关文章

  1. FW 每秒百万级别的 HTTP 请求 sung: 重型的(heavy-duty)、分布式的、多协议测试工具

    本文是构建能够每秒处理 3 百万请求的高性能 Web 集群系列文章的第一篇.它记录了我使用负载生成器工具的一些经历,希望它能帮助每一个像我一样不得不使用这些工具的人节省时间. 负载生成器是一些生成用于 ...

  2. 阿里云云盾抗下全球最大DDoS攻击(5亿次请求,95万QPS HTTPS CC攻击) ,阿里百万级QPS资源调度系统,一般的服务器qps多少? QPS/TPS/并发量/系统吞吐量

    阿里云云盾抗下全球最大DDoS攻击(5亿次请求,95万QPS HTTPS CC攻击) 作者:用户 来源:互联网 时间:2016-03-30 13:32:40 安全流量事件https互联网资源 摘要:  ...

  3. 攻克数据库核心技术壁垒,实现百万级QPS的高吞吐

    CynosDB是腾讯云自研的新一代高性能高可用的企业级分布式云数据库.融合了传统数据库.云计算与新硬件的优势,100%兼容开源数据库,百万级QPS的高吞吐,不限存储,价格仅为商用数据库的1/10. C ...

  4. sqlserver 处理百万级以上的数据处理与优化

    一处理百万级以上的数据提高查询速度的方法: 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应 ...

  5. sql百万级查询优化(转)

    < 数据库技术内幕 > 处理百万级以上的数据提高查询速度的方法: 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进 ...

  6. 数据库SQL优化大总结之 百万级数据库优化方案(转载)

    网上关于SQL优化的教程很多,但是比较杂乱.近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充. 这篇文章我花费了大量的时间查找资料.修改.排版,希望大家阅读之后,感觉 ...

  7. 百万级PHP网站架构工具箱

    在了解过世界最大的PHP站点,Facebook的后台技术后,今天我们来了解一个百万级PHP站点的网站架构:Poppen.de.Poppen.de是德国的一个社交网站,相对Facebook.Flickr ...

  8. mysql 百万级数据库优化方案

    https://blog.csdn.net/Kaitiren/article/details/80307828 一.百万级数据库优化方案 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 wher ...

  9. sql处理百万级以上的数据提高查询速度的方法

    原文:http://blog.csdn.net/zhengyiluan/article/details/51671599 处理百万级以上的数据提高查询速度的方法: 1.应尽量避免在 where 子句中 ...

  10. 百万级PHP网站Poppen.de的架构分享心得

    在了解过世界最大的PHP站点,Facebook的后台技术后, 今天我们来了解一个百万级PHP站点的网站架构:Poppen.de.Poppen.de是德国的一个社交网站,相对Facebook.Flick ...

随机推荐

  1. 批量操作DB

    批量操作DB 记录一次批量操作数据库,sqlServer服务器参数过多问题. 1.案例引入 对接另一个批发系统B,B需要把订单那些数据弄到系统A中.就是一个批量插入,批量更新的问题.系统保密需要,本文 ...

  2. Windows下Cmake+VS2017+OpenSceneGraph环境搭建及采坑

    一.资料准备 1.OSG源码官网下载地址:http://www.openscenegraph.org/index.php/download-section/stable-releases或者OSGCh ...

  3. Oracle 强行断开用户连接的方法

    1.查找目标用户的当前进程 select sid,serial# from v$session where username='test'; 2.使用上述语句会返回一个进程列表,每行有两个数字,用数字 ...

  4. 必看!2025 年颠覆测试行业的 10 大 AI 自动化测试工具/平台(上篇)

    大家好,我是狂师. 上周小孩子生病,住院照顾,停更了几天. 各位看官,等着急了吧,之前有粉丝后台留言,想了解学习一下,AI这么火爆,那市面上AI与自动化测试结合起来的有哪些推荐的工具/平台. 今天就这 ...

  5. 正则表达式--java进阶day06

    1.正则表达式 2.正则表达式的规则.使用 3.字符类讲解 如图,单独一个a满足正则表达式的规则,所以返回true 当删去[]后,正则表达式中的规则就会变为必须是abc,否则不满足条件,即使有一个a ...

  6. 【JDBC第7章】DAO及相关实现类

    第7章:DAO及相关实现类 DAO:Data Access Object访问数据信息的类和接口,包括了对数据的CRUD(Create.Retrival.Update.Delete),而不包含任何业务相 ...

  7. 【Linux】5.10 输入输出重定向

    Shell 输入/输出重定向 大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端.一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端.同样,一个命令 ...

  8. ro在xe10.3上的安装

    在学习研究RO. RO9.2.101.1295在xe10.3上安装遇到新问题.记录处理的办法: 没有采用执行exe安装的方法.而是采用复制源代码后编译安装. 1.把生成的bpl.dcp安装到默认目录, ...

  9. LazyAdmin打靶笔记

    参考视频:https://www.bilibili.com/video/BV16Tc8eCEKZ/?spm_id_from=333.1387.homepage.video_card.click Nma ...

  10. WPF旋转板栈设计一例

    效果图 项目中需要做一个机台的平面视图,点击其中一个料盒时,弹出该料盒的料管列表,用WPF示例做了一下,效果如下: 用户控件XAML 1 <UserControl x:Class="W ...