在谈论数据处理时,人们经常将其缩写为“ETL”。然而,如果我们仔细观察,数据处理从ETL、ELT、XX ETL(如Reverse ETL、Zero-ETL)到目前流行的EtLT架构经历了多次迭代。虽然Hadoop时代主要依赖ELT(Extract、Load、Transform)方法,但实时数据仓库和数据湖的兴起使得ELT变得过时。EtLT 已成为将数据实时加载到数据湖和实时数据仓库的标准架构。
让我们探讨一下这些架构出现的原因、它们的优缺点,以及为什么 EtLT 正在逐渐取代 ETL 和 ELT 成为全球主流数据处理架构,以及实用的开源方法。
在数据仓库的早期,数据仓库的提出者Bill Inmmon将其定义为分区主体的数据存储架构,数据在存储过程中进行分类和清洗。这一时期的数据源大部分是结构化数据库(如MySQL、Oracle、SQLServer、ERP等),数据仓库主要依靠OLTP数据库(如DB2、Oracle)进行查询和历史存储。事实证明,使用此类数据库处理复杂的 ETL 流程具有挑战性。为了解决这个问题,出现了大量的 ETL 软件,例如 Informatica、Talend 和 Kettle,这些工具极大地促进了复杂数据源的集成和数据仓库工作负载的卸载。
优点:技术架构清晰,复杂数据源平滑集成,约50%的数据仓库工作由ETL软件处理。
缺点:所有处理均由数据工程师完成,导致满足业务需求的时间较长;硬件成本高,双重投资,尤其是在处理大数据量时。
在数据仓库的早期和中期,当数据源复杂性显著提高时,ETL架构成为行业标准,并持续流行了二十多年。
随着数据量的增长,数据仓库和 ETL 硬件成本不断上升。新的MPP(公众号搜索:MPP架构与Hadoop架构是一回事吗?大规模并行处理)和分布式技术的出现,导致数据仓库后期从ETL逐渐转向ELT架构以及大数据的兴起。主要数据仓库厂商之一的Teradata和新兴的基于Hadoop的数据仓库解决方案Hadoop Hive都采用了ELT架构。他们专注于将数据直接加载(没有如连接和分组之类的复杂转换)到数据仓库的数据暂存层,然后使用 SQL 或 HQL 从暂存层到数据原子层,最后到汇总层进行进一步处理,指示层。Teradata 针对结构化数据,而 Hadoop 针对非结构化数据。
优点:利用数据仓库高性能计算进行大数据量处理,带来更高的硬件投资回报率。复杂的业务逻辑可以通过SQL来处理,通过聘请数据分析师和精通业务的技术人员,降低数据处理人员的整体成本,而无需了解Spark、MapReduce等ETL工具。
缺点:适合简单、数据量大的场景。不足以应对复杂的数据源,缺乏对实时数据仓储需求的支持。
ODS(操作数据存储)是作为过渡解决方案引入的,用于处理基于 ELT 的数据仓库无法加载的复杂数据源并提高实时能力。ODS 涉及通过实时 CDC(变更数据获取)、实时 API 或批处理(微批次)将复杂数据源处理到单独的存储层,然后再将其 ELT 放入企业数据仓库。目前,很多企业仍然采用这种方式。一些公司将操作数据存储 (ODS) 放置在数据仓库中,并使用 Spark 和 MapReduce 进行初始 ETL(提取、转换、加载)过程。随后,他们在数据仓库中执行业务数据处理(使用 Hive、Teradata、Oracle 和 DB2 等工具)。
现阶段,早期的EtLT(Extract、Transform、Load、Transform)社区已经形成。其特点是角色分工,其中数据提取、变更数据捕获(CDC)、数据结构化和标准化的复杂过程通常由数据工程师(简称“t”)处理。他们的目标是将数据从源系统移动到数据仓库内的底层数据准备层或数据原子层。另一方面,具有业务属性的复杂数据原子层的处理、数据聚合以及生成数据指标(涉及Group by、Join等操作)通常由熟练使用SQL的业务数据工程师或数据分析师来完成。
随着EtLT架构的出现,像ODS这样的独立项目由于数据量的增加和EtLT原理的采用而逐渐淡出了人们的视线。
正如 James Densmore 在Data Pipelines Pocket Reference 2021中所总结的,EtLT 架构是一种现代且全球流行的数据处理框架。EtLT 的出现是为了响应现代数据基础设施的变革。
现代数据基础设施具有以下特征,从而导致了EtLT架构的出现:
云、SaaS 和混合本地数据源
数据湖和实时数据仓库
新一代大数据联邦AI应用激增
企业数据社区碎片化
复杂数据源的出现
在当前的全球企业格局中,云和SaaS的出现使得本已复杂的数据源环境变得更加错综复杂。处理 SaaS 数据催生了数据摄取的新概念,例如 Fivetran 和 Airbyte 等工具,目的是解决将 SaaS 数据摄取到 Snowflake 等数据仓库中的 ELT(提取、加载、转换)挑战。此外,随着基于云的数据存储服务(例如AWS Aurora、AWS RDS、MongoDB服务)的激增以及传统本地数据库和软件(SAP、Oracle、DB2)的共存,数据源的复杂性也随之增加。混合云架构。传统的ETL和ELT架构无法应对如此复杂的环境下处理数据的复杂性。
新一代大数据联邦的出现
在现代数据架构中,出现了一种新型架构,旨在最大限度地减少不同数据存储之间的数据移动,并直接通过连接器或快速数据加载实现复杂查询。示例包括 Starburst 的 TrinoDB(以前称为 PrestoDB)和基于 Apache Hudi 的 OneHouse。这些工具擅长数据缓存和即时跨数据源查询,因此不适合这种新的大数据联合范例中传统 ETL/ELT 工具的支持。
大型模型的兴起
随着 2022 年 ChatGPT 的出现,人工智能模型在算法上已变得可用于广泛的企业应用。目前AI应用部署的瓶颈在于数据供应,通过数据湖和大数据联邦的数据存储和查询解决了这一问题。然而,传统的ETL、ELT和流处理已经成为数据供应的瓶颈,要么无法快速集成各种复杂的传统和新兴数据源,要么无法使用单一代码库支持人工智能训练和在线人工智能应用的多样化数据需求。
企业数据社区的碎片化
随着数据驱动的方法在企业中变得越来越根深蒂固,组织内的数据用户数量迅速增加。这些用户包括传统的数据工程师、数据分析师、人工智能从业者、销售分析师和财务分析师,每个人都有不同的数据需求。在经历了 No-SQL 和 New-SQL 等各种转变之后,SQL 已成为复杂业务分析的唯一标准。现在有相当多的分析师和业务部门工程师使用SQL来解决企业内部数据分析的“最后一英里”问题。与此同时,复杂的非结构化数据的处理则留给了专业数据工程师使用 Spark、MapReduce 和 Flink 等技术。因此,这两个群体的需求存在很大差异。
在上述背景下,数据处理逐渐演变为EtLT架构:
EtLT 架构概述:
EtLT拆分了传统的ETL和ELT结构,将实时和批处理结合起来,以适应实时数据仓库和AI应用需求。
E(xtract) — 提取:EtLT 支持传统的本地数据库、文件和软件以及新兴的云数据库、SaaS 软件 API 和无服务器数据源。它可以对数据库binlog进行实时CDC和实时流处理(例如Kafka Streaming),还可以处理批量数据读取(多线程分区读取、速率限制等)。
t(ransform) — 标准化:除了 ETL 和 ELT 之外,EtLT 还引入了一个小“t”,专注于数据标准化。它将复杂且异构的提取数据源快速转换为可以轻松加载到目标数据存储中的结构化数据。它通过拆分、过滤和更改字段格式来处理实时 CDC,支持批量和实时分发到最终的 Load 阶段。
L(oad) — 加载:加载阶段不再仅仅是数据加载,还涉及调整数据源结构和内容以适应目标数据目的地(Data Target)。它应该处理源中的数据结构变化(Schema Evolution),并支持Bulk Load、SaaS加载(Reverse ETL)和JDBC加载等高效加载方式。EtLT 确保支持实时数据和数据结构更改,以及快速批量数据加载。
(T)ransform — 转换:在云数据仓库、本地数据仓库或新数据联合中,处理业务逻辑。这通常是使用 SQL 以实时或批处理模式实现的,以准确、快速地将复杂的业务规则转换为业务或人工智能应用程序可用的数据。
在EtLT架构中,不同的用户角色具有不同的职责:
EtL阶段:主要由数据工程师处理,他们将复杂且异构的数据源转换为可以加载到数据仓库或数据联合中的数据。他们不需要深入了解企业指标计算规则,但必须熟练地将各种源、非结构化数据转换为结构化数据。他们的重点是数据的及时性以及将源数据转换为结构化数据的准确性。
T阶段:由深入了解企业业务规则的数据分析师、业务SQL开发人员和AI工程师主导。他们将业务规则转化为SQL语句,对底层结构化数据进行分析统计,最终实现企业内部的数据分析,使能AI应用。他们的重点是数据逻辑关系、数据质量以及满足最终数据结果的业务需求。
现代数据架构中有多种 EtLT 的开源实现。例子包括帮助分析师和业务开发人员快速开发基于Snowflake的数据应用程序的DBT,以及用于大数据任务的可视化工作流编排工具Apache DolphinScheduler。DolphinScheduler计划推出Task IDE,允许数据分析师直接调试Hudi、Hive、Presto、ClickHouse等的SQL任务,并通过拖放创建工作流任务。
Apache SeaTunnel作为EtLT架构的代表,从支持各种云和本地数据源开始,逐渐扩展其能力包括SaaS和反向ETL,并适应大规模模型数据供应的需求。它一直在不断完善 EtLT 格局。最新的SeaTunnel Zeta计算引擎将Join和Groupby等复杂操作委托给最终的数据仓库端点,专注于数据规范化和标准化。这种方法旨在通过一套代码和高性能引擎来实现统一实时和批量数据处理的目标。此外,SeaTunnel 现在支持大型模型,使这些模型可以直接与 100 多个受支持的数据源交互,
自2022年底加入Apache孵化器以来,Apache SeaTunnel在一年内增长了五倍,目前支持100多个数据源。连接器支持已逐步改进,涵盖传统数据库、云数据库和 SaaS 产品。
Apache SeaTunnel 2.3.0 中 SeaTunnel Zeta Engine 的发布带来了数据分布式 CDC、目标源数据表的模式演化以及整个数据库和多个表的同步等功能。其优异的表现吸引了众多全球用户的关注,包括印度第二大电信运营商Bharti Airtel、新加坡电商平台Shopee.com、大型在线零售商唯品会等。
值得注意的一点是,SeaTunnel 现在提供对大规模模型训练和向量数据库的支持,实现大型模型与 SeaTunnel 支持的 100 多个数据源之间的无缝交互。此外,SeaTunnel 可以利用 ChatGPT 直接生成 SaaS 连接器,方便您的大型模型和数据仓库快速访问各种互联网信息。
随着AI、云、SaaS的复杂性不断增加,实时CDC、SaaS、数据湖、实时数据仓库加载的需求,使得简单的ETL架构已经不足以满足现代企业的需求。针对企业发展不同阶段量身定制的EtLT架构,注定会在现代数据基础设施中大放异彩。Apache SeaTunnel 的使命是“连接世界数据源并快速同步它们”,值得所有数据专业人士的关注。