- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 视频嵌入链接 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
DolphinScheduler在百望云的迁移和应用
Migration and application of DolphinScheduler in Baiwang《DolphinScheduler在百望云的迁移和应用》
展开查看详情
1 . DolphinScheduler 在百望云的迁移和应用
2 .目 录 PART1 百望云大数据架构演进 PART2 调度系统选型和迁移 PART3 DS在百望云的大数据应用 PART4 调度管理上的痛点讨论
3 .PART1 百望云大数据架构演进——公司简介 成立于 地点 员工 业务覆盖 201 北京·中关村 700 中国·非洲·东南 5·5·4 亚 1200+ 30万+ 700万+ 3亿+ 集团型企业客户 成长型企业客户 税控服务企业用户 消费者用户 9.26亿 300万 1000万 3000万+ 公有云电子发票开具量 电子发票日均开具量 电子发票每日开具峰值 企业抬头信息 投资方 国家中小企业发展基金
4 .PART1 百望云大数据架构演进——业务简介
5 .PART1 百望云大数据架构演进——客户简介
6 .PART1 百望云大数据架构演进 2018年 2019年4月 2019年9月 2020年 古代 近代 现代1.0 现代2.0 DolphinScheduler Flink/Spark/k8s DolphinScheduler 继续深化使用DS,培养 Flink/Spark Commiter回馈社区。 引入k8s,充分利用硬件资 ETL Automation 源,实现更细粒度的资源 调度。 Spark/HBase 使用DS替代商业调度系统, 利用DS实现任务权限控制、 优先级控制等精细化管理。 Crontab 以Flink+Spark替代上一代 Impala 上线商业调度系统,建立 任务依赖触发关系,任务 方案。 离线时效T+1 并行化,以Spark+Hbase替 实时时效 1分钟 代Impala。 以时间窗口作为任务依 离线时效T+1 赖,所有任务串行,数 据处理以Impala为主。 离线时效T+2
7 .目 录 PART1 百望云大数据架构演进 PART2 调度系统选型和迁移 PART3 DS在百望云的大数据应用 PART4 调度管理上的痛点讨论
8 .PART2 调度系统选型和迁移——选型 DolphinScheduler Azkaban Airflow • UI美观、功能友好直观 • 功能友好直观 • UI美观、功能友好直观 • 管理功能完善 • 比较早的开源调度系统, • 适合以Python为主要语言 优点 • 分布式高可用 有一定用户基础 的公司 • 国内实力团队孵化 • 依赖关系图直观 • 分布式高可用 • 拖拽式配置任务 • 可以批量导入任务定义 • 社区活跃 • 无法导入任务,开发、 • 定义任务不方便 • 定义任务要写代码, 测试、准生产、生产环 • 没有权限控制功能 有学习门槛 缺点 • 任务多了以后依赖关系图 • 没有权限控制功能 境,要分别配置4次 • 缺少版本控制功能 打不开 • 社区不活跃,发展缓慢
9 .PART2 调度系统选型和迁移——新老系统对比 ETL Automation DolphinScheduler 类别 概念 描述 概念 描述 任务定义 user 数据库用户 user 调度系统用户 任务定义 system 任务组 sub_process 父节点 任务定义 job 任务 shell节点 子节点 任务定义 step 任务步骤,最小执行单位 shell节点 shell节点中的脚本 任务定义 开关 禁用或启用 开关 禁用或启用 任务定义 step no 任务步骤编号,一个任务可以有多个步骤 shell节点 shell节点中的脚本 任务定义 scripts 脚本名称、路径等 shell节点 shell节点中的脚本 任务定义 parameters 参数 自定义参数 参数 任务定义 dependency 依赖哪些上游任务 线条 可视化依赖关系 任务定义 job stream 被哪些下游任务依赖 线条 可视化依赖关系 任务定义 trigger by 被哪一个上游任务触发 线条 可视化依赖关系 每日运行、每月几号运行、每周几运行、虚拟任务、时间触发、运 分钟、小时、日、月、每月几号、每周几、指定 任务定义 job type 定时管理 行完自动关闭、指定日历日期运行 日期,同crontab 任务定义 running server 在哪台服务器运行 work分组 在哪台服务器运行 任务定义 job execution 是否检查上次运行状态,如果上次失败了,不会自动被触发运行 无 任务定义 priority 优先级 任务优先级 优先级 任务定义 maxretry 最大重试次数 失败重试次数 最大重试次数 任务定义 job time window 任务允许运行的时间窗口 无 任务定义 无 项目 定义项目 任务定义 无 工作流 运行管理 job detail log 任务运行输出详细日志 查看日志 任务实例输出详细日志 运行管理 job status log 任务运行状态日志 任务实例 任务实例 任务状态统计 流程状态统计 运行管理 job watch dog 所有完成和未完成任务列表,追数追到哪天了 树形图 任务实例 工作流实例 运行管理 无 甘特图 任务运行时效及状态查看 运行管理 无 工作流暂停 运行管理 无 工作流恢复 用户管理 无 用户管理 用户管理 无 权限管理 用户管理 无 租户、队列管理 用户管理 无 令牌鉴权 系统管理 无 数据源中心 定义数据源 系统管理 无 资源中心 定义函数等资源 系统管理 无 监控中心 系统运行状态监控
10 .PART2 调度系统选型和迁移——迁移方案 Task 第1周 第2周 第3周 第4周 第5周 第6周 第7周 第8周 第9周 第10周 第11周 第12周 任务梳理 环境部署 • 边运行边迁移 • 循序渐进,由易 第一批迁移 到难 20任务 • 按业务分批迁移 第一批验证 • 验证通过后老系 第二批迁移 统任务下线 80任务 第二批验证 第三批迁移 200任务 第三批验证 迁移完成
11 .PART2 调度系统选型和迁移——迁移效果 迁移效果: 节点类型的选择: • 管理更便捷 • Shell节点,sh脚本作为项目工程代码的一部分,在git上维护 • 系统更稳定 • Spark节点,虽然配置方便,但是不方便维护和发版,所以放弃 • 开发更高效 • Python、MR、SQL节点,同Spark节点原因,没有使用 Dolphinscheduler 1.05
12 .目 录 PART1 百望云大数据架构演进 PART2 调度系统选型和迁移 PART3 DS在百望云的大数据应用 PART4 调度管理上的痛点讨论
13 .PART3 DS在百望云的大数据应用——DS调度范围 DS调度范围 数据产品及服务 任务调度集群 联合建模 微服务 BI/大屏 DolphinScheduler 数据同步集群 数据服务集群 HBase 数据服务集群 Elasticsearch 数据服务集群 Neo4j Maxwell/Oplog 消息队列集群 机器学习 TensorFlow 数据处理集群 Hadoop/Spark/Flink Kafka 阿里云ECS/Docker/物理机
14 .PART3 DS在百望云的大数据应用——数据产品服务
15 .目 录 PART1 百望云大数据架构演进 PART2 调度系统选型和迁移 PART3 DS在百望云的大数据应用 PART4 调度管理上的痛点讨论
16 .PART4 调度管理上的痛点讨论 1 工作流、节点的版本管理。工作流和节点算不算代码的一部分?如何管理呢? 2 跨项目的依赖和触发,如何实现? 百望云的方案:不同业务部门、产品线会各自创建独立的项目;上游项目完成后生成控制文件到HDFS,下游 项目轮询监测控制文件生成后开始启动。 3 操作失误,误删怎么办?如何恢复? 4 ETL,调度任务解决的是T,依赖和触发实际关心的E和L,也就是源表和目标表,如何将任务和库表连接起 来? 5 测试环境、预生产环境、生产环境,调度要配置3次,如何提高效率? 百望云的方案:测试环境,开发自己配;准生产、生产环境,运维人员和开发人员一起配置,运维人员操作, 开发人员确认。但是有时还是会出错,因为不能复制粘贴,不能导入导出。下一步准备开发导入导出的脚本。 6 项目变更发版后,有时会忘记将状态改为“上线”,如何避免? 百望云的方案:每天18点,跑一个上线项目数量的统计数,发到钉钉运维群里。
17 .非常感谢
18 .欢迎探讨,共同进步 杨爽 • 百望股份有限公司 大数据平台部 总监 • 10年大数据领域工作经历,曾在恒丰银 行、万达集团、京东金融任大数据平台 负责人。 • 主要研究领域:大数据开发和管理的效 率、大数据系统稳定性和可用性、数据 资产增值、NLP、区块链。