在 LLM 蓬勃发展的今天,数据工程已成为支持大规模 AI 模型训练的基石。 作为数据工程的重要方法论,通过优化数据集成、转换和自动化运维,加速数据到模型的闭环流程。本文聚焦新一代数据 & AI 集成工具- Apache 在 DataOps 中的核心作用,并介绍其如何满足 AI 对向量数据及实时处理的需求。文章还分享了在信创环境中的创新实践,并展望数据工程与 DataOps 推动 AI 发展的未来趋势。
DataOps for LLM 数据工程架构
白鲸开源的工程实践
案例介绍
数据工程的未来
分享嘉宾|代立冬 白鲸开源科技 联合创始人 & CTO
编辑整理|Neil
内容校对|李瑶
出品社区|DataFun
近年来,全球数据工程架构在 AI 应用的推动下发生了巨大变化,尤其是一些海外独角兽企业在技术上持续创新。以往的数据架构主要依赖传统数据库和大数据平台,如 Oracle、Hadoop、MySQL 和 MongoDB,但现在这些数据库纷纷增加了向量支持,适应 AI 对向量数据处理的需求,如 MongoDB、Elasticsearch 和 Redis 等。
关于大模型的训练,数据工程不仅需要整合多种数据源(包括结构化、非结构化以及向量数据),还要实现跨源数据聚合和多层次的数据验证。
在企业构建数据平台,特别是应用于 LLaMA 等大模型的过程中,数据工程团队往往面临多重挑战。
随着业务场景和技术挑战的增多,数据工程逐步从传统的 ETL 架构演进到更为灵活的 EtLT 架构。这一演变不是简单的位置转变,而是为了适应云 SaaS、混合数据源以及实时数据湖和数据仓库的需求。EtLT 架构的出现使数据处理更加敏捷,尤其是在云计算和数据引擎能力增强的背景下,这种架构更好地支持了 AI 模型训练过程中复杂多变的数据需求。例如,ClickHouse 如今可以在单机模式下实现对数百亿数据的秒级查询,这在传统数仓引擎中是难以实现的,反映了现代数据引擎在大数据处理和查询速度上的显著提升。
EtLT 架构中数据抽取的要求也更高,不仅需要实时抽取,还必须处理如 binlog 的变更以及 DDL 更新等复杂场景。例如,当上游数据表字段增减时,下游数据库或数据湖也需实时同步更新字段。这种高效的数据抽取方法在传统 ETL 流程中无法实现。此外,随着 SaaS API 的对接愈加复杂,数据抽取环节必须能够灵活适应业务变化。
在此基础上,EtLT 架构中增加的小“t”处理为数据加工提供了关键支持。数据在抽取过程中可以经过类型转换和字段过滤等处理,避免无用字段占用存储空间和计算资源。例如,若源表包含 300 个字段,而目标表只需 50 个,则通过过滤只同步必要数据,降低资源浪费。同时,脏数据的清洗和结构转换也在同步过程中完成,从而进一步提升数据质量和利用效率。
各类数据引擎在加载数据时的方式也因架构变革而多样化。例如,Doris 需要 stream load 模式,Redshift 则采用 copy 文件模式,以提高数据加载效率。在 EtLT 架构中,由于每秒需同步大量数据到数据湖或数据仓库,传统的 JDBC 方式显然已无法满足需求。EtLT 架构的这些创新设计,使其更好地适应了实时数据仓库、AI 训练等场景的高效数据处理需求,与传统 ETL 相比,展现出更大的灵活性和实时性。
在上述技术背景下,白鲸开源专注于 DataOps 的开源商业化,主导了两个 Apache 顶级开源项目,即Apache 和 Apache SeaTunnel。同时,白鲸也发布有对应的商业化版本——WhaleStudio,帮助企业在大数据和 AI 时代,智能化地解决多数据源、多云及信创环境下的数据集成、数据开发、工作流编排运维及部署、数据质量管控、团队敏捷协作等一系列问题,并已在 6000 多家企业中得到实践和使用。
DophinScheduler 作为数据工程中的操作系统,是数据加工的基础平台。白鲸开源开发并开源了这个项目,正是因为在构建数据流水线(Data Pipeline)中,调度与编排功能至关重要。数据加工并非一步完成,而是分为多个环节。环节间的衔接需要调度系统来实现,因此调度系统成为整个数据操作的核心基础设施,甚至被称为“数据操作系统”。
早期,数据工程的任务调度通常依赖手动脚本和 cron,但这种方式无法满足复杂的数据编排需求。Azkaban 和 等工具为任务调度提供了自动化方案,尤其在代码定义工作流时效果较好。然而,Airflow 在大规模数据量和高频任务场景下显得力不从心,扩展性不足、缺乏友好的可视化界面,也导致其难以应对国内数百万级的日常调度任务量。
基于这些痛点,DolphinScheduler 于 2017 年启动开发,2019 年开源,经过多年社区协作发展,如今已成为数据工程领域的热门开源调度平台。该平台支持去中心化设计,已经帮助不少用户稳定处理数百万级别的日调度任务量,具有高扩展性和灵活的可视化功能,适合超大数据任务量场景。
SeaTunnel 项目是一个旨在解决数据集成和传输挑战的高性能分布式工具,被形象地称为数据工程的高速公路。随着现代企业面临的数据源种类不断增加,如 Hadoop、Kafka、Iceberg、Doris 等,SeaTunnel 致力于实现这些不同数据源之间的高效连接和同步。其主要目标是让各种数据源之间的打通变得更加简便,促进数据的实时流动和集成。
SeaTunnel 被定位为下一代高性能数据集成工具,特别适用于大数据领域。通过支持超过 190 种数据源的采集和传输,SeaTunnel 使得用户能够更灵活地处理复杂的业务需求,满足从传统数据库到新兴的向量数据库等不同场景的需求。它不仅支持批量数据传输,还支持实时数据流处理,特别是在 AI 应用场景中,对于向量数据库和流式数据处理的需求日益增加,SeaTunnel 能够有效地支持这些需求。
在技术架构方面,SeaTunnel 采用了无中心化的设计,架构中包括 Master 和 Worker 两个主要组件。Master 负责整体作业的管理和调度,而 Worker 则专注于执行具体的任务,包括数据的采集、转换和写入。每个任务的执行由 TaskExecutionService 管理,而 JobMaster 则负责对整个任务的管控,包括调度和监控任务状态。
SeaTunnel 还提供了强大的数据处理能力,支持各种数据转换操作,比如将原始数据清洗、过滤,甚至进行格式转换,以满足下游系统的要求。这一过程中的数据流动就像是高速公路上的车辆,灵活而高效。SeaTunnel 确保在数据处理过程中能够进行断点续传和检查点管理,使得在出现故障时,能够迅速恢复任务,避免数据丢失和重复处理的问题。
2022 年,SeaTunnel 在经过两年多的孵化后正式成为 Apache 顶级项目,标志着它在开源数据集成领域的成熟。这一里程碑不仅展示了技术实力,也体现了中国在全球开源项目中的重要地位。通过开源,SeaTunnel 希望能够在国际舞台上展示中国开发者的能力,同时促进全球开发者之间的交流与合作。
SeaTunnel 在 2023 年增加了对向量数据库的支持,这对于处理现代 AI 应用中的高维数据非常重要。向量类型的添加,使得用户可以更加高效地处理和转换向量数据,这一功能的实现离不开社区的贡献。向量数据库的引入,意味着 SeaTunnel 能够处理更多样化的数据源,并且能够将向量数据与其他类型的数据进行整合,进一步提升了数据集成的能力。
对于数据集的转换,SeaTunnel 具备对语言模型(如 LLaMA)进行数据处理和增强的能力。通过与 GPT 等 API 的集成,SeaTunnel 可以执行如数据标记和增强等任务。例如,用户可以利用这些能力判断一个名字对应的国籍,虽然这个例子看似简单,但实际上展现了 SeaTunnel 在数据处理中的强大灵活性和增强能力。通过应用 GPT 进行数据合成,用户能够在数据采集和生成上获得更多支持,使得数据更符合实际应用需求。
在 Embedding 方面,SeaTunnel 支持多种模型的嵌入,包括豆包和千问等,同时也允许用户自定义嵌入方式。这一设计使得 SeaTunnel 不仅可以处理标准的 Embedding 任务,还能够满足特定业务需求,支持不同模型的灵活集成。整个架构为插件化设计,用户可以通过自定义源、转换和目标(sink)来扩展 SeaTunnel 的功能,这一灵活性大大提升了 SeaTunnel 在实际应用中的适应性和可扩展性。
Apache SeaTunnel 项目旨在提供一个轻量、高效且易于使用的数据集成工具,其主要功能包括:
轻量化设计:Apache SeaTunnel 不依赖于 Hadoop、Spark 等重量级的大数据框架。相比之下,传统的大数据处理架构常常需要大量资源来维持其运行,特别是在商业化环境中,客户可能只提供有限的机器资源,使用较重的框架如 Hadoop 和 Spark,可能会导致资源的浪费,使得其余任务难以高效执行。因此,SeaTunnel 的轻量设计旨在降低资源消耗,使用户能够在资源受限的环境中高效运行数据处理任务。
广泛的数据源支持:SeaTunnel 支持多种数据源,包括向量数据库和多模态数据库,使其能够将非结构化数据转换为结构化数据。这一功能非常适合现代数据处理需求,用户可以通过 SeaTunnel 方便地实现各种数据源的集成与同步。
流处理一体化:Apache SeaTunnel 实现了流处理与批处理的无缝切换,消除了以往在流和批之间频繁切换所需的人工干预。这样的设计不仅提高了工作效率,也减少了出错的可能性。
高性能数据读取:该项目提供了高效的并行读取和自动分片能力,使得数据处理的性能得到显著提升。通过支持全量到增量的无锁化自动切换,SeaTunnel 能够更灵活地应对数据流的变化,减少了对资源的竞争。
动态伸缩能力:SeaTunnel 具有节点的动态伸缩能力,能够根据数据处理的实际需要进行资源的调整,确保在高负载时也能维持稳定的性能。这一功能尤其适合于数据量波动较大的场景。
读缓冲和速率控制:为了提升数据读取效率,SeaTunnel 引入了读缓冲机制,允许源读取数据的同时,支持多个目标的同步。此外,它还具备速率控制功能,用户可以灵活地调整数据流的处理速度,以适应不同的业务需求。
Schema Evolution:SeaTunnel 支持 Schema Evolution,这意味着在数据源的结构发生变化(如 DDL 变更)时,系统能够自动适应,而无需手动干预。这一特性特别重要,因为在动态的业务环境中,数据模型的变化是非常常见的。
无中心化设计与多引擎支持:SeaTunnel 采用无中心化的设计,不依赖于特定的计算引擎。同时,SeaTunnel 提供多引擎的支持,用户可以根据需求选择不同的底层引擎,而无需为每个引擎实现独立的连接器。其自定义的 API 能够适配新出现的引擎,解决了引擎版本更新带来的兼容性问题。
多版本支持与 JDBC 多路复用:SeaTunnel 实现了对多版本底层引擎的支持,用户只需一次性实现集成,即可兼容流和批的操作。同时,SeaTunnel 支持 JDBC 的多路复用,能够在不同的底层引擎之间进行转换,简化了数据处理流程。
高效的数据转换:SeaTunnel 内部实现了 Spark 和 Flink 的数据结构转换,能够将 SeaTunnel 的行数据结构转换为 Spark 和 Flink 的格式,确保用户能够无缝地在不同的数据处理框架间切换。
SeaTunnel 之所以能够实现高效的数据处理,得益于其强大的分片机制和对各类引擎的特性支持。以下是其在加速数据处理方面的关键技术:
分片与多机并行:SeaTunnel 采用分片机制,能够将大规模的数据任务切分为多个小任务,分配到多台机器上并行执行。这种分片多机并行的处理方式极大地提升了数据处理速度,是 SeaTunnel 快速高效的核心所在。
针对性引擎适配:SeaTunnel 在设计上充分利用各类数据库引擎的特点。例如,Doris 在数据加载时采用 stream load 方法最快,而 ClickHouse 则倾向于通过生成文件来进行加载。SeaTunnel 在数据写入环节会根据目标引擎的特性选择最优的数据导入方式,极大地提高了写入效率。这种个性化适配机制确保SeaTunnel 能够充分发挥各类数据库的性能潜力。
并发管理与分片均匀性:在数据处理的中间环节,SeaTunnel 采用了并发和并行的管理机制,以确保分片数据能够均匀分布。同时,它通过抽样来分析各字段类型,例如识别某字段是字符串还是整数,以此决定分片同步的最佳机制,从而实现更高效的并发处理。
对比其他数据集成产品:与其他数据集成工具(如 DataX、Sqoop、Flume 等)相比,SeaTunnel 的部署相对更轻量级,且不依赖 Hadoop 生态系统。这使得 SeaTunnel 在复杂性和灵活性方面具备优势。此外,Flume 虽然在 Hadoop 体系下运作相对简单,但 SeaTunnel 仍然能够提供更灵活的部署方式。
多功能数据同步:SeaTunnel 支持自动建表和多表同步,且具备断点续传的能力,确保数据在中断后可以从上次的位置继续处理。同时,它为批处理和流处理的融合提供了支持,以应对近年来批流一体的趋势。
一致性与分布式事务支持:SeaTunnel 在数据准确性和一致性方面进行了专门的设计。为确保数据的一致性,SeaTunnel 使用了分布式事务技术,这对数据集成工具提出了更高的技术要求。
上图中从多个维度对 Apache SeaTunnel 与其它相关产品进行了对比。
SeaTunnel 的 CDC(Change Data Capture)功能通过抽象设计实现了读取和写入端的数据变化捕捉,便于不同数据库之间的数据同步。CDC采用 SeaTunnel 的自定义数据类型,建立数据源与目标之间的字段映射,进行模型推演,使字段和类型在上下游匹配。数据分为insert、update(更新前后)和 delete 几种类型。
CDC 的读取流程包括快照读取和增量读取两部分。快照读取负责历史表数据的初始化,增量读取捕捉实时变化,通过读取增量日志实现动态更新,支持批流一体化转换。SeaTunnel CDC 在初始化后自动切换到实时模式,确保数据的高效、准确同步。
白鲸开源在开源项目基础上开发了商业化产品-WhaleStudio,在 Apache DolphinScheduler 和 SeaTunnel 开源核心基础上增加了众多企业级特性,也强化了对国内信创环境及数据源的支持。
商业化版本通过 WhaleStudio 实现了一站式的开发、测试和运维闭环管理,提供了调度、数据同步、数据质量监控以及影响分析等完整功能。 相比开源版本,商业版在 CDC 和数据源支持方面有显著增强,不仅支持更多数据源,还增加了 DDL 变更报警和延时告警,提升了数据开发与运维能力。
此外,商业版提供了强大的工作流与血缘分析功能,使得用户可以在长链路数据处理中查看多层次的下游影响,通过自动重跑和故障分析来管理复杂任务的依赖关系。通过智能告警和基线管理,系统能够自动分析上游依赖,对如金融报表等关键任务提供基于依赖的告警,确保按时交付。运维能力方面,商业版通过多种智能运维手段提升了系统在复杂任务链和多任务环境下的稳定性和管理效率,为用户提供了更加智能、全面的运维支持。
中信建投作为典型的金融行业案例,展示了通过敏捷开发与运维实现高效工作流编排的实践。
展望数据工程的未来发展,白鲸开源做了诸多尝试,让工作流更加智能化。
比如,现在可以直接查询 GPT 作为知识库的一部分。通过 RAG 技术,用户可以输入需求,比如“计算市场部门的每天销售额”,GPT 会自动找到对应表并返回数据。此外,还可进行知识问询,例如了解数据依赖、业务日历等概念,这些日常问询基本能够满足业务需求。
在技术实现方面,白鲸开源开发了 Text-to-SQL 的功能,使用户能够通过自然语言输入自动生成 SQL 语句,以便在数仓加工中处理各种场景。例如用户输入“计算学生平均分”,系统会自动生成包含分组等操作的嵌套 SQL。白鲸开源还希望通过未来的数据工程简化链路,实现从上游采集到结果的自动化处理,以减少数据工程的复杂性。
在数据连接器的扩展上,白鲸开源也利用 ChatGPT 进行优化开发。SeaTunnel 目前支持 160 种数据源,但为适应更多业务场景,需要开发更多连接器。白鲸开源尝试通过 GPT 自动生成接口,例如 HTTP 和 SaaS 接口相对简单,数据库接口较复杂,但仍能加快开发速度。此外,白鲸开源还结合 GPT 与 Copilot 来加强这一部分的开发效率,帮助 SeaTunnel 更好地支持多种数据源和业务场景。
以上就是本次分享的内容,欢迎大家继续关注白鲸开源。谢谢大家。
代立冬
白鲸开源科技联合创始人 & CTO
代立冬,白鲸开源联合创始人, Apache 基金会孵化器导师,Apache DolphinScheduler PMC Chair & Apache SeaTunnel PMC。担任历届 ApacheCon 亚洲大数据湖仓论坛出品人,并当选中国科协 “2023 开源创新榜” 优秀人物。