助力长城汽车数据管道平台连接“数据孤岛”,加强数据一元化,Apache DolphinScheduler 的角色定位...

news2024/11/20 18:26:23

点击蓝字 关注我们

2162fe4c88397f427348be49a68f2c2f.jpeg

讲师简介

8baff49e04a21f6d9e7f2605a8526117.png

长城汽车-IDC-数据中台部-刘永飞 高级工程师

我是长城汽车 IDC-数据中台部的刘永飞,给大家分享一下我们自研的一个数据同步工具平台,以及在使用这个工具过程中遇到的问题。今天的分享主要有四个部分:

1.  我们自研的数据管道工具平台的定位和功能;

2.  DolphinScheduler 在这个数据管道平台中的应用;

3.  总结了我们在使用 DolphinScheduler 时遇到的一些问题;

4.  对于数据管道平台的总结。

数据管道

本章节我将介绍一下我们自研的数据管道平台,包括技术架构、支持多种数据源、支持多种管道、主要界面、引擎设置、数据类型映射、人工告警和推广几个方面。

01

平台简介

数据管道是一个基于分布式技术构建的数据传输平台,支持多种数据源海量数据的实时、离线的方式传输。

数据管道可通过简单的页面配置即可完成数据传输,操作过程简单且高效,降低用户使用门槛;内设告警机制,传输任务出现异常可第一时间通过钉钉将信息发送具体责任人。

我们从立项之初,其实是为了解决长城汽车在数据方面的一些问题,主要目标就是连接数据孤岛,加速数据的一元化。大家知道凡是涉及到数据,数据孤岛问题就是一个绕不开的问题,我们就希望能够通过数据管道连接好各个业务线、各个领域、各个系统,真正的打破数据孤岛。

另一个目标就是加速数据一元化了,数据一元化是长城汽车在数智化转型过程中一个关键目标,做数据一元化的第一步就是数据的快速汇集,我们也能够承担好这个快速汇集数据的角色。

02

技术架构

给大家介绍一下我们的这个管道平台的技术架构。

d9dcdef0610ead145632e5df1b8ea90a.png

整个架构中,最左边是一个数据源的源端,也就是整个数据的起点。最右边就是数据源的目的端,是数据的目的地。通过中间的这个数据管道,可以实现数据的传输,中间最下边就是数据管道资源池。在数据管道中有一个资源池的概念,我们把它分为公共资源和私有化资源。公共资源是我们平台提供的,公共资源也做到了资源队列隔离,相互之间不会有影响。如果用户对于资源有特殊要求,我们也支持用户提供机器,提供私有化的资源。

在资源之上就是管道引擎层,引擎层是我们自研的数据传输引擎,细节就不在这里体现了。

最上面的 web 层,我们提供了项目级隔离,任务管理、资源管理、日志查看、告警等能力,更加友好的让用户使用我们平台。

03

支持多种数据源

截止到当前的V2.1.4版本,数据管道平台可以支持 23 种数据源,基本上涵盖了主流的关系型数据库常见的大数据组件。

0d9cfacbf530917b64382318e1c64130.png

0e8f7e549977f197a4f3aedc0055bb62.png

04

支持多种管道

在现有支持的 23 种数据源基础上,细分到离线任务、实时任务的全量同步、增量同步维度后,数据管道平台可支持将近 900 种管道。

以常见的关系型数据库 MySQL 做为数据源为例,一共可以支持 38 个管道。

80f1dba88f8ece2d2ad90ac3b27f023b.png

05

操作简单

这是数据管道的 UI 界面,我们自研的初衷就是要简单,通过简单的交互,用户录入源端数据源、目的端数据源,连通性测试通过后,就可以进行任务的创建了。通过简单的页面配置,用户很快就可以创建出一个能够支持大数据量同步的任务。

ae607aa648482bf9df0eb1aa7e94f43b.png

06

主要界面

这是数据源的管理用户界面,你可以根据你想要的类型进行对应的数据源连接参数创建,下面这张图以一个离线任务创建任务为例,来展示新建任务设置的界面。

0c81a57ed20224bbde9544d21a6cafa1.png

07

引擎设计

数据管道平台可以根据任务使用的计算引擎(Spark/Flink)来设置任务运行过程中所需的资源参数。

2dcc83c431483f09ce492900c1ff8e5b.png

08

数据映射类型

目标库设置时可以方便的进行源端字段和目标端字段的映射。我们收集了Spark/Flink的数据类型映射字典,用于进行源端数据类型到目标数据类型的转换。

6e2f1f6e998071340084b7f37fa9dc56.png

09

任务告警

用户在创建任务的时候开启告警设置并选择通知用户后,如果任务执行失败,会在第一时间将告警信息发给通知用户的钉钉账户。

如果用户已经在数据管道平台处于登录状态,则点击”查看错误日志”可以直接跳转到任务实例的提交日志界面,查看日志详情。

0705c42c7b093e73312578358d1a7bf9.png

10

方便、丰富的日志查看

在任务创建成功,设置任务”上线”后,点击”手动运行”便可以运行任务了。数据管道平台提供了丰富的日志管理功能,供用户查看任务执行信息。用户可以通过平台生成的日志链接很方便的查看任务向集群提交时的提交日志、任务在集群运行时的运行日志,如果是实时任务,还可以直接跳转到 Flink的web UI 进行任务信息的查看。

0c1170851cc17c0bdc6e3bfc83b71600.png

目前该产品已经在我们内部的一些部门及子公司进行了使用,创建任务 300+ 个,每日近 2000 个任务实例运行 。

DolphinScheduler在数据管道平台中的应用

01

主要流程

我们的数据管道依赖了 DolphinScheduler(V3.0.0)的能力,用户在数据管道上创建任务、运行任务,会经海豚调度器进行调度,提交工作流后,最终任务将在集群中执行。

7f8d28edffe7b460786442bcfdb16542.png

对大家可以看到,最左侧就是数据管道平台创建数据源,创建任务,数据管道根据不同的数据源获取模板,更新模板,绑定配置文件,最终在数据管道上点执行任务,就会依赖 DolphinScheduler 的能力去执行工作流,提交任务,并在 Yarn 集群中执行。同时在这个过程中,DolphinScheduler 会收集到提交任务的日志,我们利用这个能力,在我们的平台上可以查看任务的实时日志。

02

数据管道使用了哪些

DolphinScheduler的API服务

数据管道前台使用了我们自定义的 UI 界面,后台的许多功能使用了DolphinScheduler 的 API 服务,包括项目相关的操作,任务状态相关、数据源相关等,具体如下图所示:

e83d76cd64336f1b20ce6c1e396aefa3.png

03

数据管道创建任务会生成工作流

定义数据

用户在数据管道上创建任务之后会生成一个 Resource Name,还有一些配置文件。配置文件会上传到资源中心,上传成功之后会有一个Resource ID,之后我们会组装数据格式,把它合成任务所需要的参数,然后再组装出来一个任务节点的定义,形成一个任务节点定义列表。任务节点关系就形成任务节点关系列表,任务节点位置就形成任务节点位置列表。任务的执行类型、全局参数等数据组装起来之后,到 DolphinScheduler 创建功能的定义接口,这样创建工作流的流程就做完了。

然后我再讲几个特色的功能给大家分享一下。

04

参数设置

用户在数据管道创建任务的时候可以进行参数的设置。这里我们使用了 DolphinScheduler 内置的时间参数进行参数复制,在过滤条件里边使用定义好的参数进行数据过滤。

4e5e1b9c3bb8426e03e5179efaf46e24.png

离线任务比较常见的是补数,这一块,我们通过参数式的功能支持用户在界面上进行参数的自定义,如上图所示。

05

提交日志

从数据管道平台运行任务后,我们会调用DolphinScheduler 的运行工作流接口,我们DolphinScheduler 的提交任务日志详情接口拿到提交任务日志数据,用户可以刷新、下载日志。

8263e3f663cc80662c1a1c94a912fea3.png

06

扩充实例列表支持实时任务断点

续传

数据管道平台在创建任务时支持创建多个子任务。每个子任务均可查看实例列表。这里我们调用了 DolphinScheduler 的实例列表接口来展示运行信息,并在该接口的基础上,添加了实例的运行状态、运行开始时间、运行结束时间、实例运行时长等。同时,我们提供了实时任务的停止、运行按钮,可支持实时任务的断点续传功能。

6f0f533a8e8fd92572a8e1f8dc9765a0.png

使用DolphinScheduler时遇到的问题

现在我来说一下我们团队小组的成员在使用 DolphinScheduler 时遇到的一些问题。当然遇到的问题很多,我摘出了三个比较有代表性的问题。并给出了我们对应的解决方案。

01

获取到的任务状态不对

最初,我们在数据管道平台调用工作流实例列表接口获取实例的信息时,发现接口返回的 state字段值是 SUCCESS,但其实任务是执行失败的。于是就去仔细研究了一下这个 state 字段,发现其实这只是海豚调度器提交任务时获取到的一个状态,并不能真实反映任务的运行状态,于是我们在改接口的基础上又添加了实例的运行状态的逻辑封装。

02

DolphinScheduler 集群扩容,

workgroup 分组遇到的问题

这个问题是这样,我们在扩容时新增的节点的也加入到了默认的 default 组,由于新扩容的节点和现在的 work 节点属于不同的 Hadoop 集群,这样的话,提交任务到 default 组,会存在这个组的节点不是属于同一个集群而报错。所以需要把这些新增的节点根据hadoop集群而进行分组。

最初我们修改了 install_env.sh 配置文件里面的 works 设置,分发文件,重启集群,但是通过DolphinScheduler web 界面发现 work分组设置没有生效,新节点还是属于 default 组。为什么没生效呢?找了好长的时间,最后发现新节点的 worker-server 的application.yaml 配置里面看到 groups 是 default,于是修改 default 为新的workgroup 名称,再次重启DolphinScheduler 集群,分组就显示正常了。

03

资源中心配置

这个说起来也是因为我们的 DolphinScheduler 上面有两个 Hadoop 集群,配置一个 hdfs,提交到另一个集群的任务可能会存在找不到文件的情况。我们知道对于 standalone 环境,可以选择本地文件目录作为上传文件夹,我们想了两个方案,一个是 NFS 文件共享,另一个是 OSS,我们选择了后者,OSS 通过服务器挂载就像普通磁盘一样使用方便,还有就是 OSS 底层是多副本存储,数据存储上和NFS相比更安全。

总结

说完了我们所遇到的问题,最后总结一下我在使用 DolphinScheduler 过程中的一些心得体会吧!

首先,得益于 DolphinScheduler 强大的能力、丰富的文档、火热的社区等多方面综合因素,我们在技术选项的时候首选了DolphinScheduler。

也得益于这个选择,截止到当前数据管道最新版为止,DolphinScheduler 对数据管道平台提供了强有力的支撑,使我们的开发工作重心可全面投入到数据管道本身产品功能上去,跟工作流调度有关的实现直接调用 DolphinScheduler 的 API 服务即可,我们会在此基础上添加了针对数据管道平台场景的逻辑补充去完善数据管道的产品功能。

最后,在后续的数据管道版本迭代中,我们会根据功能需求,继续深入研究我们尚未体验和使用的 DolphinScheduler 功能,也希望 DolphinScheduler 社区能够一直活跃下去, 让 DolphinScheduler 能够越来越好。

参与贡献

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

9c5fa0b524fb307a6ed1947b88dbced6.png

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

21e021b9336093444b3cfde3efae4278.png

贡献第一个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

来吧,DolphinScheduler开源社区需要您的参与,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是巨大的。

参与开源可以近距离与各路高手切磋,迅速提升自己的技能,如果您想参与贡献,我们有个贡献者种子孵化群,可以添加社区小助手微信(Leonard-ds) ,手把手教会您( 贡献者不分水平高低,有问必答,关键是有一颗愿意贡献的心 )。

6fed17acede8cf5e9004632eff401fb6.jpeg

添加社区小助手微信(Leonard-ds,好友申请注明“入交流群+姓名+公司+职位信息“,群里是实名制,仅用于验证身份) 

添加小助手微信时请说明想参与贡献。

来吧,开源社区非常期待您的参与。

< 🐬🐬 >

更多精彩推荐

☞优秀用户案例有奖征集 | 活动火热开启,快来投稿!

☞用一杯星巴克的钱,训练自己私有化的ChatGPT

☞【第十期】Apache DolphinScheduler 每周 FAQ 集锦

☞去年办了这么多场Meetup都没有你,2023年赶紧安排起来!

☞深入浅出 Apache DolpinScheduler 补数功能

☞Apache DolphinScheduler 2.0.9 发布,或将是最后一个 2.0.X 版本

我知道你在看768a4a876ac3d17d9ba3f604c2716643.png

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

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

相关文章

语法——时态总结

一般现在时 1.概念&#xff1a;经常、反复发生的动作或行为及现在的某种状况。 2.基本结构&#xff1a;①is/am/are;②do/does否定形式&#xff1a;①am/is/are not;②此时态的谓语动词若为行为动词&#xff0c;则在其前加don‘t&#xff0c;如主语为第三人称单数&#xff0…

软考A计划-系统架构师-论文应试技巧

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

Collection接口详细介绍(上)

前言&#xff1a; 本篇文章主要讲解Java中的Collection接口以及相关实现类的知识。该专栏比较适合刚入坑Java的小白以及准备秋招的大佬阅读。 如果文章有什么需要改进的地方欢迎大佬提出&#xff0c;对大佬有帮助希望可以支持下哦~ 小威在此先感谢各位小伙伴儿了&#x1f601…

利用神经网络重建三维数字孪生

利用神经网络重建三维数字孪生 从点云重建光滑表面是创建真实世界对象和场景的数字孪生的基本步骤。 表面重建算法出现在各种应用中&#xff0c;例如工业模拟、视频游戏开发、建筑设计、医学成像和机器人技术。 神经核表面重建 (NKSR) 是新的 NVIDIA 算法&#xff0c;用于从大…

Java学习路线一条龙

作者 | 磊哥 来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09; 转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09; Java 要掌握的技术点如下&#xff1a; JavaSE&#xff08;Java Standard Edition&#xff0c;Java 基础&#xff09;计算…

常用命令之Proxmox qm命令

一、Proxmox简介 Proxmox是一款基于Debian Linux的开源虚拟化平台&#xff0c;它允许用户在单个物理主机上运行多个虚拟机&#xff0c;并提供了许多高级功能&#xff0c;如高可用性、备份和恢复、集群管理等。Proxmox支持多种虚拟化技术&#xff0c;包括KVM和LXC&#xff0c;而…

【RISC_V课程笔记】导论

目标 完成以cpu的设计&#xff0c;三级流水线结构。取指(if), 译码(id), 执行(ex)cpu中断系统的设计以cpu为核心的SOC设计&#xff0c;完成rom,ram,time的外设的设计用uvm对cpu进行验证(system verilog) 理论 数字逻辑电路 数字信号&#xff1a;用二进制表示的信号&#xf…

一起看 I/O | 隆重推出 AI 驱动的编码助手 Studio Bot

作者 / Android Studio 高级产品经理 Adarsh Fernando 我们在 2013 年 Google I/O 大会上首次宣布推出 Android Studio&#xff0c;并承诺为 Android 应用开发者提供一流的集成开发环境 (IDE)。10 年后的今天&#xff0c;我们对提高开发者工作效率的承诺仍然推动着团队开发新的…

深入理解深度学习——注意力机制(Attention Mechanism):多头注意力(Multi-head Attention)

分类目录&#xff1a;《深入理解深度学习》总目录 相关文章&#xff1a; 注意力机制&#xff08;AttentionMechanism&#xff09;&#xff1a;基础知识 注意力机制&#xff08;AttentionMechanism&#xff09;&#xff1a;注意力汇聚与Nadaraya-Watson核回归 注意力机制&#…

【LeetCode热题100】打卡第20天:合并区间不同路径

文章目录 【LeetCode热题100】打卡第20天&#xff1a;合并区间&不同路径⛅前言 合并区间&#x1f512;题目&#x1f511;题解 不同路径&#x1f512;题目&#x1f511;题解 【LeetCode热题100】打卡第20天&#xff1a;合并区间&不同路径 ⛅前言 大家好&#xff0c;我是…

MySQL中的行级锁

行级锁的类型主要有三类&#xff1a; Record Lock&#xff0c;记录锁&#xff0c;也就是仅仅把一条记录锁上&#xff1b;Gap Lock&#xff0c;间隙锁&#xff0c;锁定一个范围&#xff0c;但是不包含记录本身&#xff0c;只存在于可重复读隔离级别&#xff0c;目的是为了解决可…

前端封装一个移动端(已支持PC)滚动的组件

安装 npm install better-scroll/core --save引入 import BScroll from better-scroll/core直接上代码 Scroll.vue <template><div ref"rootRef"><slot></slot></div> </template><script> import useScroll from ./u…

配置虚拟机(VMware )网络

1、查询 IP ip addr # 命令和ifconfig类似&#xff0c;但前者功能更强大&#xff0c;并旨在取代后者。可以看到两个网卡 lo和ens33&#xff08;lo是本地网卡&#xff09; 2、配置静态IP地址和修改主机名(网络配置使用随机分配免配置) 使用vi编辑器打开ens33网络的配置文件&am…

Windows系统配置Python环境(Anaconda篇)

Windows系统配置Python环境&#xff08;Anaconda篇&#xff09; 一、下载 根据自己电脑系统下载对应的安装包 官方下载地址&#xff1a;https://www.anaconda.com/products/distribution 清华镜像网站&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ …

SpringBoot——动态数据源(多数据源自动切换)

前言 日常的业务开发项目中只会配置一套数据源&#xff0c;如果需要获取其他系统的数据往往是通过调用接口&#xff0c; 或者是通过第三方工具比如kettle将数据同步到自己的数据库中进行访问。 但是也会有需要在项目中引用多数据源的场景。比如如下场景&#xff1a; 自研数据…

更有效的协同程序【插件:More Effective Coroutines】

插件地址&#xff1a;传送门 1、命名空间 using System.Collections.Generic; using MEC; 2、与传统的协程相比 传统&#xff1a;StartCoroutine(_CheckForWin()); 被RunCoroutine取代。必须选择执行循环进程&#xff0c;默认为“Segment.Update”。 using System.Coll…

华为OD机试真题 JavaScript 实现【最优资源分配】【2023Q1 200分】

一、题目描述 某块业务芯片最小容量单位为 1.25G&#xff0c;总容量为 M*1.25G&#xff0c;对该芯片资源编号为 1&#xff0c;2&#xff0c;… M。 该芯片支持 3 种不同的配置&#xff0c;分别为 A、B、C. 配置 A: 占用容量为 1.25 * 1 1.25G配置 B: 占用容量为 1.25* 2 2…

一文了解智能驾驶架构平台ROS2和自适应AUTOSAR之间的区别

公众号致力于点云处理&#xff0c;SLAM&#xff0c;三维视觉&#xff0c;高精地图等领域相关内容的干货分享&#xff0c;欢迎各位加入&#xff0c;有兴趣的可联系dianyunpcl163.com。未经作者允许请勿转载&#xff0c;欢迎各位同学积极分享和交流。 背景介绍 在汽车行业&#x…

有人问高考能改变命运不,老大爷回答是不能

昨天看到一段小视频&#xff0c;问高考能改变命运不&#xff0c;老大爷回答是不能。 我遂想起写写这个话题。 &#xff08;1&#xff09; 成功者的要素到底是什么&#xff1f; 我们中国人经常用&#xff1a;成者为王败者为寇&#xff0c;这句话来形容成功者。 我们见过很多成功…

警惕超声波工艺对晶振造成损伤

超声波技术被广泛应用于工业生产中&#xff0c;常见的超声波工艺有&#xff1a;超声波清洗工艺、焊接工艺。 使用该两种工艺时&#xff0c;超声波仪器通常以20KHz至60KHz的频率运行。 清洗工艺是指清除工件表面上液体或固体的污染物&#xff1b;而焊接工艺中&#xff0c;高频机…