快速创新和实验,以越来越快的速度为客户提供价值。提供极高的数据质量和极低的错误率。通过不同的人以及技术和环境进行协作,来提供交互价值。测量、监控清晰,结果透明。
04 DataOps 核心组件
1.Job Scheduler
提供工作流的编排、离线数据研发、有助于数据开发人员专注于业务逻辑的实现,提升开发效率。
2.DevTools
主要提供传统脚本语言sql、python 等开发工具,快速与调度平台集成,方便使用。
3.Migration and Deployment tools
数据迁移和部署管理工具。针对开发、测试环境是网络隔离的行业,需提供有效的导入、导出功能合理的部署到生产环境中。
4.管理与监控工具
对系统管理员友好的离线任务运维相关的管理、监控、告警工具。
二、Job Scheduler
接下来和大家介绍一下调度系统对比
01 主流调度系统优缺点
Oozie
Oozie 是一个基于工作流引擎的开源框架,提供对Hadoop MapReduce、Pig Jobs的任务调度与协调。Oozie 需要部署到 Java Servlet 容器中运行。主要用于定时调度任务,多任务可以按照执行的逻辑顺序调度。
Airflow
Airflow 是一个 Airbnb 的 Workflow 开源项目,使用 Python 编写实现的任务管理、调度、监控工作流平台。Airflow 是基于 DAG(有向无环图)的任务管理系统,可以简单理解为是高级版的 crontab,但是它解决了 crontab 无法解决的任务依赖问题。与 crontab 相比 Airflow 可以方便查看任务的执行状况(执行是否成功、执行时间、执行依 赖等),可追踪任务历史执行情况,任务执行失败时可以收到邮件通知,查看错误日志。
Apache Dolphinscheduler
DolphinScheduler 是一个分布式去中心化,易扩展的可视化 DAG 工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
Control-M
Control-MM 是一个商业版的跨平台的作业调度管理软件,功能强大,可编程性较弱。
Azkaban
Azkaban 是由 Linkedin 公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban 使用 job 配置文件建立任务之间的依赖关系,并提供一个易于使用的 web 用户界面维护和跟踪你的工作流。Azkaban 要求所有节点对等部署,但是某些场景只要支持高可用不需要节点完全对等。
02 调度系统的服务
Timer Service
提供 crontab 表达式的定时服务,按固定的周期执行工作流。
DAG Compution
DAG 计算经常指的是将计算任务在内部分解成为若干个子任务,将这些子任务之间的逻辑关系或顺序构建成 DAG(有向无环图)结构。
Task Execution
任务运行是由调度系统的执行引擎根据任务的类型、参数、环境、引用的数据源等来执行任务。
Environment Manage
针对分布式调度引擎,需要提供节点管理功能,便于任务在不同的节点来执行。从而超越单机限制,实现任务的大规模运行。
Alert Service
当任务执行失败、超时以及在指定的时间未完成的时候,需要通知用户以及系统管理员及时的做出处理。
What’s more?
除以上功能,我们希望调度能提供环境、数据源管理功能。工作流配置环境变量之后,所有任务都能直接引用它。数据源可以根据不同的任务类型,以注入的方式提供给其他任务。
03 Job 的元数据
Execution Cycle
(minutes,hourly,daily,weekly & monthly)
任务执行周期(分钟,每小时,每天,每周和每月)。
Dependency Meta
任务依赖的上游元数据信息(文件、表等等)。
Output Meta
任务依赖的下游元数据信息(文件、表等等)。
Dependency Meta Classfication
对依赖的元数据进行分类、区分来源。
Dependency Meta Source
对任务依赖的元数据逆向解析,获取上下游任务,为工作流自动编排以及触发提供合理的依据。
Job Parallel Execution Info(parallel,serial)
控制任务的并行执行状态(并行、串行)。
Job Type
任务类型(SQL、SHELL、PYTHON、PROCEDURE 等等)。
04 Job 开发
Intergration IDE(script language,shell,sql,python etc)
集成IDE开发环境(script language,shell,sql,python 任务等)。
configurable resource file(jar,spark etc)
可配置的资源文件(jar,spark 无法通过文本编辑的任务等)。
custom components
定制化的组件,例如离线数据平台中,将数据同步作为特定的组件,只需要对数据同步做简单的配置就可以实现数据同步的过程。
Third Party Job
第三方作业,由特定的应用系统自定生成脚本,来实现作业目标。
三、第三方作业集成
有两种方式与第三方作业集成,主要用第二种方式处理。
第一种方式:pull
缺点:需多次在第三方系统开发,以及在调度系统中配置调度。
第二种方式:push
01 任务的执行和通知
02 数据集成的配置样例
以上列举了第三方系统集成的配置样例。
调度系统提供可编程的接口,实现环境信息的注入功能。在第三方系统中只需要声明不同类型的数据源,不需要配置各数据源的详细信息例如(IP、端口、用户名、密码等),这部分在调度系统配置数据源和环境信息注入给任务。再由任务从参数中解析后访问对应数据源和环境。这样可以简化 ETL 任务数据源的管理功能。
03 作业的编排
传统的作业编排是用户通过拖拉拽连线的方式来实现, 我们的改进点:
04 作业的影响分析
由于有元数据信息,作业的影响分析非常简单。
05 低代码平台
我的分享就到这里,谢谢大家,也欢迎大家在私下与我交流沟通。
参与贡献
随着国内开源的迅猛崛起,Apache DolphinScheduler 社区迎来蓬勃发展,为了做更好用、易用的调度,真诚欢迎热爱开源的伙伴加入到开源社区中来,为中国开源崛起献上一份自己的力量,让本土开源走向全球。
贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。
社区汇总了以下适合新手的问题列表:github.com/apache/dolphinscheduler/issues/5689
非新手问题列表:github.com/apache/dolphinscheduler/issues?q=is%3Aopen+is%3Aissue+label%3A%22volunteer+wanted%22
如何参与贡献链接:dolphinscheduler.apache.org/zh-cn/community/development/contribute.html
来吧,DolphinScheduler开源社区需要您的参与,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是巨大的。
参与开源可以近距离与各路高手切磋,迅速提升自己的技能,如果您想参与贡献,我们有个贡献者种子孵化群,可以添加社区小助手微信(Leonard-ds) ,手把手教会您( 贡献者不分水平高低,有问必答,关键是有一颗愿意贡献的心 )。
添加小助手微信时请说明想参与贡献。
来吧,开源社区非常期待您的参与。