对于经常从事数据开发工作的同学而言,阿里巴巴大数据研发平台Dataworks应该都比较熟悉,作为集大数据设计开发、运维监控、数据安全、数据质量管理,以及数据应用构建等全方位能力为一体的的一站式数据研发生态平台,Dataworks极大提升了数据开发工作的效率。而数据集成作为Dataworks生态系统内的子系统,为大数据综合治理解决方案提供底层数据链路支持,以其稳定高效、弹性可扩展的数据同步能力,目前已经广泛应用与集团内、公共云、专有云的各种数据同步场景。
项目背景
业务场景
通常来说,数据集成服务的业务场景如下
- 数据上云:用户需要把自己的云下数据快速安全的迁移到云上存储并做进一步的业务分析,如线下mysql、oracle到云上Maxcompute
- 异构数据源间的同步:用户的原始数据需要转移存储系统存储,或利用目标存储系统的查询、分析能力,如Maxcompute数据回流到线上mysql做在线查询
基于这些业务场景,数据集成一直以来都扮演着数据搬运工的角色,为各种各样的数据同步需求提供了强大高效的一站式解决方案。
但对于很多数据开发工作而言,将数据从源端同步到目标端只是完成了整个数据开发链路中的一个环节。限于数据集成以往仅支持数据读写的能力,如果需要对同步的源数据进行一些数据过滤、简单逻辑加工或者数据增强等一些数据处理操作,除非源数据存储系统支持,否则只能先将源原始数据全量同步到目标存储系统,再利用目标系统的能力进行数据加工。这就增加了数据开发工作的复杂度,也降低了数据处理链路的时效。
举一个例子,oss上的大量数据要同步到Mysql做在线查询,同时期望对原始数据进行一些数据过滤和简单加工。
原有方案
- oss本身不具备数据加工能力,需要配置数据同步任务1,将oss数据同步到Maxcompute上;
- 在Dataworks上开发SQL处理任务,然后运行SQL任务进行数据处理,将结果输出到Maxcompute新表
- 配置数据同步任务2,将Maxcompute新表数据同步到目标mysql存储
有上可见,为了完成这样的数据开发需求,用户需要开发数据同步,SQL处理等两种任务、三个节点,开发成本高。而在任务执行时,则是顺序依赖的运行三个任务节点,数据同步+处理的效率很差且运行成本也很高。
全域数据集成
为了提供给用户更好的数据开发体验,降低用户进行数据同步、上云、以及处理的链路成本,全域数据集成应运而生。
全域数据集成的目标是提供用户一站式的数据同步和数据处理的能力,允许用户在数据集成界面上通过简单高效的一站式操作完成这样的数据开发和运维工作,且能有效降低运行成本。
整体架构
如上图示,全域数据集成的大体组成如下
- 数据源端:对接各种网络环境下(IDC、云上、端)的各种异构数据源(流、批),支持数据从目标端读出
- 核心服务层:全域数据集成核心服务基于Dataworks基础服务构建,充分利用Dataworks已有的子系统或子模块(streamstudio、uniflow、调度、运维管理等)的能力,将数据同步、数据处理的开发和运维能力整合起来
- 同步引擎层:数据同步引擎利用Datax、Streamx的强大的读写能力和对异构网络数据源的支持能力,实现流批数据的读写
- 缓存层:缓存层作为计算层和同步引擎层的数据读写交换
- 计算层:利用Flink强大的流批统一的计算能力实现数据处理
- 目标端:对接云上以及各种网络环境的异构数据源,将数据写入目标端
数据同步和处理过程
- 利用现有数据同步引擎(Datax、Streamx)的强大读能力将源数据同步到源端缓存层
- 在数据处理层,启动Flink任务执行对源数据的过滤、加工以及数据增强的处理,并输出处理结果到目标端缓存层
- 利用现有数据同步引擎(Datax、Streamx)的强大写能力将目标端缓存层数据同步到目标端存储或计算引擎
开发态构成
全域数据集成在以往数据集成开发界面的基础上,增加了数据处理开发模块。全域数据集成整体界面构成如下:
- 数据源选择模块
包括数据源选择,以及读写参数的指定 同步策略模块
- 配置同步策略,默认是以往的列映射模式,配置需要同步的数据列,仅做数据同步;
- 激活“进行数据处理”按钮,则进入到数据处理模式,通过组件可视化方式进行处理逻辑开发;
- 列映射模式和进行数据处理是独立并存互不影响的,在任何情况下用户均可在两种模式下进行切换。
- 通道控制模块
配置数据同步的并发、资源组等任务运行时参数
数据处理模式
在同步策略模块,激活“进行数据处理”开关时即进入到数据处理开发模式,界面如下:
全域数据集成基于Flink的强大计算能力进行数据处理,在处理逻辑开发层,将Flink SQL的基本API封装成可视化的DAG算子,以DAG组件托拉拽、组件参数配置、组件连线的方式进行数据处理逻辑开发。
- 左侧组件面板
提供DAG组件的选择能力。
目前提供9种数据处理组件用于数据加工,同时数据源表组件支持用户在同步源表数据过程中join其他表数据做数据增强,数据目标表支持用户在将数据结果到同步到目标存储系统的同时,多路输出到其他表
- 右侧DAG编辑面板
提供基于DAG组件的处理逻辑编排能力。
从列映射模式首次切换到数据处理模式时,默认展示源头表和目标表两个节点,用于配置需要同步的字段。从组件面板拖拽数据处理组件、配置组件以进行处理逻辑开发,如下图示:
DAG模式支持处理逻辑实时检查,及时提醒节点以及DAG任务配置的正确性,如果节点配置有错误(如图节点上的红叉),右击节点选择“查看错误提示”可以查看错误详情。
当DAG图中的所有节点均配置正确,即完成了全域数据集成任务的开发。
通过以上方式,全域数据集成以DAG组件模式提供了用户一站式开发数据同步和数据处理任务的能力
运维态构成
发布运维
- 全域数据集成任务在运维态为一个完整的独立节点存在。用户对全域数据集成任务的运维操作(起停任务、查看日志),同其他节点一样是单节点的整体操作。
实际执行
- 全域数据集成任务同时启动了三个阶段的工作:将源数据读取到读端缓存、将读端缓存数据利用Flink引擎进行处理并输出结果到写端缓存,将写端缓存数据同步到目标存储。
- 数据在三个阶段的处理过程以类似流数据的方式进行链路式处理。因此区别于以往方式以独立的三个依赖任务节点进行顺序处理,全域数据集成任务同步数据+处理数据是连续不间断的,不需要等待所有数据处理在前一步骤全部完成,同步效率大大提高。
效果展示
总结展望
全域数据集成的整体目标是提供一站式的数据同步+数据处理的能力。目前一期功能作为先期探索,已经实现了批数据一站式同步和处理的能力,打破了数据集成原有的功能边界,也降低了用户的数据同步、上云以及处理的整体成本,未来为实现全域数据集成能力全面、轻便易用、成本集约的整体目标,会在以下几个方面继续努力:
- 提供丰富的任务开发能力:字段映射、DAG拖拽编辑、SQL编辑
- 流数据与批数据同步处理能力全面支持
- 提供丰富的任务运行模式:单机运行、分布式运行、集群模式运行
- 轻量级部署,低成本输出,灵活对接用户的运行环境以及场景
目前全域数据集成已经率先在公有云上线,期待后续给大家带来更多精彩。