分享嘉宾:罗海伟阿里巴巴
编辑整理:公茂涛中国科学院大学
出品平台:DataFunTalk
导读:阿里云DataWorks数据集成是DataX团队在阿里云上的商业化产品,致力于提供复杂网络环境下、丰富的异构数据源之间高速稳定的数据移动能力,以及繁杂业务背景下的数据同步解决方案。目前已经支持云上近家客户,单日同步数据超过万亿条。DataWorks数据集成目前支持离线50+种数据源,可以进行整库迁移、批量上云、增量同步、分库分表等各类同步解决方案。00年上线实时同步能力,支持0+种数据源的读写任意组合,提供MySQL,Oracle等多种数据源到阿里云MaxCompute,Hologres等大数据引擎的一键全增量同步解决方案。今天跟大家交流的内容是数据集成DataX的架构,以及在使用数据集成这款产品过程中遇到的一些问题和实践经验。
今天的介绍会围绕下面几点展开:
为什么需要数据集成
阿里云数据集成大事记
阿里云数据集成产品定位和业务支撑情况
阿里云数据集成DataX设计核心思路
阿里云数据集成DataX架构
阿里云数据集成数据同步-核心亮点
阿里云数据集成解决方案系统
阿里云DataWorks数据集成关系
智能实时数仓解决方案示例
0
为什么需要数据集成
.数据集成的应用场景
首先为什么需要数据集成,在大数据场景下,数据集成主要是解决哪些核心问题,我将其分为以下四个场景:
第一个场景就是搬站上云。搬站上云主要用来对接业务数据库,完成数仓初始化,比如用户需要把自己的云下数据库快速安全地迁移到云上存储并做进一步的业务分析,如线下MySQL、Oracle到云上MaxCompute或者是Hadoop中Hive上,这既包含了一次性全量数据迁移,还包含持续增量数据迁移。
第二个场景是构建实时数仓,做流式的数据汇聚。主要包含应用产生的日志数据,应用产生的消息数据,和应用对接数据库产生的日志数据(数据库的Binlog或者归档日志)。
第三个场景是平台融和,完成云上各个产品之间的数据同步和交换。既包含跨云平台之间的数据同步,比如从AWS、GCP到阿里云;还包含云平台内部之间的数据交换,比如阿里云内部RDS、MaxCompute、OSS、PolarDB、AnalyticDB、Datahub等之间的数据同步。
第四个场景是容灾备份。当数据分为冷热数据时,需要把冷数据放到归档数据中,极大节约成本。在数仓场景中,也可以把云上计算好的一些结果数据回流到数据库中,服务于在线数据应用。
以上是数据集成主要支撑的四个典型的数据场景。
.数据集成的角色和地位
数据集成在整个数仓建设中的角色和地位是什么呢?这里我们将数仓开发简单概括为6个模块或步骤,第一个是数据源,里面包含了各种关系型数据库、文件存储、大数据存储、消息队列等。这些异构的数据源可以通过统一的数据集成平台来将异构网络的数据统一抽取到数据仓库平台,在数据仓库平台中完成数据汇聚,进行进一步的数据分析。分析后的结果数据仍可以通过数据集成回流到在线数据库,为在线业务、在线应用提供数据查询。除此之外,还可以利用一个承上启下的产品-数据服务,对接数据应用,制作相关报表、大屏、和应用等。
综上所述,我们知道数据集成在整个数据仓库开发建设过程中起到了非常关键的作用,只有通过数据集成将异构数据源统一汇总到数据仓库中,才有后序的数据分析、数据服务、数据应用等。
0
阿里云数据集成大事记
阿里云数据集成正是为了解决数据仓库中这些经典问题而出现的,它是一款有历史渊源的产品。0年伴随着阿里巴巴数据平台事业部成立,当时推出了DataX的.0和.0版本,当时大家可能对于这款产品还没有太多了解。在04年,伴随着DataX.0版本的发布,我们将服务于内部的数据集成产品推向了阿里云(公有云、专有云),开始正式的对外提供服务。并且于06年,将数据同步引擎DataX开源到社区,助力大数据ETL生态建设。在08年DataX有了一个比较大的架构升级,将公有云、专有云、阿里内部功能统一建立全新的DataIntegration服务,进一步优化了开发效率,节约了运维成本。在09年,将数据集成能力进行了商业化。在00年,发布了数据集成的实时同步能力,可以支持数据实时传输,并且提供了一些实时同步场景解决方案。
总之,阿里云数据集成是大数据平台上下云的核心枢纽,可以将不同业务系统中数据相互打通,实现数据自由离线或实时的流动。其致力于提供复杂网络环境下,丰富的异构数据源之间高速稳定的数据移动能力,以及在繁杂业务背景下,提供数据同步解决方案。
0
阿里云数据集成产品定位和业务支撑情况
.阿里云数据集成产品定位
图中是阿里云数据集成产品的核心功能特性列表,大家在自己设计或选型ETL产品的时候,可以着重了解这些点,做选型参考。
首先,离线和实时全覆盖,这款产品既支持传统的离线同步,也支持及时高效的实时同步;
第二点,针对各种复杂网络均做了相应的解决方案和产品化能力,无论数据源在公网、IDC还是VPC等,数据集成都有对应的解决方案;
第三点,因为DataX是一个云上产品,同时需要具备一些安全的管控策略,我们将开发和生产环境隔离,进行数据源权限安全控制;
第四点,得益于这种可扩展性架构,DataX可以支持繁多的异构数据源,离线支持50+种数据源,实时支持0+种数据源读写任意组合,其中涵盖了关系型数据库、MPP、NoSQL、文件储存、消息流等各大种类;
第五点,在大数据场景中往往存在特定场景的通用需求,比如整库迁移、批量上云、增量同步、分库分表、一键实时全增量,我们将这些通用需求抽象为数据集成的解决方案,进一步降低用户使用数据集成门槛;
最后我们拥有一个非常完备的运维监控体系,能够进行流量控制、脏数据控制,能够对任务执行资源组进行监控,另外还可以设置任务告警,支持电话、短信、邮件、钉钉等。
.阿里云数据集成业务支撑情况
首先该产品现在拥有数千用户、数万名开发者,每天同步的数据量在PB级别,这些数据是由数千万个任务调度完成,而且该产品已经做到了全球地域部署覆盖,目前已经涵盖了政府、金融、保险、能源、电力、制造、互联网、零售等多个行业,几乎每一个行业都有典型的客户和场景。
04
阿里云数据集成DataX设计核心思路
.核心设计思路
左侧图是传统的数据ETL工具制作的方法,是一种网状模型,每种储存之间如果交换数据,需分别设计一套数据传输软件。比如在MySQL和FTP之间交换数据,需要实现一个MySQL到FTP的数据同步工具,在MySQL和HDFS之间交换数据,还要实现另一个同步工具,这种方法扩展性非常差。
针对这种场景,DataX做了一个非常核心的抽象,就是右侧图中蓝色的线性模型,每一种数据源统一通过DataX框架做数据交换,当增加一种新的数据源类型同步插件,便天然的具备和DataX已有的其他数据源通道进行数据交换的能力。
下面着重介绍一下具体的实现思路,首先每一种数据存储,比如MySQL,会有一个MySQL的Reader插件和一个Writer插件,Reader插件主要是用来读取MySQL中的数据,读取的模式可以是离线的同步,也可以是实时的Binlog同步,Writer插件主要是用来写入数据。DataX做了两个核心抽象,第一个是接口抽象,不论Reader还是Writer插件均有一套接口规范,只要符合接口规范,就可以纳入平台调度体系,被平台调度和使用。另外一个抽象是数据类型规范,每增加一种新的数据源,只要符合数据交换规范,就可以和平台中已经支持的其他数据源进行交换,以上就是DataX极具扩展性的原因。
我们在06年将数据同步核心同步引擎的一部分DataX开源到了社区,地址为: