首页 > 其他分享 >Apache DolphinScheduler + OceanBase,搭建分布式大数据调度平台的实践

Apache DolphinScheduler + OceanBase,搭建分布式大数据调度平台的实践

时间:2024-11-07 13:46:10浏览次数:4  
标签:Dolphinscheduler OceanBase DolphinScheduler 调度 MasterSever 任务 Apache

本文整理自白鲸开源联合创始人,Apache DolphinScheduler PMC Chair,Apache Foundation Member 代立冬的演讲。主要介绍了DolphinScheduler及其架构、DolphinScheduler与OceanBase 的联合大数据方案。

DolphinScheduler是什么?

Apache DolphinScheduler,作为一款云原生且配备强大的可视化界面的大数据工作流调度平台,可帮助用户简化数据工作流的编排过程,通过高效解决复杂大数据任务间的依赖与触发难题,确保各类大数据任务能够即插即用,融入各类数据分析与数据挖掘场景中,提供全流程可视化操作能力。

目前,已有超过6000家公司在其生产环境中成功部署并应用了Apache DolphinScheduler。

Apache DolphinScheduler UI 界面

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

  • 高可靠性
    • 架构设计上,去中心化的多 Master 和多 Worker , 具备高可用能力。
    • 采用任务队列避免过载,不会造成机器卡死。
  • 简单易用
    • 拥有一键部署能力,简化部署,易维护。
    • 可视化界面,所有流程定义都是可视化,通过拖拽任务形成工作流模板。
    • 支持 Open API 、Python 方式与第三方系统对接。
  • ·高扩展性、云原生能力
    • 支持自定义任务类型。
    • 调度能力随集群线性增长。
    • 弹性伸缩, Master 和 Worker 支持动态上下线。
  • 丰富的使用场景
    • 支持暂停恢复及停止等丰富操作。
    • 支持多租户,权限管理等大数据应用场景。
    • 支持 30+ 种任务类型,如 Spark, Flink,Hive, MR, Python, Shell 等。

从 Apache 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 的架构图,最上面的 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 的线程使用。
  • 使用分片机制获取命令队列。
  • 增加状态事件的处理机制。
  • 增加 Master 与 Master 之间的通信,一个 MasterSever 挂了之后,其他的 MasterSever 会互相的通信。
  • 增加 Master 的缓冲机制,不仅仅是在 MasterSever,在 IPASever上也增加了缓存。

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 充当元数据库,保证调度系统的稳定性。当然,在稳定性上我们会慎之又慎,需要做很多的稳定性测试,也希望有更多的社区小伙伴可以加入共同测试。

Apache DolphinScheduler Use Case

Dolphinscheduler 在海内外拥有丰富的用户基础,如中国联通、Shein、荔枝 PM、360 等,希望Dolphinscheduler 调度系统能为更多的用户带来便利。

Dolphinscheduler 有一个很出名的口号:工具选的好、下班回家早、调度用的对,半夜安心睡。希望调度系统和 AI 的结合,可以为大家的业务赋能,为大家的身体松绑。

让中国的开源真正地走向全球,让更多人知道中国的开源项目也很厉害,是我们的愿景。欢迎大家参与到社区讨论和共建里来,参与到中国开源项目的建设中来。

附:

本文由 白鲸开源 提供发布支持!

标签:Dolphinscheduler,OceanBase,DolphinScheduler,调度,MasterSever,任务,Apache
From: https://www.cnblogs.com/DolphinScheduler/p/18532013

相关文章

  • 8+ 典型分析场景,25+ 标杆案例,Apache Doris 和 SelectDB 精选案例集(2024版)电子版上线
    当前,各企业正面临前所未有的数据增量,不仅体现在数据规模的急剧上升,还体现在数据的类型多样性和产生速度的加快。数据体量大固然蕴藏着更大的潜力及可能性,但如何有效利用这些数据,解决实际问题、赋能业务增长,才是各企业发展的关键。因此,企业亟需搭建高效的数据处理与分析平台,以帮......
  • DolphinScheduler 限制秒级别的定时调度
    背景DolphinScheduler定时任务配置采用的7位Crontab表达式,分别对应秒、分、时、月天、月、周天、年。在团队日常开发工作中,工作流的定时调度一般不会细化到秒级别。但历史上出现过因配置的疏忽大意而产生故障时间,如应该配置每分钟执行的工作流被配置长了每秒执行,造成短时......
  • OceanBase V4.3.3,首个面向实时分析场景的GA版本发布
    在10月23日举办的OceanBase年度发布会上,我们怀着激动之情,正式向大家宣布了 OceanBase4.3.3GA版的正式发布,这也是OceanBase为实时分析(AP)场景打造的首个GA版本。2024年初,我们推出了4.3.0版本,作为迈向实时分析的关键一步,引入了基于LSM-Tree架构的列存引擎。经过几十......
  • 百丽:从Mycat 到OceanBase 4.x 的实践
    百丽时尚集团,作为大型的时尚鞋服集团,业务遍布中国超过300个城市,直营门店数量超9,000家。集团构建了以消费者为中心的垂直一体化业务模式,涵盖时尚洞察、商品企划、设计研发、生产制造、商品管理、DTC零售及客户运营的全价值链,每个环节都应用了数字化技术,并坚定不移地加大科技投......
  • Pbootcms网站,从Apache切换为Nginx后网站打不开
    打开网站设置登录宝塔面板。选择需要配置的网站,点击“设置”。进入伪静态设置在网站设置页面中,找到并点击“伪静态”选项卡。添加Nginx伪静态规则在伪静态设置中,清空原有规则或选择自定义规则。输入以下Nginx伪静态规则:location/{if(!-e$request_f......
  • 数据可视化——Apache ECharts实现
    目录1、什么是ECharts     2、官网入口3.工具准备 4.插入html文件5.小例子1、什么是ECharts             ECharts(EnterpriseCharts,商业级数据图表)是一个使用JavaScript实现的开源可视化库,能够流畅地运行在PC和移动设备上,兼容当前绝大部分浏......
  • Apache 配置出错常见问题及解决方法
    Apache配置出错常见问题及解决方法一、端口被占用问题问题描述:在启动Apache时,出现“Addressalreadyinuse”或类似的错误提示,这意味着Apache想要使用的端口已经被其他程序占用,导致Apache无法正常启动。原因分析:系统中已经有其他的应用程序在使用Apache......
  • Apache HTTP Sever 的初级操作指南
    Apache初级操作指南摘要:本文详细介绍了ApacheHTTPServer的初级操作方法,包括安装与配置、启动与停止服务、虚拟主机设置以及访问日志与错误日志的查看与分析等内容。通过本文的学习,初学者可以快速掌握Apache的基本操作,为搭建和管理网站奠定基础。一、引言ApacheH......
  • OceanBase 外表
    关于外表-V4.3.3-OceanBase数据库文档-分布式数据库使用文档https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001431964关于外表更新时间:2024-09-3023:00:00编辑分享通常,数据库中的表数据存放在数据库的存储空间中,而外表的数据存储在外部存储......
  • Goby 漏洞发布|Apache Solr /solr/admin/info/properties:/admin/info/key 权限绕过漏
    漏洞名称:ApacheSolr/solr/admin/info/properties:/admin/info/key权限绕过漏洞(CVE-2024-45216)EnglishName:ApacheSolr/solr/admin/info/properties:/admin/info/keyPermissionBypassVulnerability(CVE-2024-45216)CVSScore:7.3漏洞描述:ApacheSolr是一个开源搜索服......