讲师简介
长城汽车 -IDC- 数据中台部 - 刘永飞 高级工程师
我是长城汽车 IDC- 数据中台部的刘永飞,给大家分享一下咱们自研的一个数据同步工具平台,以及在应用这个工具过程中遇到的问题。明天的分享次要有四个局部:
- 咱们自研的数据管道工具平台的定位和性能;
- DolphinScheduler 在这个数据管道平台中的利用;
- 总结了咱们在应用 DolphinScheduler 时遇到的一些问题;
- 对于数据管道平台的总结。
数据管道
本章节我将介绍一下咱们自研的数据管道平台,包含技术架构、反对多种数据源、反对多种管道、次要界面、引擎设置、数据类型映射、人工告警和推广几个方面。
平台简介
数据管道是一个基于分布式技术构建的数据传输平台,反对多种数据源海量数据的实时、离线的形式传输。
数据管道可通过简略的页面配置即可实现数据传输,操作过程简略且高效,升高用户应用门槛;内设告警机制,传输工作出现异常可第一工夫通过钉钉将信息发送具体责任人。
咱们从立项之初,其实是为了解决长城汽车在数据方面的一些问题,次要指标就是连贯数据孤岛,减速数据的一元化。大家晓得但凡波及到数据,数据孤岛问题就是一个绕不开的问题,咱们就心愿可能通过数据管道连贯好各个业务线、各个领域、各个系统,真正的突破数据孤岛。
另一个指标就是减速数据一元化了,数据一元化是长城汽车在数智化转型过程中一个要害指标,做数据一元化的第一步就是数据的疾速会集,咱们也可能承当好这个疾速会集数据的角色。
技术架构
给大家介绍一下咱们的这个管道平台的技术架构。
整个架构中,最右边是一个数据源的源端,也就是整个数据的终点。最左边就是数据源的目标端,是数据的目的地。通过两头的这个数据管道,能够实现数据的传输,两头最下边就是数据管道资源池。
在数据管道中有一个资源池的概念,咱们把它分为公共资源和私有化资源。公共资源是咱们平台提供的,公共资源也做到了资源队列隔离,相互之间不会有影响。如果用户对于资源有特殊要求,咱们也反对用户提供机器,提供私有化的资源。
在资源之上就是管道引擎层,引擎层中是咱们自研的数据传输引擎,细节就不在这里体现了。
最下面的 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 可能越来越好。
本文由 白鲸开源科技 提供公布反对!