DataOps for LLM 的資料工程技術架構實踐

海豚调度發表於2024-11-19

導讀

在 LLM 蓬勃發展的今天,資料工程已成為支援大規模 AI 模型訓練的基石。DataOps 作為資料工程的重要方法論,透過最佳化資料整合、轉換和自動化運維,加速資料到模型的閉環流程。本文聚焦新一代資料 & AI 整合工具- Apache SeaTunnel 在 DataOps 中的核心作用,並介紹其如何滿足 AI 對向量資料及實時處理的需求。文章還分享了白鯨開源在信創環境中的創新實踐,並展望資料工程與 DataOps 推動 AI 發展的未來趨勢。

主要包括以下四個部分:

  1. DataOps for LLM 資料工程架構
  2. 白鯨開源的工程實踐
  3. 案例介紹
  4. 資料工程的未來

分享嘉賓|代立冬 白鯨開源科技 聯合創始人 & CTO

編輯整理|Neil

內容校對|李瑤

出品社群|DataFun

01 DataOps for LLM 資料工程架構

1. 海外獨角獸企業打造資料工程平臺

file

近年來,全球資料工程架構在 AI 應用的推動下發生了巨大變化,尤其是一些海外獨角獸企業在技術上持續創新。以往的資料架構主要依賴傳統資料庫和大資料平臺,如 Oracle、Hadoop、MySQL 和 MongoDB,但現在這些資料庫紛紛增加了向量支援,適應 AI 對向量資料處理的需求,如 MongoDB、Elasticsearch 和 Redis 等。

2. 資料工程與大模型

file
關於大模型的訓練,資料工程不僅需要整合多種資料來源(包括結構化、非結構化以及向量資料),還要實現跨源資料聚合和多層次的資料驗證。

3. SeaTunnel 的誕生-企業面臨的資料挑戰

file

在企業構建資料平臺,特別是應用於 LLaMA 等大模型的過程中,資料工程團隊往往面臨多重挑戰。

4. 新技術挑戰下的 EtLT 架構

file

隨著業務場景和技術挑戰的增多,資料工程逐步從傳統的 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 相比,展現出更大的靈活性和實時性。

5. 關於白鯨開源

file

在上述技術背景下,白鯨開源專注於 DataOps 的開源商業化,主導了兩個 Apache 頂級開源專案,即Apache DolphinScheduler 和 Apache SeaTunnel。同時,白鯨也釋出有對應的商業化版本——WhaleStudio,幫助企業在大資料和 AI 時代,智慧化地解決多資料來源、多雲及信創環境下的資料整合、資料開發、工作流編排運維及部署、資料質量管控、團隊敏捷協作等一系列問題,並已在 6000 多家企業中得到實踐和使用。

6. 白鯨開源主導的 Apache 專案-DophinScheduler

file

DophinScheduler 作為資料工程中的作業系統,是資料加工的基礎平臺。白鯨開源開發並開源了這個專案,正是因為在構建資料流水線(Data Pipeline)中,排程與編排功能至關重要。資料加工並非一步完成,而是分為多個環節。環節間的銜接需要排程系統來實現,因此排程系統成為整個資料操作的核心基礎設施,甚至被稱為“資料作業系統”。

早期,資料工程的任務排程通常依賴手動指令碼和 cron,但這種方式無法滿足複雜的資料編排需求。Azkaban 和 Airflow 等工具為任務排程提供了自動化方案,尤其在程式碼定義工作流時效果較好。然而,Airflow 在大規模資料量和高頻任務場景下顯得力不從心,擴充套件性不足、缺乏友好的視覺化介面,也導致其難以應對國內數百萬級的日常排程任務量。

基於這些痛點,DolphinScheduler 於 2017 年啟動開發,2019 年開源,經過多年社群協作發展,如今已成為資料工程領域的熱門開源排程平臺。該平臺支援去中心化設計,已經幫助不少使用者穩定處理數百萬級別的日排程任務量,具有高擴充套件性和靈活的視覺化功能,適合超大資料任務量場景。

7. 白鯨開源主導的 Apache 專案-SeaTunnel

file

SeaTunnel 專案是一個旨在解決資料整合和傳輸挑戰的高效能分散式工具,被形象地稱為資料工程的高速公路。隨著現代企業面臨的資料來源種類不斷增加,如 Hadoop、Kafka、Iceberg、Doris 等,SeaTunnel 致力於實現這些不同資料來源之間的高效連線和同步。其主要目標是讓各種資料來源之間的打通變得更加簡便,促進資料的實時流動和整合。

SeaTunnel 被定位為下一代高效能資料整合工具,特別適用於大資料領域。透過支援超過 190 種資料來源的採集和傳輸,SeaTunnel 使得使用者能夠更靈活地處理複雜的業務需求,滿足從傳統資料庫到新興的向量資料庫等不同場景的需求。它不僅支援批次資料傳輸,還支援實時資料流處理,特別是在 AI 應用場景中,對於向量資料庫和流式資料處理的需求日益增加,SeaTunnel 能夠有效地支援這些需求。
在技術架構方面,SeaTunnel 採用了無中心化的設計,架構中包括 Master 和 Worker 兩個主要元件。Master 負責整體作業的管理和排程,而 Worker 則專注於執行具體的任務,包括資料的採集、轉換和寫入。每個任務的執行由 TaskExecutionService 管理,而 JobMaster 則負責對整個任務的管控,包括排程和監控任務狀態。

SeaTunnel 還提供了強大的資料處理能力,支援各種資料轉換操作,比如將原始資料清洗、過濾,甚至進行格式轉換,以滿足下游系統的要求。這一過程中的資料流動就像是高速公路上的車輛,靈活而高效。SeaTunnel 確保在資料處理過程中能夠進行斷點續傳和檢查點管理,使得在出現故障時,能夠迅速恢復任務,避免資料丟失和重複處理的問題。

2022 年,SeaTunnel 在經過兩年多的孵化後正式成為 Apache 頂級專案,標誌著它在開源資料整合領域的成熟。這一里程碑不僅展示了技術實力,也體現了中國在全球開源專案中的重要地位。透過開源,SeaTunnel 希望能夠在國際舞臺上展示中國開發者的能力,同時促進全球開發者之間的交流與合作。

file

SeaTunnel 在 2023 年增加了對向量資料庫的支援,這對於處理現代 AI 應用中的高維資料非常重要。向量型別的新增,使得使用者可以更加高效地處理和轉換向量資料,這一功能的實現離不開社群的貢獻。向量資料庫的引入,意味著 SeaTunnel 能夠處理更多樣化的資料來源,並且能夠將向量資料與其他型別的資料進行整合,進一步提升了資料整合的能力。

對於資料集的轉換,SeaTunnel 具備對語言模型(如 LLaMA)進行資料處理和增強的能力。透過與 GPT 等 API 的整合,SeaTunnel 可以執行如資料標記和增強等任務。例如,使用者可以利用這些能力判斷一個名字對應的國籍,雖然這個例子看似簡單,但實際上展現了 SeaTunnel 在資料處理中的強大靈活性和增強能力。透過應用 GPT 進行資料合成,使用者能夠在資料採集和生成上獲得更多支援,使得資料更符合實際應用需求。

在 Embedding 方面,SeaTunnel 支援多種模型的嵌入,包括豆包和千問等,同時也允許使用者自定義嵌入方式。這一設計使得 SeaTunnel 不僅可以處理標準的 Embedding 任務,還能夠滿足特定業務需求,支援不同模型的靈活整合。整個架構為外掛化設計,使用者可以透過自定義源、轉換和目標(sink)來擴充套件 SeaTunnel 的功能,這一靈活性大大提升了 SeaTunnel 在實際應用中的適應性和可擴充套件性。

file

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 的格式,確保使用者能夠無縫地在不同的資料處理框架間切換。

file

SeaTunnel 之所以能夠實現高效的資料處理,得益於其強大的分片機制和對各類引擎的特性支援。以下是其在加速資料處理方面的關鍵技術:

  • 分片與多機並行:SeaTunnel 採用分片機制,能夠將大規模的資料任務切分為多個小任務,分配到多臺機器上並行執行。這種分片多機並行的處理方式極大地提升了資料處理速度,是 SeaTunnel 快速高效的核心所在。

  • 針對性引擎適配:SeaTunnel 在設計上充分利用各類資料庫引擎的特點。例如,Doris 在資料載入時採用 stream load 方法最快,而 ClickHouse 則傾向於透過生成檔案來進行載入。SeaTunnel 在資料寫入環節會根據目標引擎的特性選擇最優的資料匯入方式,極大地提高了寫入效率。這種個性化適配機制確保SeaTunnel 能夠充分發揮各類資料庫的效能潛力。

  • 併發管理與分片均勻性:在資料處理的中間環節,SeaTunnel 採用了併發和並行的管理機制,以確保分片資料能夠均勻分佈。同時,它透過抽樣來分析各欄位型別,例如識別某欄位是字串還是整數,以此決定分片同步的最佳機制,從而實現更高效的併發處理。

  • 對比其他資料整合產品:與其他資料整合工具(如 DataX、Sqoop、Flume 等)相比,SeaTunnel 的部署相對更輕量級,且不依賴 Hadoop 生態系統。這使得 SeaTunnel 在複雜性和靈活性方面具備優勢。此外,Flume 雖然在 Hadoop 體系下運作相對簡單,但 SeaTunnel 仍然能夠提供更靈活的部署方式。

  • 多功能資料同步:SeaTunnel 支援自動建表和多表同步,且具備斷點續傳的能力,確保資料在中斷後可以從上次的位置繼續處理。同時,它為批處理和流處理的融合提供了支援,以應對近年來批流一體的趨勢。

  • 一致性與分散式事務支援:SeaTunnel 在資料準確性和一致性方面進行了專門的設計。為確保資料的一致性,SeaTunnel 使用了分散式事務技術,這對資料整合工具提出了更高的技術要求。

file

上圖中從多個維度對 Apache SeaTunnel 與其它相關產品進行了對比。
file

SeaTunnel 的 CDC(Change Data Capture)功能透過抽象設計實現了讀取和寫入端的資料變化捕捉,便於不同資料庫之間的資料同步。CDC採用 SeaTunnel 的自定義資料型別,建立資料來源與目標之間的欄位對映,進行模型推演,使欄位和型別在上下游匹配。資料分為insert、update(更新前後)和 delete 幾種型別。
CDC 的讀取流程包括快照讀取和增量讀取兩部分。快照讀取負責歷史表資料的初始化,增量讀取捕捉實時變化,透過讀取增量日誌實現動態更新,支援批流一體化轉換。SeaTunnel CDC 在初始化後自動切換到實時模式,確保資料的高效、準確同步。

02 白鯨開源的工程實踐

白鯨開源在開源專案基礎上開發了商業化產品-WhaleStudio,在 Apache DolphinScheduler 和 SeaTunnel 開源核心基礎上增加了眾多企業級特性,也強化了對國內信創環境及資料來源的支援。
file

商業化版本透過 WhaleStudio 實現了一站式的開發、測試和運維閉環管理,提供了排程、資料同步、資料質量監控以及影響分析等完整功能。 相比開源版本,商業版在 CDC 和資料來源支援方面有顯著增強,不僅支援更多資料來源,還增加了 DDL 變更報警和延時告警,提升了資料開發與運維能力。

filefilefilefile

此外,商業版提供了強大的工作流與血緣分析功能,使得使用者可以在長鏈路資料處理中檢視多層次的下游影響,透過自動重跑和故障分析來管理複雜任務的依賴關係。透過智慧告警和基線管理,系統能夠自動分析上游依賴,對如金融報表等關鍵任務提供基於依賴的告警,確保按時交付。運維能力方面,商業版透過多種智慧運維手段提升了系統在複雜任務鏈和多工環境下的穩定性和管理效率,為使用者提供了更加智慧、全面的運維支援。

03 案例分享

file

中信建投作為典型的金融行業案例,展示了透過敏捷開發與運維實現高效工作流編排的實踐。

04 資料工程的未來

展望資料工程的未來發展,白鯨開源做了諸多嘗試,讓工作流更加智慧化。
file

比如,現在可以直接查詢 GPT 作為知識庫的一部分。透過 RAG 技術,使用者可以輸入需求,比如“計算市場部門的每天銷售額”,GPT 會自動找到對應表並返回資料。此外,還可進行知識問詢,例如瞭解資料依賴、業務日曆等概念,這些日常問詢基本能夠滿足業務需求。
在技術實現方面,白鯨開源開發了 Text-to-SQL 的功能,使使用者能夠透過自然語言輸入自動生成 SQL 語句,以便在數倉加工中處理各種場景。例如使用者輸入“計算學生平均分”,系統會自動生成包含分組等操作的巢狀 SQL。白鯨開源還希望透過未來的資料工程簡化鏈路,實現從上游採集到結果的自動化處理,以減少資料工程的複雜性。
file

在資料聯結器的擴充套件上,白鯨開源也利用 ChatGPT 進行最佳化開發。SeaTunnel 目前支援 160 種資料來源,但為適應更多業務場景,需要開發更多聯結器。白鯨開源嘗試透過 GPT 自動生成介面,例如 HTTP 和 SaaS 介面相對簡單,資料庫介面較複雜,但仍能加快開發速度。此外,白鯨開源還結合 GPT 與 Copilot 來加強這一部分的開發效率,幫助 SeaTunnel 更好地支援多種資料來源和業務場景。
file

以上就是本次分享的內容,歡迎大家繼續關注白鯨開源。謝謝大家。

分享嘉賓

代立冬
白鯨開源科技聯合創始人 & CTO,白鯨開源聯合創始人, Apache 基金會孵化器導師,Apache DolphinScheduler PMC Chair & Apache SeaTunnel PMC。擔任歷屆 ApacheCon 亞洲大資料湖倉論壇出品人,並當選中國科協 “2023 開源創新榜” 優秀人物。

本文由 白鯨開源 提供釋出支援!

相關文章