Apache Dolphinscheduler在中创新航的落地与实践

news2024/11/25 4:10:43

背景介绍

我司中创新航(CALB),是全球领先的新能源科技企业 ,致力于成为能源价值[创造者](<https://baike.baidu.com/item/创造者/10818258?fromModule=lemma_inlink" t "/Users/shangeyao/Documents\x/_blank>),构建全方位能源运营体系,为以动力及储能为代表的新能源全场景应用市场提供完善的产品解决方案和全生命周期管理。

file

随着业务的不断发展,日益增长的跨基地生产数据同步及计算对我们的整体数据架构带来了极大的挑战。

数据架构

file

以上为我司现有的数据架构图,其中最大的特点为跨基地的多机房设计,运维难度高,资源需求量大。传统意义上的多机房数据架构存在以下两大问题:

带宽瓶颈

离线场景主要是批处理场景,是对海量历史数据进行离线分析/处理的场景,该场景对延迟不敏感,但由于其处理数据量巨大对网络带宽等资源消耗较大;

另外,生产场景中作业数量一般较多且执行时间不受控,若两个机房的主机只是简单叠加在一起做为一个集群来用,可能会存在大量的跨机房互访,产生大量的随机流量打满有限的跨机房带宽, 此时除离线自身受影响外, 还可能对其它跨机房业务造成影响。

网络抖动

跨城网络会受供应商服务质量影响(或施工影响)造成抖动(或断网), 与机房内CLOS架构的网络质量相比会低很多。

若两个机房的主机当做为一个集群来用,以HDFS为例,当网络抖动时,不但会导致跨机房读写延迟增加,还会影响DN的IBR等过程,造成服务性能和稳定性下降;

当网络出现严重问题造成断网时,会导致异地机房数据不可用,还会导致异地机房DN失联,造成大量Block低于预期副本数,触发NN大量补副本等问题。

综上所述,多机房的主要矛盾是跨机房网络带宽不足、稳定性差与离线海量数据处理任务高效产出之间的矛盾,解决该主要矛盾面临的核心问题是如何减少跨机房带宽的消耗,防止异地出现多次数据交换而带来的额外开销。

根据以上存在的问题,我们选择了成都基地,用于部署统一的数据集群,其中包括数据计算集群、数据存储、数据应用、数据治理等工具,构建以成都基地为中心的大数据统一平台。

存储相关,我们采购了某知名供应商的分离存储业务,实施存算分离架构,同时支持S3、Hadoop等多项存储协议,空间易于扩展,极大补全了原生HDFS存在大量Block时对NameNode的负载压力这一方面的缺陷。

选型及落地

之前,我们原有的调度系统来自于我们供应商提供的基于Azkaban的开发的平台,存在以下问题:

单点故障

如果Azkaban Web Server或Executor Server出现故障,可能会导致整个工作流执行中断。虽然Azkaban支持多Executor Server模式,但在Web Server上仍可能存在单点故障风险。

资源管理与隔离

Azkaban默认并不提供细粒度的资源管理和任务隔离机制,这意味着在共享资源环境下,任务执行可能会受到其他高负载任务的影响。

可伸缩性限制

尽管Azkaban支持水平扩展(添加更多的Executor Server),但在极端高并发的场景下,系统的整体可伸缩性可能会受到网络通信、元数据存储(如MySQL)或其他瓶颈的限制。

可扩展性

前段虽然也支持了可拖拉拽式的开发,但支持的大数据组件较少,后期难以进行二次开发,以适应日新月异的大数据技术变化。

社区支持及文档

相较于其他调度系统Apache DolphinsScheduler、Airflow的应用广泛程度相比,Azkaban的社区在国内的影响力较小,因此获取帮助和支持的渠道较为有限。

file

根据以上对于扩展性、易用性及团队技术栈的整体考虑,我们选择了Apache Dolphinscheduler,并准备采用白鲸开源团队参与开发的另一款数据集成工具Apache SeaTunnel,用于解决我们目前应用DataX组件运行hive2dorishive2clickhouse任务时存在的单点性能瓶颈及难以全局监控资源使用量的问题。

我们基于Apache Ambari和HDP构建了大数据架构体系,得益于HiDataPlus社区的帮助,我们在Ambari中集成了对于DolphinScheduler的配置与监控

file

file

Hive 3.1.3Hadoop 3.3.4的基础上构建了现有的数仓体系,以DolphinScheduler为调度工具,Sqoop与SeaTunnel做数据集成工具,Spark3与Tez作为离线计算引擎,并在此基础上搭建了Iceberg数据湖,后期考虑用Iceberg替代目前的部分离线业务。

file

并且在引入初期部署了3.1.7版本,投入了5台物理机器,搭建了3Master、5Worker的架构,为了让 DolphinScheduler 更加符合我们应用场景的需要,但又不希望过多代码侵入导致脱离社区,于是我们基于DolphinScheduler 只进行了少量的二次改造,包括以下方面:

  • 加入SAP、Doris等数据源,后3.2版本社区也提供了相关PR,我们根据此进行了相关的一些合并。

  • Sqoop任务改造,我们主要的离线同步包括oracle2hivemysql2hivehana2hive这三种,基于此前提,我们对DS已有Ssqoop任务插件进行了改造,包括但不限于支持自动生成target-dir临时目录,添加导入到hive时可以自己定义表存储类型,支持行列分隔符、替换符设置,极大的提高了离线任务的开发效率。

  • SeaTunnel的任务改造,引入ST后,我们准备将以后的Datax任务替换掉,于是我们利用已有的spark3.3.2作为执行引擎,替换了已有的hive2ckhive2doris任务,并对SeaTtunnel做了一些易用性的改造,比如可视化字段映射等。

  • 此外我们对补数选用租户无效、spark组件模块不支持spark3选项等问题皆做了一些修复,大大提升了系统的稳定性、可用性等等。

对比与提升

相较于我们以前的旧架构,Dolphinscheduler给我们带来了需要全新的体验,极大了提升了数据开发效率,包括但不限于以下方面:

简单易用

更加易用的界面,工作流定义、实例具有更加清晰的界面,筛选条件丰富,清晰的任务状态及类型区分,任务运行一目了然。

丰富的插件设计

我们目前自有的系统中任务插件的种类单一,仅支持shell、sql、sqoop、datax、gpload等任务,且扩展起来较为困难。DS(海豚调度)提供了简单易上手的任务插件机制,为其定制了完善的生命周期流程,使得我们在后续扩展中可以非常轻松的实现启动、取消、追踪状态等多种操作。

易用的补数能力

对于这个补数操作,同事们交口称赞。原先我们的调度系统依靠时间戳运行,例如调度前设置时间戳为今日,则以今日的调度时间去运行任务,若发现前几日的数据有问题,则需要手动修改时间戳,并且等到上一个时间戳运行完毕后,才可以继续运行下一个任务。目前Dolphinscheduler做到了可以自选串行或并行补数,并可以自行定义从已选时间区间内升序或降序补数,更好的保证了原有逻辑的正确性。

完善的告警机制

原先的调度系统告警手段较为单一和落后, 我们通过对元数据的监控,内部实现了一套DQC机制,但该机制需要定期去查看DQC告警列表,不能第一时间发现问题,基于Dolphinscheduler的告警Trigger机制,我们实现了企业微信与邮件告警,方便在任务出错时第一次发现问题,且告警内容详细,甚至包含报错的信息与日志路径,大大提高了我们问题解决的效率。

灵活的执行与重试机制

Dolphinscheduler可以将任务组装成工作流,但它提供了更多样化的执行方式,可以在任务流中选择向前执行、向后执行、只执行此节点,重跑也可以选择重跑整个工作流或从失败节点开始重跑,提高了大规模故障时重新产出数据的速度。

期待与愿景

虽然我们团队的研发人员已经对Apache Dolphinscheduler较为熟悉了,但落地在我司的时间尚短,在使用了我们虽体验到了Dolphinscheduler性能的优越性,但基于功能易用性上,数仓团队还是给我们提了一些需求。

集成Git/Subversion等版本控制

Dolphinscheduler的任务编排已经存在了版本这一概念,但无法清晰直观的看到各版本之间的差别,特别是在迭代速度较快时,一旦发生意外的故障,没有办法及时的回滚。

如果能集成版本控制的话,可惜清晰地比对各个版本各行代码或配置文件之间的差异,能帮我们更快地定位问题。

简化SeaTunnel插件的配置难度

我们在使用基于Spark的SeaTunnel后,和Datax对比性能相当优越,我们原先在执行很多数据量很大的同步任务,Datax的单机特性都没法满足我们的需求,便用了Waterdrop完成了这部分的同步,现在有了SeaTunnel后,和我们使用WaterDrop遇到了一样的问题,配置不够自动化!

如同步Hive,还需要填写metastore地址,没法和Sqoop插件那样实现纯表格式的傻瓜配置,我们后续决定进一步简化配置难度,以现在的SeaTunnel Web为例子,将其中的部分功能改造移植过来,降低数据开发配置SeaTunnel任务的难度。

更丰富的监控指标展示

现在首页上已经有了工作流实例与任务实例当天的的运行状态统计,能让我们巡检人员较为直观的感受到今日任务的运行状态,但我们期望最好可以有一些比较指标,如近七天任务运行时间Top10,可以观测出性能较差的任务,便于我们的后续优化。

增加数据稽核功能

Dolphinscheduler已经提供了基于Spark的数据质量检查插件,便于我们粗粒度的去比对数据的准确性,但对我们来说仍有不足。

我们制造业有一个重要的任务就是数据归档,生产系统产生的数据后续都会存储于数仓,便于后续售后或质检,归档任务均为T+1执行,但生产系统的工单会更改较为久远的数据,会导致生产系统清档时数据不一致。我们目前基于Trino做的全量或抽样数据稽核,后续在替代原调度的基础上,我们将把该功能移植过来,以满足我们当前的业务需求。

集成 Compass

Compass是一个诊断大数据生态系统中计算引擎和调度器的平台,旨在提高故障排除的效率并降低问题调整的复杂性。

它自动收集日志和指标,除了使用启发式规则来识别问题并提供调整建议,对于日志,还使用了ChatGPT还提供诊断建议,日志将使用drain算法自动聚合为模板,可用于人工干预等,提升诊断自动化和优化方案能力。

其主要功能特性如下:

  • 非侵入式,即时诊断,无需修改已有的调度平台,即可体验诊断效果。
  • 支持多种主流调度平台,例如DolphinScheduler 2.x和3.x、Airflow或自研等。
  • 支持多版本Spark、MapReduce、Flink、Hadoop 2.x和3.x 任务日志诊断和解析。
  • 支持工作流层异常诊断,识别各种失败和基线耗时异常问题。
  • 支持引擎层异常诊断,包含数据倾斜、大表扫描、内存浪费等14种异常类型。
  • 支持各种日志匹配规则编写和异常阈值调整,可自行根据实际场景优化。
  • 支持一键诊断全量(包含非调度平台提交任务)Spark/MapReduce任务。
  • 支持ChatGPT对异常日志进行诊断,提供解决方案,使用了drain算法聚合模板,节约成本。

以下为可诊断类型概览:

file file file

详细内容可移步https://github.com/cubefs/compass.git

本文由 白鲸开源科技 提供发布支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1985972.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

directx修复工具:Windows 必备修复工具,一键解决 dll 丢失问题!

电脑出现DLL文件丢失要怎么恢复&#xff1f; 关于电脑系统修复的工具&#xff0c;还是有很多推荐的。金舟DirectX.DLL一键修复是一款强大的系统级工具软件&#xff0c;专门用于修复和恢复操作系统中动态链接库&#xff08;DLL&#xff09;文件的软件工具。软件能够解决由于DLL…

嵌入式--->STM32H7系列DMA寄存器详解

在参考手册中已经有每个寄存器的详细解释&#xff0c;这里做以翻译和调用过程的讲述&#xff0c;仅记录了解到的寄存器&#xff0c;并不全面&#xff0c;仅仅是为了方便查阅 相关中断 如下事件都会产生中断&#xff0c;前提是: •相应的中断事件xx被启用(GPDMA_CxCR)。xxIE 1…

0 元试用,一站式搭建企业云上数据库与BI 数据可视化分析平台

商业环境快速变化&#xff0c;每一次的数据分析和决策的速度都可能直接影响到公司的业务成果。在商业决策过程中&#xff0c;时间就是金钱。 为了加快数据处理&#xff0c;让数据可视化更加智能&#xff0c;我们推出了Sugar BI 和 GaiaDB 组合购&#xff0c;帮助业务快速搭建数…

GPU 片上调度系统

这篇文章分析和说明GPU 片上的kernel 通过stream 作为载体是如何分发到SM 处理器上&#xff0c;同时CUDA 所抽象的grid/block/thread 在GPU 设备层面是如何调度的。调度器通常是被忽略的一个部分&#xff0c;但对CUDA kernel 的编写和后期系统性能分析很有帮助&#xff0c;也可…

春秋云境 | 文件上传 | CVE-2022-28525

目录 靶标介绍 开启靶场 蚁剑连接 获取 flag 靶标介绍 ED01-CMS v20180505 存在任意文件上传漏洞 开启靶场 发现了一个登录功能&#xff0c;使用 burp 爆破一下 爆破之后得到账号是 admin 密码是 admin&#xff0c;登录后是这样的页面 在左边的菜单栏挨着一个一个找&…

天地图按地名搜索+openlayer+vue3

使用element-plus组件库安装ol npm i ol -s 安装axios (调用天地图api http://lbs.tianditu.gov.cn/server/search.html) npm i axios -s 主要代码 <template><div class"my-add-maker-box"><div class"my-point-box"><span>经…

直接用文件方式安装Cuda版本的Pytorch

先查看当前安装好的Cuda版本&#xff1a; 采用pip install 文件 方式安装本地的whl文件&#xff1a; 注意whl文件已经提前下载好了&#xff1a; 然后开始安装&#xff1a; 解压安装途中&#xff0c;相关的包也重新下载&#xff1a; 继续安装&#xff1a; 安装完毕了&#xff1…

【多线程-从零开始-伍】volatile关键字和内存可见性问题

volatile 关键字 import java.util.Scanner; public class Demo2 { private static int n 0; public static void main(String[] args) { Thread t1 new Thread(() -> { while(n 0){ //啥都不写 } System.out.println("t1 线程结束循环"); }, "…

基于STM32的智能灌溉系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 初始化代码传感器读取和控制代码应用场景 农业灌溉花园自动灌溉常见问题及解决方案 常见问题解决方案结论 1. 引言 智能灌溉系统通过实时监测土壤湿度和环境温度&#xff0c;自动控制灌溉设…

【画流程图工具】

画流程图工具 draw.io draw.io&#xff08;现称为 diagrams.net&#xff09;是一款在线图表绘制工具&#xff0c;可以用于创建各种类型的图表&#xff0c;如流程图、网络图、组织结构图、UML图、思维导图等。以下是关于它的一些优点、应用场景及使用方法&#xff1a; 优点&a…

Linux(初学)

一.Linux历史 1.计算机发展历史 1945.2.14 埃尼阿克(第一台计算机)(军事用途) 摩尔定律(计算机小型化,高性能化) 摩尔定律是英特尔创始人之一戈登摩尔的经验之谈&#xff0c;其核心内容为&#xff1a;集成电路上可以容纳的晶体管数目在大约每经过18个月到24个月便会增加…

理解Android framework之AOSP:从内核到应用层

一、AOSP Android framework确保设备的各个部件和程序顺利协同工作。对于想要全面了解 Android 设备内部工作原理、开发高质量应用、优化设备性能以及充分利用 Android 生态系统潜力的人来说&#xff0c;了解 Android 框架也是必不可少的。它是连接用户、开发者和 Android 平台…

高效录屏指南:四大电脑录屏必备工具推荐!

在数字化时代&#xff0c;无论是工作汇报、在线教育还是游戏直播&#xff0c;电脑录屏已经成为了一项不可或缺的技能。今天&#xff0c;我们就来探索一下市面上几款备受好评的录屏工具&#xff1a;福昕录屏大师、转转大师录屏、爱拍录屏、嗨格式录屏大师&#xff0c;看看它们各…

基于RFID技术的智能压缩机装配线优化方案

基于RFID技术的智能压缩机装配线优化方案 传统压缩机装配线往往存在诸多痛点&#xff0c;如生产线单一、无法满足多元化和个性化的市场需求&#xff1b;生产数据滞后&#xff0c;导致产品统计的及时性和准确性无法得到保证&#xff1b;质量问题追溯困难&#xff0c;无法快速准…

c/c++ 为数组整体赋初值

目录 声明 一.整体赋值为0、“”或‘ ’ 二.整体赋值为其他 1.利用for循环赋值 2.逐个赋值 声明 为让c/c的朋友都看懂&#xff0c;本文将采取c语言为大家讲解 一.整体赋值为0、“”或‘ ’ 为什么把0、“”或‘ ’这三种情况单独调出来呢&#xff0c;因为如果将数组定义…

日股暴涨暴跌,港股恐将遭受波及!

近日海外市场波动较大&#xff0c;比如美国、日本等市场的走势可谓是“上蹿下跳”。港股市场也因此受到影响。众所周知&#xff0c;影响股票市场走势的重要因素之一是资金面&#xff0c;这一表现影响大盘及个股的走势。在港股市场&#xff0c;卖空数据作为关键指标备受关注。 …

铲屎官的好帮手,去猫咪浮毛神器——宠物空气净化器分享

养猫的家庭普遍面临一个共同的挑战&#xff1a;即便是刚经过一番精心打扫的居住环境&#xff0c;不出两日&#xff0c;家具表面、地板乃至家中各个缝隙便悄无声息地被一层细腻柔软的猫毛轻轻覆盖。这一现象&#xff0c;很大程度上归咎于猫咪的日常活跃与季节性的换毛过程。不仅…

ACL 2024 Oral | 大模型也会被忽悠?揭秘AI的信念之旅

地球是平的吗&#xff1f; 当然不是。自古希腊数学家毕达哥拉斯首次提出地圆说以来&#xff0c;现代科学技术已经证明了地球是圆形这一事实。 但是&#xff0c;你有没有想过&#xff0c;如果 AI 被误导性信息 “忽悠” 了&#xff0c;会发生什么&#xff1f; 来自清华、上海…

网络面经

1.TCP头格式有哪些&#xff1f; 图解TCP头部格式 详情 源端口和目的端口 端口的作用是什么&#xff1f; 端口的作用是在网络中唯一表示一台主机中的一个进程 序列号 什么是序列号&#xff1f; 用来给传输的字节标号的 比如要传10个字节 那么给第一个字节标号为1001 那么第十…

周鸿祎哈佛演讲摘要:大模型创业要抓住中国机会

时间:2024/04/13(美东时间) 地点:美国波士顿哈佛大学 *演讲语言为中文&#xff0c;“因为我的英文就比are you OK 的水平高一点点”。 1、无论你是一个创业者&#xff0c;还是一个企业家&#xff0c;最重要的一点说要跟用户保持接触&#xff0c;要去聊天&#xff0c;跟用户对话…