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

简介: 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



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

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

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

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

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
22天前
|
存储 消息中间件 监控
【Flume】Flume在大数据分析领域的应用
【4月更文挑战第4天】【Flume】Flume在大数据分析领域的应用
|
1月前
|
Cloud Native 数据处理 云计算
探索云原生技术在大数据分析中的应用
随着云计算技术的不断发展,云原生架构作为一种全新的软件开发和部署模式,正逐渐引起企业的广泛关注。本文将探讨云原生技术在大数据分析领域的应用,介绍其优势与挑战,并探讨如何利用云原生技术提升大数据分析的效率和可靠性。
|
1月前
|
运维 Linux Apache
LAMP架构调优(二)——修改Apache运行用户
LAMP架构调优(二)——修改Apache运行用户
197 1
|
1月前
|
运维 Linux Apache
LAMP架构调优(一)——隐藏Apache版本信息
LAMP架构调优(一)——隐藏Apache版本信息
16 1
|
1月前
|
存储 消息中间件 大数据
Go语言在大数据处理中的实际应用与案例分析
【2月更文挑战第22天】本文深入探讨了Go语言在大数据处理中的实际应用,通过案例分析展示了Go语言在处理大数据时的优势和实践效果。文章首先介绍了大数据处理的挑战与需求,然后详细分析了Go语言在大数据处理中的适用性和核心技术,最后通过具体案例展示了Go语言在大数据处理中的实际应用。
|
1月前
|
存储 机器学习/深度学习 Apache
如何将Apache Hudi应用于机器学习
如何将Apache Hudi应用于机器学习
22 0
|
1月前
|
数据采集 分布式计算 大数据
Java语言在大数据处理中的应用
传统的大数据处理往往依赖于庞大的数据中心和高性能的服务器,然而随着大数据时代的到来,Java作为一种强大的编程语言正在被广泛应用于大数据处理领域。本文将探讨Java语言在大数据处理中的优势和应用,以及其在分布式计算、数据处理和系统集成等方面的重要作用。
|
1月前
|
存储 大数据 数据挖掘
云计算与大数据:从基础设施到实际应用
云计算与大数据:从基础设施到实际应用
136 0
|
18天前
|
Linux Apache
CentOS 7 源码安装LAMP环境源 和apache监听别的端口
CentOS 7 源码安装LAMP环境源 和apache监听别的端口
13 0
|
24天前
|
NoSQL 大数据 数据挖掘
现代数据库技术与大数据应用
随着信息时代的到来,数据量呈指数级增长,对数据库技术提出了前所未有的挑战。本文将介绍现代数据库技术在处理大数据应用中的重要性,并探讨了一些流行的数据库解决方案及其在实际应用中的优势。

推荐镜像

更多