讲师简介

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

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

  1. 我们自研的数据管道工具平台的定位和功能;
  2. DolphinScheduler 在这个数据管道平台中的应用;
  3. 总结了我们在使用 DolphinScheduler 时遇到的一些问题;
  4. 对于数据管道平台的总结。

数据管道

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

平台简介

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

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

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

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

技术架构

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

整个架构中,最左边是一个数据源的源端,也就是整个数据的起点。最右边就是数据源的目的端,是数据的目的地。通过中间的这个数据管道,可以实现数据的传输,中间最下边就是数据管道资源池。

在数据管道中有一个资源池的概念,我们把它分为公共资源和私有化资源。公共资源是我们平台提供的,公共资源也做到了资源队列隔离,相互之间不会有影响。如果用户对于资源有特殊要求,我们也支持用户提供机器,提供私有化的资源。

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

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

支持多种数据源

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



支持多种管道

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

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

操作简单、容易上手

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

主要界面

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

引擎设置

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

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

数据类型映射

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

任务告警

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

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

方便、丰富的日志查看

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

推广成果

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

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

主要流程

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

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

数据管道使用了哪些DolphinScheduler的API服务

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

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

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

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

参数设置

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

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

提交日志

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

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

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

在使用DolphinScheduler时遇到的问题

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

问题1:获取到的任务状态不对

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

问题2:DolphinScheduler 集群扩容,workgroup 分组遇到的问题

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

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

问题3:资源中心配置

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

总结

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

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

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

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

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

  1. SSIS 数据流的执行树和数据管道

    数据流组件的设计愿景是快速处理海量的数据,为了实现该目标,SSIS数据源引擎需要创建执行树和数据管道这两个数据结构,而用户为了快速处理数据流,必须知道各个转换组件的阻塞性,充分利用流式处理流程,利用更 ...

  2. 搭建企业级实时数据融合平台难吗?Tapdata + ES + MongoDB 就能搞定

      摘要:如何打造一套企业级的实时数据融合平台?Tapdata 已经找到了最佳实践,下文将以 Tapdata 的零售行业客户为例,与您分享:基于 ES 和 MongoDB 来快速构建一套企业级的实时数 ...

  3. 从 Airflow 到 Apache DolphinScheduler,有赞大数据开发平台的调度系统演进

    点击上方 蓝字关注我们 作者 | 宋哲琦 ✎ 编 者 按 在不久前的 Apache  DolphinScheduler Meetup 2021 上,有赞大数据开发平台负责人 宋哲琦 带来了平台调度系统 ...

  4. PB数据管道

    数据管道提供了一种不同数据库之间传递数据和(或)表结构的方法. 数据管道对象 要完毕数据管道的功能须要提供例如以下内容: 须要数据源和目标数据库,并可以和这两个数据库正常联接 须要源数据库中的哪些表: ...

  5. 基于MaxCompute的媒体大数据开放平台建设

    摘要:随着自媒体的发展,传统媒体面临着巨大的压力和挑战,新华智云运用大数据和人工智能技术,致力于为媒体行业赋能.通过媒体大数据开放平台,将媒体行业全网数据汇总起来,借助平台数据处理能力和算法能力,将有 ...

  6. 王坚十年前的坚持,才有了今天世界顶级大数据计算平台MaxCompute

    如果说十年前,王坚创立阿里云让云计算在国内得到了普及,那么王坚带领团队自主研发的大数据计算平台MaxCompute则推动大数据技术向前跨越了一大步. 数据是企业的核心资产,但十年前阿里巴巴的算力已经无 ...

  7. bi数据可视化平台带来的企业变化

    相信现在互联网的发展,大家有目共睹,在互联网的快速发展下,所产生的数据已经成为庞然大物,各行各业都在进行数据化转型,大数据分析也就成了香饽饽,bi数据可视化平台能够让数据可视化,通过数据分析可以业务人 ...

  8. 中国联通改造 Apache DolphinScheduler 资源中心,实现计费环境跨集群调用与数据脚本一站式访问

    截止2022年,中国联通用户规模达到4.6亿,占据了全中国人口的30%,随着5G的推广普及,运营商IT系统普遍面临着海量用户.海量话单.多样化业务.组网模式等一系列变革的冲击. 当前,联通每天处理话单 ...

  9. 打造实时数据集成平台——DataPipeline基于Kafka Connect的应用实践

    导读:传统ETL方案让企业难以承受数据集成之重,基于Kafka Connect构建的新型实时数据集成平台被寄予厚望. 在4月21日的Kafka Beijing Meetup第四场活动上,DataPip ...

  10. Apache Beam实战指南 | 大数据管道(pipeline)设计及实践

    Apache Beam实战指南 | 大数据管道(pipeline)设计及实践  mp.weixin.qq.com 策划 & 审校 | Natalie作者 | 张海涛编辑 | LindaAI 前 ...

随机推荐

  1. 我为什么推荐Nuxt3

    我为什么推荐Nuxt3? 大家好,我今天想和你们分享一个非常棒的前端框架--Nuxt3.自从我接触了Nuxt3,我发现它在前端开发领域具有很多优点.我想逐一向你们介绍Nuxt3的优势,并向大家推荐一些 ...

  2. Prometheus服务发现之kubernetes_sd_config

    一.为什么要使用Prometheus服务发现 之前我们讲过通过配置prometheus-operator的CRD ServiceMonitor来达到K8S集群相关组件和微服务的监控的目的,可以在Ser ...

  3. Linux 端口及防火墙常用命令

    Linux 端口及防火墙操作 查看端口操作 一. netstat命令 -t (tcp) 仅显示tcp相关选项 -u (udp)仅显示udp相关选项 -n 拒绝显示别名,能显示数字的全部转化为数字 -l ...

  4. linux下的一道堆上的格式化字符串漏洞题分析分享

    简单分享一下解题过程. 下载题目,里面有三个文件,如图: DockerFIle文件: net.sh文件: shell文件是一个elf,文件情况: 64位,Full RELO,NX,PIE 丢进IDA看 ...

  5. JSON.parse 函数 (JavaScript)

    将 JavaScript 对象表示法 (JSON) 字符串转换为对象. 语法 参数 返回值 异常 以下示例使用 JSON.parse 将 JSON 字符串转换成对象. var jsontext = ' ...

  6. 【Visual Leak Detector】库的 22 个 API 使用说明

    说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记.本篇主要介绍 VLD 库提供的 22 个外部接口.同系列文章目录可见 <内存泄漏检测工具>目录 目录 说明 1. 头文件简介 ...

  7. 基于Java实现数据脱敏

    用法 Jdk版本 大于等于1.8 maven依赖 <dependency> <groupId>red.zyc</groupId> <artifactId> ...

  8. API 网关日志的价值,你了解多少?

    本文介绍了 API 网关日志的价值,并以知名网关 Apache APISIX 为例,展示如何集成 API 网关日志. 作者钱勇,API7.ai 技术工程师,Apache APISIX Committe ...

  9. Xxl-job安装部署以及SpringBoot集成Xxl-job使用

    1.安装Xxl-job: 可以使用docker拉取镜像部署和源码编译两种方式,这里选择源码编译安装. 代码拉取地址: https://github.com/xuxueli/xxl-job/tree/2 ...

  10. Linux xfs文件系统stat命令Birth字段为空的原因探究

    在Linux平台找出某个目录下创建时间最早的文件,测试验证脚本结果是否准确的过程中发现一个很有意思的现象,stat命令在一些平台下Birth字段有值,而在一些平台则为空值,如下所示: RHEL 8.7 ...