前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据平台的那些事(2)

数据平台的那些事(2)

作者头像
哒呵呵
发布2019-07-08 11:31:00
6200
发布2019-07-08 11:31:00
举报
文章被收录于专栏:鸿的学习笔记鸿的学习笔记

调度平台简述

数据平台中的地位

任务调度系统在数据平台中算是非常核心的组件了。在日常的数据处理中,定时运行一些业务是很常见的事,比如定时从数据库将新增数据导入到数据平台,将数据平台处理后的数据导出到数据库或者是文件系统。

可以这么说,任务调度系统类似于军队的司令,指挥着数据平台上的各个组件的运行,时刻监督着任务的运行情况。

与资源调度系统的区别

在数据平台里,有着另一种调度系统,称为资源调度系统。虽说都是调度,但是两者有本质的区别:

  • 任务调度系统负责一个任务何时运行,何时结束以及正确的处理任务之间的依赖关系。流程的正确性是核心;
  • 资源调度系统更关注系统物理资源的分配,例如CPU、内存等的使用。系统资源的最大化利用才是核心。
市面上有哪些产品

任务调度系统是一个简单又不简单的工具。说它简单,是因为相对于数据平台的计算引擎、存储系统等分布式系统,它的复杂度很低;说它不简单,是因为一个优秀的任务调度系统不仅需要和数据平台的各种组件对接,甚至还需要引入权限控制、监控报警,质量分析等功能。

现在市面上开源的任务调度系统可以参考https://github.com/pditommaso/awesome-pipeline和https://github.com/meirwah/awesome-workflow-engines,国产的调度系统也有阿里的TBSchedule、Easy Scheduler、腾讯的Lhotse、当当的elastic-job、唯品会的Saturn等。

原始的crontab

最简单的任务调度系统莫过于Linux系统自带的crontab,使用简单,运行稳定,特别是crontab语法影响了后续所有的任务调度系统。但是在刚起步时使用crontab无可厚非,随着调度任务的增多,相互之间又有着依赖,crontab就远远满足不了开发的需求了。因此诞生了各种各样的开源或者自研的任务调度系统。

调度架构种类

市面上的调度系统大致可以分为两类:定时分片类作业调度系统和DAG工作流类调度系统。

定时分片类作业调度系统

定时分片类作业调度系统主要时为了使得crontab可以运行在分布式系统环境下也就是定时任务的分布式管理和数据分片运行。

关注的点:

  • 数据分片:将一个大任务通过某种自定义规则拆分成一个个小任务分布在在各个服务器上运行,因此需要考虑任务的负载均衡、可重试等。
  • 准时触发和高可用:既然是定时任务,那就需要准确、准时的触发相关任务和保证服务的高可用。
典型例子

Elastic-Job、Easy Scheduler、

DAG工作流类调度系统

DAG工作流类调度系统,主要是解决crontab任务直接的依赖关系,也就是任务之间的依赖关系。那么作为DAG类工作流调度系统自然要有丰富灵活的任务触发机制,例如时间、外部任务完成度等。

典型例子

Apache Airflow、Oozie、Azkaban

总结

在数据平台中,因为背靠着分布式的计算引擎,任务的分片等功能往往是交由计算引擎实现;且数据平台内的

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

因此DAG工作流类调度系统在数据平台中使用的更加广泛(也因为使用者更喜欢使用Declarative API,比如SQL这种,告诉平台要做什么,而不是要怎么做)。

当然这两类系统的并不是完全冲突的,都是crontab衍生出来的变体,但是从实现上来看,两者又有根本的冲突。定时分片类作业调度系统侧重于数据分片、负载均衡,DAG工作流类调度系统侧重于任务之间的依赖,这导致了在架构设计上的不同,进而影响到实现。

这两种任务调度系统的鸿沟至今还没看到一款软件能够弥补,不过就像计算引擎出现了Dataflow模型统一批处理和流处理,相信不久的将来也会有相应的理论和实现去弥补两类调度系统的差别。

参考文章: https://github.com/pditommaso/awesome-pipeline https://github.com/meirwah/awesome-workflow-engines https://blog.csdn.net/colorant/article/details/75090158 https://www.cnblogs.com/smartloli/p/4964741.html https://www.cnblogs.com/davidwang456/p/9057839.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鸿的笔记 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 调度平台简述
    • 数据平台中的地位
      • 与资源调度系统的区别
    • 市面上有哪些产品
    • 原始的crontab
    • 调度架构种类
      • 定时分片类作业调度系统
        • 典型例子
      • DAG工作流类调度系统
        • 典型例子
    • 总结
    相关产品与服务
    数据库
    云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档