ToB企服应用市场:ToB评测及商务社交产业平台

标题: OceanBase + DolphinScheduler,搭建分布式大数据调度平台的实践 [打印本页]

作者: 梦应逍遥    时间: 2024-10-16 14:07
标题: OceanBase + DolphinScheduler,搭建分布式大数据调度平台的实践
本文整理自白鲸开源联合首创人,Apache DolphinScheduler PMC Chair,Apache Foundation Member 代立冬的演讲。主要介绍了DolphinScheduler及其架构、DolphinScheduler与OceanBase 的联合大数据方案。  DolphinScheduler是什么?

Apache DolphinScheduler,作为一款云原生且配备强大的可视化界面的大数据工作流调度平台,可资助用户简化数据工作流的编排过程,通过高效办理复杂大数据任务间的依赖与触发难题,确保各类大数据任务可以或许即插即用,融入各类数据分析与数据发掘场景中,提供全流程可视化操作能力。如今,已有超过3000家公司在其生产环境中成功部署并应用了Apache DolphinScheduler。

Apache DolphinScheduler UI 界面

DolphinScheduler 调度平台具备简朴易用、架构设计上保证体系高可靠性、高扩展性和云原生能力,拥有丰富的使用场景。

从 DolphinScheduler 调度平台界面可以或许看出来,DolphinScheduler 会及时关注任务运行状态,同时,可以直观地看到每个工作流的每个环节,可以轻松在线回溯任务状态。
DolphinSchedule 调度平台接纳插件式设计,支持多数据源格式,如OceanBase、MySQL、PostgerSQL、Hive、Impala、Spark、ClickHouse、Oracle、SQLServer、Db2、MongoDB 等可视化的数据源,并支持自由扩展数据源、支持可视化配置。方便数据源统一会集管理,一次配置,随处使用,大大镌汰配置修改带来的工作量,也方便后续数据血缘关系的处理。
同时,DolphinSchedule 支持多数据源数据的加工、数据导入脚本统一管理,包罗 Python、Shell、Jar 包、R 等多种格式。多层级结构确保文件管理层次清楚,不消考虑后续文件应该存储在哪一台机器上,制止资源文件散乱难以维护。

Apache DolphinScheduler 调度平台
此外,DolphinSchedule 调度体系也非常灵活,满意多种业务场景须要,工作流流程支持多战略启动、优先级、告警配置,任务流程多战略支持确保 ETL 过程可管理:

·   支持选定节点执行 ETL 任务流。
·    支持串行与并行两种执行方式。
Dolphinscheduler 架构解析

下图是 Dolphinscheduler 的架构图,最上面的 UI 是用户可以感受到的界面, Open API 可以给 UI 提供调用接口,也方便第三方对接。对于 Open API 这一层,调度最关键的是 MasterSever 和 WorkerSever ,MasterSever 的职责是分配任务,WorkerSever 的职责是担当 MasterSever 分的任务,然后执行,最后把执行效果陈诉给 MasterSever。由于担心所有的压力都会集在 Active MasterSever 上,因此做了无中心化的设计架构。

ApacheDolphin Scheduler 架构

在最初的架构设计中,MasterSever 和 WorkerSever 完全隔离,WorkerSever 拿到任务之后,把任务更新到数据库里面,导致 WorkerSever 对于数据库造成的压力非常大。比如联通把省公司的数据都汇总到数据中心,有一百多台的 WorkerSever 节点,WorkerSever 又做了数据库的毗连池,数据库的压力会非常大。WorkerSever 负责执行各种工作流,这也是调度体系经常会用到的,我们渴望工作流和工作流之间是有设计方法的,比如数仓按照数仓的分层原则,一层一层之间非常地清楚。
我们有一个依赖类型,这个依赖可以跨项目、跨工作流去依赖其他不同频度的任务,比如说一个天任务,依赖一个小时的任务,这里有一个依赖节点就可以了。团体上有一个注册中心,WorkerSever 都可以担当注册,WorkerSever 挂了,MasterSever 规复,MasterSever 挂了,有其他的 MasterSever 监听到,其他的 MasterSever 担当它的工作流,举行故障 MasterSever 规复。
MasterSever 1.0 时代的设计是无中心化的,遇到的问题是怎样让 MasterSever 同时工作。我们先设计了一个简朴的方式,先抢锁,然后去工作,跟踪的时候发现 Zookeeper 去充当锁,或是 MasterSever 去充当锁,抢锁的时间须要 50 -60 ms,非常慢。于是,我们又做了设计上的优化,首先是抢锁,抢到锁之后,把整个工作流界面做成一个图,然后去构建工作流,最终再把每个运行的任务形成任务实例。这是 1.0 时代的设计,厥后发现性能比较低。 


—1.X原先设计
在 Dolphinscheduler 2.0 时开始找分布式锁,我们根据 MasterSever 的算法,支持多种拓展,来找到它们的槽位。先去做分片,注册 MasterSever 会生成一个分片编号,Command 是执行的工作流,在去分布式锁的时候举行了这样的一个设计,根据槽位查询数据库,然后会生产工作流的实例,交给 Worker 执行,根据分片的槽位去计算。这就是去分布式锁设计。


去分布式锁设计—新版本设计
1.0 版本对线程的使用非常重,纵使是 8C16G 的机器也须要配置几百个线程。在 2.0 时代,我们举行了线性模式的拆分、改造。MasterSchedulerService ThreadPool 负责从 Command 表中分片获取要执行的 Command, 构造工作流实例,拆分待执行任务,生成任务实例,提交任务队列,启动 WorkFlowExecuteThread 处理。WorkFlowExecuteThread工具,负责构建 DAG, DAG 拆分,生成任务实例,提交到任务队列;同时负责处理任务状态和工作流状态变化,还负责任务/工作流超时监控。
新版本的 Master 端有那些变化呢?


Master 线程模型重构—2.X 版本设计

做了体系的架构改造之后,吞吐量提拔了 20 倍。当然到了 3.0 版本,提拔的倍数会更多。随着架构的演进,吞吐量会有更大的提拔。这也正式开源故意思的地方:各人都可以提出自己的想法,把开源最新的思想在项目中实现,并被成千上万的用户使用,在使用中完满项目,这就是开源最大的魅力。

改造后的架构效果—吞吐 20 倍提拔
Dolphinscheduler & OceanBase 办理方案

下图是 Dolphinscheduler 和 OceanBase 的办理方案,架构分为三层,底层是各种文件体系,中间层是分析引擎如 Spark、Flink、Hive;上层是应用层。从存储到收罗、计算,到转化,不停到 BI,最后到看到效果的数据,充当了一个箭头的作用。


DolphinScheduler + OceanBase 办理方案
Dolphinscheduler基于 OceanBase 高可用、低成本、高扩展、高性能特性有了一些学习和思索。由于OceanBase 基于 Paxos 协议保证强同等性,因此我们在做分布事件的时候,数据强同等性以及不重、不丢都是必须要保证的。别的我们非常看好OceanBase 的一些特性,比如在扩容时,主动实现负载平衡;再比如低成本,无需太多组件,而且可以随时玩起来。
那么,OceanBase 在 DolphinScheduler 里发挥了什么作用呢?
首先,作为 DolphinScheduler 的数据源,方便用户更简朴快捷创建 SQL 任务。数据存储在 OceanBase 里,简化数据工作流处理,方便把整个工作流串联起来,用 SQL 举行处理,以是我们对于 SQL 也做了很多的优化,包罗执行多少个 SQL,做了很多的设计。得益于 OceanBase 数据源的高扩展能力,联合 OceanBase 高压缩比的低成本优势,让用户在大规模使用时受益。
其次,作为 DolphinScheduler 元数据根本依赖,存放 DolphinScheduler 本身的各项关键信。Dolphinscheduler 底层的表数据量增量非常快,但是调度的任务一般不能删,须要生存一两年数据的时候,团体数据量相当复杂,原来实验使用普通表存储,但是汇总数据的时候很麻烦。如今我们用一个分布式数据库存储,让 OceanBase 充当元数据库,保证调度体系的稳定性。当然,在稳定性上我们会慎之又慎,须要做很多的稳定性测试,也渴望有更多的社区小同伴可以加入共同测试。

DolphinScheduler Roadma

DolphinScheduler Roadma 依照社区需求和关注度来安排功能优先级, 做哪些功能由邮件讨论决定。我们计划动态任务插件支持、支持远程任务调度、Remote Task、更好支持 Streaming Task、K8S Operator、更好支持 Streaming Task、Easy to use(更多请参考:https://github.com/apache/dolphinscheduler/issues/13459)。在本年,我们支持 SeaTunnel Zeta 引擎选择,SeaTunnel Zeta 是我们花了10个月、投入了上百人研发的别的一个数据平台的产物,是 SeaTunnel 专有的同步引擎。


Apache DolphinScheduler Use Case
Dolphinscheduler 在海表里拥有丰富的用户根本,如中国联通、Shein、荔枝 PM、360 等,渴望Dolphinscheduler 调度体系能为更多的用户带来便利。Dolphinscheduler 有一个很着名的标语:工具选的好、放工回家早、调度用的对,半夜安心睡。渴望调度体系和 AI 的联合,可以为各人的业务赋能,为各人的身体松绑。
让中国的开源真正地走向全球,让更多人知道中国的开源项目也很锋利,是我们的愿景。欢迎各人参与到社区讨论和共建里来,参与到中国开源项目标建立中来。
附:
OceanBase GitHub项目地址:https://github.com/oceanbase/oceanbase
Dolphinscheduler 项目地址:https://github.com/apache/dolphinscheduler
Dolphinscheduler 官网:  https://dolphinscheduler.apache.org

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4