数据中台基于Apache SeaTunnel的应用探索与实践

文摘   科技   2024-11-04 12:00   北京  

编者荐语:



在万物数联的时代,数据已经成为了企业和行业发展的重要内驱力。本文梳理了近年来数据集成的演变与发展历程,聚焦当前主流EtLT技术,结合亚信科技自身产品特性,对Apache SeaTunnel数据集成框架进行了深入介绍,希望能为相关从业者与学者带来启发与思考。


数据中台基于Apache SeaTunnel的应用探索与实践
亚信科技(中国)有限公司
摘要据集成是企业进行数据资产高效管理的基础,强大、规范的数据集成能力可帮助企业更好地管理、检索、开发和分析数据,提升企业业务构建和业务决策效率。Apache SeaTunnel(以下简称SeaTunnel)是新一代高性能、分布式以及海量数据集成框架,广泛应用于海量异构数据集成、CDC数据同步、SaaS数据集成以及多源数据处理场景中,可扩展和延伸传统的数据集成工具的高可用性和兼容性,助力企业构建多源多场景数据集成能力。

数据集成技术架构演进历程
随着数据二十条数据资入表等一系列政策措施相继出台,数据的战略地位进一步凸显,逐步成为企业向数字化和数智化发展的重要驱动力。但随着企业数据的激增,如何对多源化、异构化数据进行归集和同步成了数据资产管理的首要问题。为了解决这类问题,数据集成技术应运而生。

数据集成是将多个不同来源的数据通过提取、转换等处理过程,规范地、标准地整合到统一的平台中,最终使得这些数据可被统一访问、管理和分析。其发展过程具体如下:

表1:数据集成架构演变历程

由上表可见,随着湖仓一体、人工智能、大语言模型的到来,数据集成框架已经由传统的ETL、ELT演变为了EtLT。区别于ELT,EtLT在EL过程中增加了小t,即将提取的数据首先进行标准化处理,包括如格式转换、字段规范化等操作。小t过程仅做数据的简单预处理,目的是形成较为规范的、具有一定数据质量可靠性的数据;L(Load)则是将标准化后的数据加载到目标数据存储层,最后的大T(Transform)则是依赖于数据分析人员,通过SQL/HSQL实现数据业务逻辑的加工,将数据实时/批量构建成企业业务侧所需要的数据资产。此外,EtLT的数据集成的分步走,将数据处理工程师(EtL过程)与数据开发工程师(T过程)区分开,提高企业数据接入、处理、开发的流程规范性和效率。


上述特性能够很好地解决当下企业对批流数据一体化处理需求。其适用场景也从以往的数据库批处理到兼容支持混合云、SaaS、批流数据源混合等数据处理场景。当下EtLT已逐渐成为数据集成框架的主流技术,而其典型代表为Apache SeaTunnel。亚信科技数据中台产品具备对多源批流数据集成的能力,进一步基于当前主流技术框架,对Apache SeaTuunel进行了应用探索。


Apache SeaTunnel-高性能、高易用的EtLT集成框架

Apache SeaTunnel是一个非常易于使用、超高性能的分布式开源数据集成平台,支持大规模数据的实时同步。它每天能够稳定高效地同步数百亿条数据,并且已经被近100家公司在生产环境中使用。其核心的运行流程如下图所示:用户自由配置任务信息并选择提交任务的执行引擎,Source连接器将负责并行读取数据并将数据发送到下游Transform连接器或直接发送到Sink连接器,Sink连接器将数据写入目标端。在此过程中,Source、Transform以及Sink连接器可进行开发和扩展。


图1:Apache SeaTunnel工作流

由此可见,SeaTunnel的自身所具备的关键词有:数据集成、分布式、离线同步、实时同步、高效可扩展。其主要特性有:

1.支持连接器多

目前SeaTunnel已经支持100+的连接器数量,包括Source和Sink的连接器,例如ClickHouse、ClickHouseFile、Doris、Transform等,且连接器还在不断扩增中。


2.支持批流一体

针对同一个连接器,可通过单套代码,根据配置即可实现批处理或流处理的模式进行同步处理。流处理的方式中既支持以Flink为代表的纯流,也兼容了以Spark为代表的微批的方式。


3.多引擎支持

SeaTunnel支持多个版本的Flink引擎、Spark引擎以及其自身为数据同步专设的SeaTunnel引擎(Zeta)。多引擎的支持可更好兼容企业现有的技术栈,降低企业引入SeaTunnel的技术成本。


4.高性能和一致性

SeaTunnel所有的连接器都支持并行化处理,可提高整个数据同步的吞吐量;其次,其支持分布式快照的算法,在连接器内部实现了两阶段提交和幂等写入,保证数据只会处理一次,确保了数据的精确性;此外,借助实时处理和微批处理的特性,SeaTunnel又可实现数据低延迟。


基于SeaTunnel的上述众多优秀的能力,亚信科技数据中台团队引入了SeaTunnel数据集成框架,并结合自身产品特点,进行了二次开发探索与应用实现,扩展和延伸了既往数据集成工具的高可用性,满足了更多复杂的数据集成场景。


亚信科技基于SeaTunnel的应用实践探索

(一)SeaTunnel的集成目标

亚信科技数据中台AISWare DataOS(以下简称DataOS)是涵盖多源数据集成、数据开发、数据治理和数据开放等为一体的标准化、智能化的数据中台产品,具备强大且完备的数据采集与处理能力。其中,数据集成模块中,囊括了批采和流采两大部分内容。如下图所示。


图2:数据集成功能模块组成

1. 批采

•  库表采集:主要使用DataX实现。

•  文件采集:依托于自研的DP引擎

•  lETLt采集:自研的ETLt采集引擎。DataX偏向于ELT(抽取、加载、转换),适用于数据抽取入库后再进行复杂的转换,但在某些场景下需要进行EL小t(抽取、加载、简单的转换),DataX并不适合。因此,研发团队基于SparkSQL自研了一个引擎。


2. 流采

日志采集主要基于Filebeat,CDC采集主要基于Flink CDC。


可见,在上述架构中,批采与流采分离,兼容着不同的技术架构,且随着产品不断地迭代,产品持续集成了更多开源项目,如DataX、Spark、Flink CDC、Filebeat等,虽然逐步构建了一个功能完善的数据集成服务平台,但也随之带来了一些问题:


•  单机运行限制:DataX只支持单机运行,这导致DataOS产品需要在其基础上自行实现分布式调度功能,增加了系统的复杂度。


•  技术栈过于多样化:产品自身引入了多个技术栈(如DataX、Spark和FlinkCDC等),虽然功能丰富,但也导致研发成本较高,在新功能迭代时需要应对多个技术栈的兼容性和集成问题。


为解决上述问题,DataOS研发团队引入了Apache SeaTunnel引擎,在引入时,为了充分利用其高可用和高兼容性能力,团队主要在资源分配、技术栈替换、组件化SeaTunnel Connector、日志监听、多引擎混编开发适配等方面进行了应用探索与实践。


(二)SeaTunnel的实践内容


1. 取消资源分配


由于SeaTunnel本身天然支持分布式架构,无论是使用Zeta、 Flink还是Spark作为计算引擎,都能轻松实现分布式数据处理,不需要额外进行资源分配管理,因此在DataOS产品中,首要是取消了涉及DataX的资源分配部分,从而简化模块原有架构。

2. 技术栈替换

数据中台本身的多技术架构决定了数据集成模块的复杂性,后续随之带来的是实施成本和运维成本的成倍扩增。因此,团队在引入SeaTunnel后,通过SeaTunnel的Zeta引擎对现有的技术栈进行了替换,实现数据集成模块核心技术框架的精简化。包括:


•  批处理技术栈替换:用Zeta引擎替换原架构中DataX和Spark对批数据的处理能力。

•  流处理技术栈替换:用Zeta引擎替换原架构中FlinkCDC对流数据的处理能力。

同时,在技术栈的替换过程中,团队采用了分步走的方式进行逐步替换,以确保系统在技术框架过渡过程中始终保持稳定性和可用性。


3. 组件化SeaTunnel Connector


为SeaTunnel更好地适配DataOS系统的重要功能需求,从业务视角出发,团队基于SeaTunnel的Connector进行组件化设计和定制化开发,并在前台通过表单方式进行配置和可视化DAG组件编排,使得基于SeaTunnel引擎的数据集成能力在DataOS系统中更具有可读性和易用性。


图3:组件化SeaTunnel Connector构建数据集成编排


4. SeaTunnel日志监听适配


SeaTunnel支持数据集成和同步过程中每一步信息的详细监控,故通过SeaTunnel客户端提交任务后,可对SeaTunnel客户端的状态和执行日志进行监听和解析,进一步详尽分析出任务的执行状态、数据量大小、QPS等信息,完善数据集成任务的各项监控指标,便于实施人员和运维人员全面了解任务信息,实现任务的可追踪性。


5. 引擎混编开发能力适配


SeaTunnel框架支持多引擎混编开发,即在前台页面可以对一个调度任务进行多引擎的DAG编排。团队对此特性进行了集成与适配,使得DataOS数据集成模块可在一个调度任务中同时使用不同的引擎(如SQL引擎和DP引擎)实现任务开发,提高了整体数据集成模块的灵活性和扩展性。


(三)SeaTunnel的二开优化


SeaTunnel集成、使用和二次开发过程中,除了上述的实践成果,同时面临了一些技术(特别是在连接器(Connector)层面)与管理的挑战。通过团队的精研与探索,总结出了部分实践经验。


图4:基于SeaTunnel集群的二开及优化内容


1. HiveConnector的改造优化


问题描述:原始的SeaTunnel Hive Connector需要依赖MetaURL来获取元数据。然而,在实际应用中,很多第三方用户因安全问题无法提供MetaURL


解决方案:使用HiveServer2JDBC接口来获取表的元数据信息,可以避免对MetaURL的依赖。该方式可更灵活地为用户提供Hive数据的读写能力,同时确保数据安全。


2. 文件连接器的改造优化


文件系统连接器在数据集成模块的使用中占有重要地位,团队根据实际使用需求对其进行了多项改造,以适配非结构化数据的集成与处理需求


•  HDFS Connector:增加了目录递归和正则表达式扫描文件的功能,同时支持读取和写入多种文件格式(如RC、Sequence、XML、JSON)。


•  FTP和SFTP Connector:修复I/O泄露的BUG,优化连接缓存机制,确保同一IP不同账号之间的独立性。


3. 瀚高数据库的支持优化


瀚高数据库作为代表性的国产化数据库,在众多项目中均有广泛应用。SeaTunnel中尚未提供针对于瀚高数据库的读写能力,因此团队增加了对瀚高数据库的数据源读写支持。此外,还需针对瀚高数据库的一些特殊需求,开发转换组件:


•  支持行转列、列转行等复杂转换操作。

•  编写多种UDF(用户自定义函数),用于数据脱敏等操作。


4. 二段提交机制的提交优化


问题描述:在使用FTPSFTP进行文件写入时,报错提示没有写入权限。排查发现,SeaTunnel为了保证数据一致性,会先将文件写入临时目录,然后再进行移动。然而,不同账号对临时目录的权限设置不一致,最终将导致写入失败。


解决方案:在创建临时目录时,需要设置更大的权限(如777),以确保所有账号都有权限写入。同时,通过在同一文件系统下创建临时目录,避免了跨文件系统操作,也可解决文件移动过程中由于跨文件系统导致的rename命令失败的问题。


图5:FTP/SFTP写二段提交优化1


问题描述:在使用FTP和SFTP进行文件写入时,报错提示文件移动失败。


解决方案:数据正式提交时,需要将文件从/tmp/目录移动到目标目录,sftp\ftp用的rename命令进行文件移动。但SeaTunnel不支持源文件和目标文件跨文件系统时使用rename,需要保证tmp文件目录和目标文件目录在同一个文件系统下,最终解决方案是将tmp文件放到目标文件目录下。


图6:FTP/SFTP写二段提交优化2


5. DataX框架下任务割接处理


DataOS已有DataX的任务,在引入SeaTunnel后,需考虑前后任务割接的问题。经团队实践,DataX框架任务割接至SeaTunnel框架下解决方案包括如下两种:


•  相似的JSON文件生成DataOS产品数据集成任务是组件化设计,前台的组件和后台的执行引擎之间有一层转换层。因此可前台配置表单,后台通过转换层生成DataX需要执行的JSON文件。SeaTunnel的配置与DataX类似,前台同样可通过表单配置,后台生成SeaTunnel需要执行的JSON文件。因此,通过相随的JSON文件生成方式,能够无缝地将旧任务转移到新的SeaTunnel平台上,确保任务的平滑过渡。


•  SQL脚本转换开发人员编写SQL脚本,对旧有的DataX任务进行清洗和转换,使其能够适配SeaTunnel。这种方法更具灵活性和适应性,由于SeaTunnel会频繁更新,直接写硬编码进行兼容不是长久之计,而通过该脚本转换方式,可以更高效地迁移任务,适应SeaTunnel的更新。


6. 二次开发版本管理问题处理


问题描述在二次开发过程中,SeaTunnel自身也在不断更新迭代,如何解决二开版本和SeaTunnel版本的更新和同步问题?

解决方案:


•  本地分支管理:基于SeaTunnel当前使用的版本拉了一个本地分支;

•  定期合并社区更新:定期将社区的新版本合并到本地分支,确保开发团队能够及时获得社区的新功能和修复。

•  回馈社区:定期将开发团队的一些改动和个性化需求提交给社区,以期获得社区的接纳和支持,从而减少本地维护的工作量。


探索结果与成效

当前AISWare DataOS已通过引入SeaTunnel,成功实现了架构的演进和优化,提升了产品在数据集成的整体效率和可靠性:


•  整合多引擎功能:统一了多个引擎的功能,实现单一平台上的多种数据处理能力,同时引擎能力的组件化,降低了业务人员使用门槛。


•  简化资源管理:通过SeaTunnel的资源管理功能,简化了DataX等单机任务的分布式调度,降低了资源分配和管理的复杂度,提升了系统任务执行效率与稳定性。


•  降低研发与运维成本:通过统一的架构和接口设计,减少了多技术栈带来的技术人员的开发成本和运维人员的维护成本,提高了系统的可扩展性和易维护性。


图7:数据集成架构演进成果


总结与展望

行业数据指数级激增,对于各类复杂场景下的数据采集、转换、处理需求也将不断扩增,尤其是对混合云下多源数据的兼容性、数据集成算法和效率、自动化批流一体等处理场景等提出了更高的要求,EtLT架构成为了数据集成的主流技术。随着大语言模型、AI智能化的技术不断更迭,逐步涌现了更多更复杂的数据集成场景,部分数据治理领头厂商也提出了更新的数据集成架构,如Zero ETLDataFabric和数据虚拟化等


在信息化爆炸的时代,随着数据的不断扩张,国家政策的不断推进,市场对数据集成的价值认知也在不断提升,数据集成越来越得到重视,其正处于快速发展但又充满挑战的时期。无论技术架构如何演变,相信终将实现创新和突破。

参考资料

[1]SeaTunnel.关于SeaTunnel [EB/OL].2024.

[2]SeaTunnel. ELT已死,EtLT才是现代数据处理架构的终点![EB/OL].2023-08-31

[3] 里夫 Reeve, April.大数据管理:数据集成的技术,方法与最佳实践[M].机械工业出版社,2014.

[4]SeaTunnel.2024-2030数据集成成熟度曲线()[EB/OL].2024-05-22

[5]IDC,《中国数据集成软件市场技术能力评估,2024》正式发布[EB/OL].2024-07-02

[6]亚信科技, 03.AISWareDataOS_数据中台操作系统_产品白皮书 [N].亚信科技,2024-06-11

亚信科技新技术探索
亚信科技的ICT前沿技术观点与行业洞见。展现亚信新技术与产品行业实践成果。
 最新文章