《基于 DolphinScheduler 构建分布式大数据调度平台实践_代立冬.pdf》由会员分享,可在线阅读,更多相关《基于 DolphinScheduler 构建分布式大数据调度平台实践_代立冬.pdf(34页珍藏版)》请在三个皮匠报告上搜索。
1、代立冬Apache DolphinScheduler PMC ChairApache Foundation Member Apache 孵化器导师基于基于 DolphinSchedulerDolphinScheduler构建分布式大数据调度平台实践构建分布式大数据调度平台实践Contents目 录01Apache DolphinScheduler-新一代工作流任务调度平台介绍02DolphinScheduler 架构设计迭代实践03OceanBase 数据源实践04DolphinScheduler Roadmap01Apache DolphinScheduler新一代工作流任务调度平台介绍Do
2、lphinSchedulerDolphinScheduler 是一个云原生并带有强大可视化界面的大数据工作流调度平台Apache DolphinScheduler 简介目前已累计有 3000+公司在生产上使用。DS 致力于在数据工作流编排中“解决复杂的大数据任务间的依赖及触发关系,让各大数据任务类型开箱即用”Apache DolphinScheduler UI简单易用高可靠性去中心化的多 Master 和多 Worker,自身高可用能力采用任务队列来避免过载,不会造成机器卡死一键部署 简化部署,易维护可视化界面,所有流程定义都是可视化,通过拖拽任务形成工作流模板支持 Open API 方式与第
3、三方系统对接Apache DolphinScheduler 调度平台特点高扩展性、云原生能力丰富的使用场景支持暂停恢复及停止等丰富操作支持多租户,权限管理等大数据应用场景支持 30+种任务类型,如 Spark,Flink,Hive,MR,Python,Shell 等支持自定义任务类型调度能力随集群线性增长弹性伸缩,Master 和 Worker 支持动态上下线Apache DolphinScheduler 调度平台数据加工平台任务监控总览流程实例状态查看任务执行状态回溯任务执行日志查看数据源管理:可视化配置、多数据源格式支持1.支持可视化的数据源包括:MySql、PostgerSql、Hive
4、、Impala、Spark、ClickHouse、Oracle、SqlServer、DB2、MongoDB等。平台采用插件式设计,支持自由扩展数据源支持。2.可视化的数据源管理,数据源统一集中管理,一次配置,到处使用,大大减少配置修改带来的工作量。也方便后续数据血缘关系的处理数据源管理:可视化配置、多数据源格式支持1.支持多数据源数据的加工、数据导入导入脚本统一管理,包括python、shell、jar包、R等多种格式。2.多层级结构确保文件管理层次清晰,避免资源文件散乱难以维护。数据源管理:可视化配置、多数据源格式支持任务流程多策略支持确保ETL过程可管理:支持任务失败策略选择,失败继续或结
5、束支持多种通知策略1.失败发送通知2.成功发送通知3.全部通知4.全部不发通知支持优先级设定,确保高优先级流程优先执行支持选定节点执行ETL任务流支持串行与并行两种执行方式02DolphinScheduler 架构设计迭代实践数据源管理:可视化配置、多数据源格式支持去分布式锁设计1.X原先设计Master现状MasterSchedulerService获取分布式锁同时轮询command生成ProcesslnstanceMasterExecThread构建DAG轮询工作流实例生成任务实例MasterTaskExecThread提交执行任务轮询任务状态取消/暂停/停止任务MasterWorkerW
6、orkerWorkerDBZKClusterAccess LockSend TaskSend TaskSend Task去分布式锁设计新版本设计Master根据自己的分片编号采用合适的算法计算属于自己的command的槽位Master根据槽位查询数据库获得command,井生成processlnstance构造DAG,生成任务实例,提交执行任务MasterWorkerWorkerWorkerDBSend TaskSend TaskSend Task根据自己的分片编号计算Command槽位Master线程模型重构2.X版本设计MasterSchedulerServiceThreadPoolWor
7、kFlowExecuteThreadAPIStateEventExecuteServiceThreadPoolStateWheelExecuteThread负责从 Command 表中分片获取 command,构造工作流实例,启动 WorkFlowExecuteThread 处理负责构建 DAG,DAG 拆分,生成任务实例,提交到任务队列;同时负责处理任务状态和工作流状态变化负责接收其他 Master/Worker 发过来的任务状态和工作流状态变化事件,并提交 WorkFlowExecuteThread 状态处理负责任务/工作流超时监控新版本的Master端有那些变化01大幅减少Master的
8、线程使用02使用分片机制获取命令队列03增加状态事件的处理机制04增加Master与Master之间的通信05增加Master的缓冲机制改造后的架构效果吞吐20倍提升050002500300035001master+1worker1 master+2worker1 master+3workertask throughputMaster:100 threads Worker:100 threads03OceanBase 数据源实践DolphinScheduler&OceanBase 解决方案OceanBase 特性高可用 基于 Paxos 协议,强一致性 少数副本故障,数据
9、不丢,服务不停低成本 不依赖高端硬件,降低成本 极致的压缩比,节省成本 兼容 MySQL 协议与语法 降低业务改造迁移成本 降低DBA学习成本高扩展 在线进行水平扩、缩容 自动实现负载均衡高兼容DolphinScheduler&OceanBase 解决方案OceanBase 在 DolphinScheduler 承担数据源之一方便OceanBase 用户更简单快捷创建 SQL 任务低成本 极致的压缩比,节省成本 多租户,集群资源充分复用高扩展 存储海量数据 性能和容量可线性扩展OceanBase 承担 DolphinScheduler 元数据库存放 DS 本身的各项关键信息高可用 保障服务不间
10、断 容量不足时,可线性扩展 性能不足时,可线性扩展线性扩展04DolphinScheduler RoadmapApache DolphinScheduler 近期进展支持 SeaTunnel Zeta 引擎选择解决多数据源数据每日出入数据库以及每日出入仓同步数据问题,数据集群规模几十台,日均记录数上千亿,日均数据量在 100T 以上。解决从MySql,日志文件、Presto、Kafk a、Spa rk、ClickHouse 以及 Hudi 之间数据同步问题,覆盖数十台集群。动态任务插件支持 Remote Task 更好支持 Streaming Task K8S Operator 更好支持 St
11、reaming Task Easy to use更多请参考:https:/ Roadmap 有更多建议,欢迎邮件讨论Apache DolphinScheduler Roadmap总体依照社区需求和关注度来安排功能优先级,做哪些功能由邮件讨论决定联通数科早期使用原商业调度系统支撑着全域数据平台加工与调度,以接口机配合Shell(HiveSQL)为主的开发编排运维模式,处理日均数万的流程实例和日均上百万的 Job 作业,对比闭源调度工具、Airflow、Azkaban 后,最终选择 DS。满足业务需求和调度功能要求满足大数据量要求用户使用成本低Apache DolphinScheduler Use
12、 Case高性能、大批量数据调度早期使用 Airflow 调度全球任务,但因为分布式支持问题、无可视化问题导致系统开发效率和稳定性堪忧,同时也无法支持 K8S 和全球的云原生部署。选择从Airflow 迁移至 DS。全球云部署、K8S支持分布式去中心化以保证稳定全量替换 Airflow解决全球大数据调度易用问题,赋能分析团队快速开发调度任务全球云部署、易用数据开发过去大数据调度使用SQL/Shell/Python脚本和其他大数据组件完成整个AI流程,面临不易用且难复用问题。使用基于DS的AI开发平台后,荔枝FM将获取数据、数据预处理、模型训练、模型预测、模型评估和模型发布过程抽象成组件,用 D
13、AG 串联,使用拖拽和配置的方式实现低代码开发。实现对海量数据存算可以复用ML流程DAG 执行引擎AI/ML Ops调度融合Apache DolphinScheduler Use Case 360的应用321678459资源文件的在线上传,管理jar 包不怕丢实现集群高可用集群去中心化支持多租户咱俩不能用一个账号权限管理我只能访问授权的项目和资源各种复杂调度定时调度、依赖调度、手动调度丰富的任务类型可视化分布式易扩展无单点问题资源不够了要扩容spark shell MR HIVE python拖拽生成 DAG工作流任务失败重试/告警你想重试几次 每次间隔多久失败要不要发邮件告诉你?Apache
14、 DolphinScheduler SloganSUCCESS工具选的好调度用的对半夜安心睡下班回家早zApache DolphinScheduler 相关资源官网:https:/dolphinscheduler.apache.orgGitHub:https:/ 站:https:/ PR 开始,-找到带有”easy to fix”标记或者一些非常简单的issue,修复后提交PRThank you!GitHub:/oceanbase/服务号:OceanBase数据库星球论坛:Thank you!GitHub:/oceanbase/服务号:OceanBase数据库星球论坛:Thank you!GitHub:/oceanbase/服务号:OceanBase数据库星球论坛:Thank you!GitHub:/oceanbase/服务号:OceanBase数据库星球论坛: