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

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 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的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
11月前
|
数据采集 搜索推荐 Java
Java 大视界 -- Java 大数据在智能教育虚拟学习环境构建与用户体验优化中的应用(221)
本文探讨 Java 大数据在智能教育虚拟学习环境中的应用,涵盖多源数据采集、个性化推荐、实时互动优化等核心技术,结合实际案例分析其在提升学习体验与教学质量中的成效,并展望未来发展方向与技术挑战。
|
消息中间件 数据挖掘 Kafka
Apache Kafka流处理实战:构建实时数据分析应用
【10月更文挑战第24天】在当今这个数据爆炸的时代,能够快速准确地处理实时数据变得尤为重要。无论是金融交易监控、网络行为分析还是物联网设备的数据收集,实时数据处理技术都是不可或缺的一部分。Apache Kafka作为一款高性能的消息队列系统,不仅支持传统的消息传递模式,还提供了强大的流处理能力,能够帮助开发者构建高效、可扩展的实时数据分析应用。
1161 5
|
消息中间件 监控 大数据
优化Apache Kafka性能:最佳实践与调优策略
【10月更文挑战第24天】作为一名已经对Apache Kafka有所了解并有实际使用经验的开发者,我深知在大数据处理和实时数据流传输中,Kafka的重要性不言而喻。然而,在面对日益增长的数据量和业务需求时,如何保证系统的高性能和稳定性成为了摆在我们面前的一个挑战。本文将从我的个人视角出发,分享一些关于如何通过合理的配置和调优来提高Kafka性能的经验和建议。
684 4
|
消息中间件 分布式计算 大数据
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
349 5
|
11月前
|
传感器 分布式计算 大数据
“用大数据盯着天看地”——聊聊环境监测的精准化升级
“用大数据盯着天看地”——聊聊环境监测的精准化升级
236 0
|
12月前
|
传感器 机器学习/深度学习 算法
Java 大视界 -- Java 大数据在智能农业温室环境调控与作物生长模型构建中的应用(189)
本文探讨了Java大数据在智能农业温室环境调控与作物生长模型构建中的关键应用。通过高效采集、传输与处理温室环境数据,结合机器学习算法,实现温度、湿度、光照等参数的智能调控,提升作物产量与品质。同时,融合多源数据构建精准作物生长模型,助力农业智能化、精细化发展,推动农业现代化进程。
|
存储 缓存 Apache
Apache Iceberg数据湖高级特性及性能调优
性能调优涵盖索引优化、排序策略与元数据管理。通过布隆过滤器、位图索引等提升查询效率,结合文件内/间排序优化I/O与压缩,辅以Z-Order实现多维数据聚集。同时,合理配置元数据缓存与清单合并,加速查询规划。适用于点查、全表扫描及高并发写入场景,显著提升系统性能与资源利用率。
1099 0
|
Java 网络安全 Apache
SshClient应用指南:使用org.apache.sshd库在服务器中执行命令。
总结起来,Apache SSHD库是一个强大的工具,甚至可以用于创建你自己的SSH Server。当你需要在服务器中执行命令时,这无疑是非常有用的。希望这个指南能对你有所帮助,并祝你在使用Apache SSHD库中有一个愉快的旅程!
1023 29
|
SQL 关系型数据库 MySQL
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
|
关系型数据库 MySQL 大数据
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。

推荐镜像

更多