专栏首页TASKCTL技术交流讨论数据调度平台系统二大种类及其实现方法与流程
原创

数据调度平台系统二大种类及其实现方法与流程

什么是调度系统

调度系统,更确切地说,作业调度系统(Job Scheduler)或者说工作流调度系统(workflow Scheduler)是任何一个稍微有点规模,不是简单玩玩的大数据开发平台都必不可少的重要组成部分。

除了Crontab,Quartz这类偏单机的定时调度程序/库。开源的分布式作业调度系统也有很多,比较知名的比如:oozie,azkaban,chronos,zeus等等,此外,还有包括阿里的TBSchedule,SchedulerX,腾讯的Lhotse以及我司历尽十年磨砺的TASKCTL

作业系统的两大种类

现在市面上的调度系统根据功能性可以分为两类定时类作业调度系统&DAG工作流类作业调度系统这两类系统的架构和功能实现通常存在很大的差异,下面就来跟大家普及一下这两种作业系统的不同之处;

定时类作业系统

定时类系统的方向,重点定位于大量并发的任务分片执行场景;

在实际应用场景中,通常平时维护工作需要定时执行的业务逻辑相对离散无序,仅仅存在一定的简单关联。

例如:

  • 需要定时批量清理一批机器的磁盘空间,
  • 需要定时生成一批商品清单,
  • 需要定时批量对一批数据建索引,
  • 需要定时对一批用户发送推送通知等等。

核心目标基本两点:

1.作业分片逻辑支持:将一个大的任务拆分成多个小任务分配到不同的服务器上执行, 难点在于要做到不漏,不重,保证负载平衡,节点崩溃时自动进行任务迁移等

2.高可用精确定时触发:由于平时经常涉及到实际业务流程的及时性和准确性,所以通常需要保证任务触发的强实时和可靠性

所以"负载均衡,弹性扩容",“状态同步”和“失效转移”通常是这类调度系统在架构设计时重点考虑的特性

DAG工作流类作业调度系统

主要定位于有序作业的调度依赖关系的正确处理,分片执行的逻辑通常不是系统关注的粒度,如果某些作业真的关注分片逻辑,通常交给后端集群(比如MR任务自带分片能力)或者具体类型的任务执行后端去实现。

DAG工作流类调度系统所服务的通常是作业繁多,作业之间的流程依赖比较复杂的场景;

如:大数据开发平台的离线数仓报表处理业务,从数据采集,清洗,到各个层级的报表的汇总运算,到最后数据导出到外部业务系统,一个完整的业务流程,可能涉及到成百上千个相互交叉依赖关联的作业。

所以DAG工作流类调度系统关注的重点,通常会包括:

  • 足够丰富灵活的依赖触发机制(如:时间触发任务,依赖触发任务,混合触发任务
  • 作业的计划,变更和执行流水的管理和同步
  • 任务的优先级管理,业务隔离,权限管理等
  • 各种特殊流程的处理(如:暂停任务,重刷历史数据,人工标注失败/成功,临时任务和周期任务的协同等
  • 完备的监控报警通知机制

小结:这两类系统的定位目标,并不是绝对冲突矛盾的,并且从目前定时类调度系统的发展来看,也需要处理一些复杂的作业间强依赖关系了,比如"微批(少量DAG批量作业处理)"概念的提出。只不过,要同时圆满的支持这两大类需求,从实现的角度来说是很困难的,因为侧重点的不同,在架构上多少会对某些方面做些取舍,当前这两类系统都没有能够做到完美的两者兼顾。

为什么需要调度系统

我们都知道大数据的计算、分析和处理,一般由多个任务单元组成(Hive、Sparksql、Spark、Shell等),每个任务单元完成特定的数据处理逻辑。

多个任务单元之间往往有着强依赖关系,上游任务执行并成功,下游任务才可以执行。比如上游任务结束后拿到 A 结果,下游任务需结合 A 结果才能产出 B 结果,因此下游任务的开始一定是在上游任务成功运行拿到结果之后才可以开始。

而为了保证数据处理结果的准确性,就必须要求这些任务按照上下游依赖关系有序、高效的执行。一个较为基础的处理方式是,预估出每个任务处理所需时间,根据先后顺序,计算出每个任务的执行的起止时间,通过定时跑任务的方式,让整个系统保持稳定的运行。

一个完整的数据分析任务最少执行一次,在数据量较少,依赖关系较为简单的低频数据处理过程中,这种调度方式完全可以满足需求。

然而在企业级场景中,更多的是需要每天执行,如果任务数量较多,在任务启动的时间计算上就将耗费大量时间,另外如果出现上游任务执行时长超出原定预计时间或者运行异常的问题,上述的处理方式将完全无法应对,也会对人力物力造成重复损耗,因此,对于企业数据开发过程来说,一个完整且高效的工作流调度系统将起到至关重要的作用。

写在最后

TASKCTL目前是暂时唯一提出 "无序定时和有序DAG作业流" 完整概念的调度产品。既可以在定时中处理 "微批" 的控制,也能够在DAG作业流中处理 "定时" 的控制。

例如:

  • 在大数据分布式(分片)计算中,对数据进行实时ETL跑批处理,
  • 在ETL作业跑批中,对某个作业或一段分支进行时间窗口内循环定时处理

了解产品详情可以参读:

随着大数据应用需求的不断膨胀,数据处理的复杂度和实时性要求越来越高。TASKCTL作为国内自主研发的专业调度产品,为企业进入大数据2.0时代做好提前布局。

如果有疑问,联系我们

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【开源】etl作业调度工具性能综合对比

    最近遇到了很多正在研究ETL及其工具的伙伴向我们抱怨:同样都在用 Kettle ,起点明明没差异,但为什么别人ETL做的那么快那么好,自己却不断掉坑?

    taskctl官方频道
  • etl作业部署与调度——taskctl管理概述

    TASKCTL是一款功能全面的作业自动化调度技术管理工具。所谓作业,是指部署在网络中不同计算机上的各种程序或系统命令。通过TASKCTL,可以快速将这些作业组织...

    taskctl官方频道
  • 金融服务业etl作业集群统一调度平台搭建

    批量处理是银行业整个信息后台最为重要的技术形态,也是银行核心信息资产数据的分享、传输、演化的重要技术手段。有调查指出,全球70%的数据是经过批量处理得以再次使用...

    taskctl官方频道
  • 【李飞飞团队最新研究】神经任务编程NTP,具有强大泛化能力的机器人学习框架

    【新智元导读】斯坦福大学计算机视觉实验室李飞飞团队的最新研究提出一个新的机器人学习框架:神经任务编程(NTP),在机械臂的物品堆叠、分拣和桌面清理三类任务中,证...

    新智元
  • oracle快速创建一个和已有表一样字段的表

    1、创建B表,和已有的A表一样的字段,不保存A表的数据 create table BBB as select * from AAA where 1= 0

    小小鱼儿小小林
  • ActiveReports 9实战教程(1): 手把手搭建环境Visual Studio 2013 社区版

    ActiveReports 9刚刚发布3天,微软就发布了 Visual Studio Community 2013 开发环境。 Visual Studio Co...

    葡萄城控件
  • Node.Js执行原理图引发的思考

    蛋未明
  • 脚本推荐 | cf-Check - 检查IP是否属于Cloudflare的工具

    检测扫描出的IP是否是用了Cloudflare的CDN,如果是的话那就剔除该IP,该工具的目的就是筛选出真实IP,而不是拿着一个非目标当作目标浪费时间。

    用户1631416
  • SpringCloud微服务实战系列(十三)分布式锁之Redis实现(redisson)

    分布式锁是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,...

    品茗IT
  • 开发运营|餐饮行业如何用小程序吸粉和转化?

    外卖行业的兴起对餐饮业是有很大的帮助,但是因为外卖平台的盈利属性点在于商户抽成。并且商家们都知道了外卖有钱收,但是做下去似乎又不挣钱。而商家们的流量来源基本就是...

    用户1745481

扫码关注云+社区

领取腾讯云代金券