- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
Apache DolphinScheduler在传智教育的实践与思考-孔帅
1-Oozie的痛点; 2-DS解决痛点; 3-DS应用案例
展开查看详情
1 . 2022 Apache DolphinScheduler 在传智教育的实践与思考 讲师:孔帅
2 .目录 CONTENTS 01 02 传智教育 DolphinScheduler 数仓架构的演变 在传智的实践与思考 03 Hive&SparkSQL调度 展望未来
3 . 01 传智教育数仓1.0架构 传智教育数仓架构的演变 传智教育数仓2.0架构
4 .传智教育数仓1.0架构 传智教育最初使用的调度软件是 Oozie; 当时Apache DolphinScheduler还 未开始流行; 随着不断迭代的需求开发,Oozie 显现出诸多痛点。
5 . 01 传智教育数仓1.0架构 传智教育数仓架构的演变 传智教育数仓2.0架构
6 .传智教育数仓2.0架构 Oozie ——> DolphinScheduler Hive ——> Hive + Presto ShellScript ——> PythonScript Sqoop ——> Python自研ETL+Sqoop+Flume
7 .传智教育数仓2.0架构 传智教育最初使用的调度软件是Oozie,由于Oozie功能的限制,在不断迭代的需求中, 我们重新调研了各种调度工具,最终选择了国产开源的Apache DolphinScheduler。
8 .传智教育数仓2.0架构 由于Oozie历史的原因,目前Sqoop、HiveSQL、Presto等任务 在DolphinScheduler中 使用的主要还是Shell组件,但受益于DolphinScheduler的可视化界面、资源管理、多租户 管理、权限管理、告警组管理、多项目管理等功能,调度效率已有大幅提高。
9 .传智教育数仓2.0架构 Hive成本低、稳定性好,生态兼容性好。但Hive的缺点也很明显:慢。 传智教育在数仓2.0中,加入了Presto分析引擎。 Presto和Hive都是Facebook公司开源的,Trino是从Presto分支出来的,两者非常相似。 Presto/Trino单表&多表的查询性能优异,数据量支持EB级的数仓和数据湖。 Presto/Trino兼容Hive,还支持mysql、oracle等关系型数据库;kafka、redis、MongoDB等非关系型数据库。 Presto/Trino能够进行异构数据源的跨库读写操作。
10 .传智教育数仓2.0架构 Shell是用来进行系统管理的脚本,功能有限,性能低开销大; 传智教育在数仓2.0中,将Shell脚本 更换为 Python脚本。 Python性能比Shell高,且功能强大、可移植、易扩展,已经成为全球Tiobe编程语言排行榜第一名。
11 .传智教育数仓2.0架构 Sqoop是一款【Hadoop 和 RDBMS 之间传送数据】的工具; 传智教育在数仓2.0中,将Sqoop 更换为 Python自研ETL + Sqoop + Flume; 在Sqoop和Flume工具的基础上,通过Python自研ETL工具,可以更加灵活的支持各种复杂的业务场景。
12 . 02 Oozie的痛点 DolphinScheduler DolphinScheduler解决痛点 在传智的实践与思考
13 .xml配置复杂 传智教育以前采用的工作流调度软件是Oozie: Oozie是一个工作流引擎,默认采用HPDL语言(XML)定义流程,可视化支持依赖于第三方工具软件 (比如HUE),自带的可视化界面功能较弱。 Oozie工作流的核心组成:job.properites 和 workflow.xml。 设定常用参数变量 定义具体工作流
14 .xml配置复杂 【workflow.xml】 【job.properties】
15 .功能组件少 Oozie对新的流行技术反应过慢。 比如PySpark等当下流行的分析计算引擎,Oozie支持的不好。 虽然官方已经宣称支持PySpark任务,但在实际应用中Oozie的PySpark任务却支持较差、问题不断。 多租户管理、告警组管理、多环境管理、Worker分组管理、项目管理、资源管理等功能,Oozie都不具备。
16 .阻塞死锁 Oozie在执行过程中,每个任务都会启动一个oozie-launcher加载器,oozie-launche会占用很多内存; Oozie launcher的生命周期是数据任务开始之前到结束,期间资源不会释放,如果此时数据任务得不到充足的资源就 会一直等待,有充足资源时才会执行数据任务 如果同时提交了多个Oozie任务,或是Oozie有多个并行子任务,会导致内存不够,而Oozie launcher在得不到充足的 资源时就会一直等待资源,导致资源和任务互相等待从而造成死锁现象。
17 .权限控制 & 升级兼容 权限:Oozie基本没有权限控制,也没有多租户功能 兼容:Oozie依赖于Hadoop集群版本,如果更新最新版,容易出现 与现有集群不兼容的问题。
18 . 02 Oozie的痛点 DolphinScheduler DolphinScheduler解决痛点 在传智的实践
19 .简单易用效率高 Apache DolphinScheduler 分布式易扩展的可视化工作流任务调度平台。 相对于Oozie的复杂xml配置流程,DolphinScheduler所有的流、定时操作都 是可视化的,通过拖拽任务来绘制DAG,并可进行实时监控。 同时DolphinScheduler支持一键部署,无需复杂的安装过程。
20 .功能丰富 相对而言,DolphinScheduler紧跟流行技术。 对PySpark等当下流程的分析计算引擎,DolphinScheduler做到了快速升级进行兼容。 并且新组件使用起来便捷高效,对于工作效率提升很大。 同时DolphinScheduler还在不断升级完善各种功能,比如多租户管理、告警组管理、多环境管理、Worker分组管理、 项目管理、资源管理等功能。功能丰富升级快。
21 .高可靠性 与Oozie的阻塞死锁现象对比,DolphinScheduler采用任务缓冲队列机制来 避免过载; 单个机器上可调度的任务数量可以灵活配置,当任务过多时会缓存在任务队 列中,不会导致机器卡死。 同时DolphinScheduler支持去中心化的多Master和多Worker服务对等架构, 可以避免单Master压力过大。
22 .权限控制 & 升级兼容 权限:Oozie基本没有权限控制;DolphinScheduler可以通过对用户进行资 源、项目、数据源的访问授权,不同用户间互不影响。 兼容:Oozie容易出现与现有集群不兼容的问题;DolphinScheduler升级不 会影响之前集群的设置,升级方式操作简单。
23 . 03 展望未来 展望未来
24 .展望未来 Apache DolphinScheduler解决了我们之前的大部分痛点,大幅提高了工作效率。后续准备向更多的项目组推广 使用。 在目前的使用中,DolphinScheduler对PySpark任务支持良好,但Presto的插件还有些问题,我们也在尝试做 Presto功能的适配;后续计划将数据源类型优化为支持动态热插拔的功能,让任意类型的数据源都可以被随时使用。 如上所述,由于DolphinScheduler社区活跃、版本更新速度较快,在使用过程中会遇到一些bug,也有很多可以 优化的功能点,我们会积极的参与到社区中,不断修复bug、完善功能,助力Apache DolphinScheduler更上一层 楼!
25 . THANKS! Ending