Apache DolphinScheduler 在大数据环境中的应用与调优

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: Apache DolphinScheduler 在大数据环境中的应用与调优

本文主要涉及三大主题:首先,探讨常见的工作流配置模式,其次,介绍DS 2.0.X版本的重要功能特性,最后,分享生产环境下的调优实践。


01

工作流配置模式



在Apache DolphinScheduler中,工作流配置模式以其多样性和灵活性而受到开发者喜爱。


虽然这些配置模式可能已经为大家所熟知,但本文仍会对其进行简单介绍。


主要的配置模式包括单一DAG模式、子工作流串联模式、按数据仓库层级调度工作流依赖模式以及按数据仓库层级调度任务跑批模式。


这些模式在政采云等平台上得到了广泛应用,因此我们发现并修复了其中许多隐藏的问题,也向开源社区进行了反馈。



单一DAG模式是一种常见的配置模式,它能使任务在一个DAG中按照特定的配置进行运行。


尽管此模式较为简单并易于理解,但当任务数量庞大时,维护的困难性就会显现出来。在DS的2.0版本及之后,DAG的更新变成了一个大型事务操作,这对数据库压力较大。



按数据仓库层级调度工作流依赖模式则相对复杂。



它与数据仓库规范相对应,例如按照常见的数据仓库分层如ODS层、DW层、DWS层和ADS层,通过串联这些层级的子工作流来进行调度。


在整体批处理过程中,这种模式可能导致计算集群的空闲度较高。

按数据仓库层级调度任务跑批模式则更具灵活性,它按照依赖节点进行任务调度,而非按子工作流配置。



这种模式可以按照数据仓库分层及数据域来设置工作流,因此某一非关键任务的阻塞不会影响其他任务。



这些配置模式都有各自的特点和适用场景。对于不同的模式,我们也会遇到一些问题和挑战。


例如,在工作流调度时,多个工作节点的分配不均衡可能会导致计算资源的浪费。


此外,当某个非关键任务卡住或失败时,如何处理依赖关系也是一个需要解决的问题。在处理大量YARN日志时,任务停止也可能成为一个问题。


在2.0版本的演进过程中,我们发现了这些问题并做出了相应的解决方案。


02

2.0.X 版本功能特性



接下来,让我们深入探讨DS 2.0.X版本的几个重要功能特性。这些功能包括master召回机制、依赖全任务的强制成功更改、工作流停止的事件通知以及处理极端情况下的问题。

在工作流调度过程中,可能出现任务分配不均衡的情况,这会导致计算资源的浪费。



为解决这一问题,我们引入了master召回机制,通过重新分配任务来解决任务分配不均衡的问题。

另一重要的功能特性是依赖全任务的强制成功更改。



在之前的版本中,我们遇到过某个任务需要人工介入的情况,然而其所在的工作流成功,导致下游依赖的任务得以执行,而上游所需的任务却未执行。


为解决这一问题,我们对工作流的依赖检测方式进行了改进,将其从依赖工作流更改为依赖任务。

工作流停止的事件通知功能也得到了重要的改进。在此前的反馈中,有人提到任务停止时任务状态未得到更改的问题。


我们对任务停止相关代码进行了重构,并加入了新的处理流程,以解决任务停止时的状态更新问题。


最后,我们还修复了DS 2.0.X版本中出现的其他一些问题,比如工作流执行完成子工作流后出现的问题、任务发送失败后无法重新提交的问题以及工作流任务失败时重试时间无效等问题。


针对这些问题,我们进行了有效的修复和改进,提高了系统的稳定性和可靠性。


03

生产环境下的调优


第三部分将分享一些生产环境中的调优经验,包括调度历史的管理、版本清理、调优理念和集群配置。此外,还会提供一些参数和情况的讨论。

在生产环境中,由于工作流定义、任务关系和任务定义的版本历史保存,长期保留这些数据会导致日志表越来越大,进而影响批处理的性能。


因此,建议定期清理版本,例如在政采云中保留最近的20个版本。同样,每天的批处理运行会使工作流实例和任务实例表不断增长,建议进行清理。


具体的清理方法包括删除过时的工作流定义版本,可以使用"DELETE"接口删除无用版本。另外,可以调用"DELETE"接口删除过时的工作流实例,从而清理调度历史。


这部分的代码已经整理并上传至GitHub,大家可以根据需要直接使用。



在进行调优时,我们的目标是以最小的资源完成所需任务。调优的一个关键点是确保集群和DS集群的配比合理,以避免DS成为离线批处理的瓶颈。


例如,如果一个集群最多可以并行处理80个任务,而DS只有两个worker,每个worker并行处理30个任务,那么DS就成为瓶颈。



为了解决这个问题,我们可以增加DS的worker数量,从而减少任务的排队。


同时,并行度参数的设置也非常重要,例如根据机器的规模和任务类型合理地设置并行度参数。我们需要分析各个集群在高峰时段的负载情况,找到适合自己的参数值。通过监控集群整体的批处理负载以及各个worker节点的资源使用情况,可以进行参数的优化调整。


举例来说,对于8个16GB内存的机器,如果任务并行数在20-30左右,任务在本地执行,则参数设置合理。而如果任务在远端执行,可以适当调大并行度参数。同样地,CPU保护和内存预留参数也需要根据机器的配置进行设置,以保证机器的稳定性和性能。



在机器调优完成后,批处理的性能得到了提升,同时也减少了异常情况下的解决和调度工作。经过这些调整及改造,最近半年来,我们再也没有遇到调度引发的集群问题。


在参与开源社区时,我们可以了解到重大版本的变更,并找到适合自己业务情况的版本。对于调度系统,并不是一味追求最新版本,稳定才是最重要的。参与开源社区,在遇到问题时,社区中有很多专家可以帮助定位和解决,这也可以提升个人的技术视野。



总的来说,通过有效的管理和调优,DolphinScheduler在生产环境中可以更高效地运行,更好地服务于大数据处理和分析任务。


希望本文的分享对大家在实际应用和优化DolphinScheduler时有所帮助。



参与贡献


随着国内开源的迅猛崛起,Apache DolphinScheduler 社区迎来蓬勃发展,为了做更好用、易用的调度,真诚欢迎热爱开源的伙伴加入到开源社区中来,为中国开源崛起献上一份自己的力量,让本土开源走向全球。


参与 DolphinScheduler 社区有非常多的参与贡献的方式,包括:


贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。


社区汇总了以下适合新手的问题列表:https://github.com/apache/dolphinscheduler/issues/5689


非新手问题列表:https://github.com/apache/dolphinscheduler/issues?q=is%3Aopen+is%3Aissue+label%3A%22volunteer+wanted%22


如何参与贡献链接:https://dolphinscheduler.apache.org/zh-cn/community/development/contribute.html



大数据流动:专注于大数据、数据治理、人工智能相关知识分享

作者独孤风,港口工人转行成为国企大数据负责人,不断自学考研考证充实自己。

提供大数据,数据治理,人工智能相关技术实践与理论学习交流群。

大数据流动,学习永不止步。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
5天前
|
消息中间件 数据挖掘 Kafka
Apache Kafka流处理实战:构建实时数据分析应用
【10月更文挑战第24天】在当今这个数据爆炸的时代,能够快速准确地处理实时数据变得尤为重要。无论是金融交易监控、网络行为分析还是物联网设备的数据收集,实时数据处理技术都是不可或缺的一部分。Apache Kafka作为一款高性能的消息队列系统,不仅支持传统的消息传递模式,还提供了强大的流处理能力,能够帮助开发者构建高效、可扩展的实时数据分析应用。
31 5
|
5天前
|
消息中间件 监控 大数据
优化Apache Kafka性能:最佳实践与调优策略
【10月更文挑战第24天】作为一名已经对Apache Kafka有所了解并有实际使用经验的开发者,我深知在大数据处理和实时数据流传输中,Kafka的重要性不言而喻。然而,在面对日益增长的数据量和业务需求时,如何保证系统的高性能和稳定性成为了摆在我们面前的一个挑战。本文将从我的个人视角出发,分享一些关于如何通过合理的配置和调优来提高Kafka性能的经验和建议。
28 4
|
20天前
|
SQL 存储 分布式计算
ODPS技术架构深度剖析与实战指南——从零开始掌握阿里巴巴大数据处理平台的核心要义与应用技巧
【10月更文挑战第9天】ODPS是阿里巴巴推出的大数据处理平台,支持海量数据的存储与计算,适用于数据仓库、数据挖掘等场景。其核心组件涵盖数据存储、计算引擎、任务调度、资源管理和用户界面,确保数据处理的稳定、安全与高效。通过创建项目、上传数据、编写SQL或MapReduce程序,用户可轻松完成复杂的数据处理任务。示例展示了如何使用ODPS SQL查询每个用户的最早登录时间。
66 1
|
24天前
|
消息中间件 分布式计算 大数据
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
53 5
|
24天前
|
存储 SQL 分布式计算
大数据-162 Apache Kylin 全量增量Cube的构建 Segment 超详细记录 多图
大数据-162 Apache Kylin 全量增量Cube的构建 Segment 超详细记录 多图
44 3
|
24天前
|
Java 大数据 数据库连接
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
26 2
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
|
24天前
|
SQL 分布式计算 NoSQL
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
13 1
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
|
14天前
|
分布式计算 大数据 Apache
利用.NET进行大数据处理:Apache Spark与.NET for Apache Spark
【10月更文挑战第15天】随着大数据成为企业决策和技术创新的关键驱动力,Apache Spark作为高效的大数据处理引擎,广受青睐。然而,.NET开发者面临使用Spark的门槛。本文介绍.NET for Apache Spark,展示如何通过C#和F#等.NET语言,结合Spark的强大功能进行大数据处理,简化开发流程并提升效率。示例代码演示了读取CSV文件及统计分析的基本操作,突显了.NET for Apache Spark的易用性和强大功能。
27 1
ly~
|
24天前
|
供应链 搜索推荐 安全
大数据模型的应用
大数据模型在多个领域均有广泛应用。在金融领域,它可用于风险评估与预测、智能营销及反欺诈检测,助力金融机构做出更加精准的决策;在医疗领域,大数据模型能够协助疾病诊断与预测、优化医疗资源管理和加速药物研发;在交通领域,该技术有助于交通流量预测、智能交通管理和物流管理,从而提升整体交通效率;电商领域则借助大数据模型实现商品推荐、库存管理和价格优化,增强用户体验与企业效益;此外,在能源和制造业中,大数据模型的应用范围涵盖从需求预测到设备故障预测等多个方面,全面推动了行业的智能化转型与升级。
ly~
57 2
|
24天前
|
存储 大数据 分布式数据库
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
21 1

推荐镜像

更多