高效處理日均5000億+資料:58集團基於Apache SeaTunnel的資料整合平臺架構最佳化

ApacheSeaTunnel發表於2024-11-18

影片連結:58集團大資料平臺基於Apache SeaTunnel的架構演進
https://www.bilibili.com/video/BV19GUPYcEgB/?vd_source=e139ecc995ab936267a7991b9de55f6c

引言

在數字化時代,資料已成為企業最寶貴的資產之一。58集團作為中國領先的生活服務平臺,其大資料部在資料整合平臺的建設上不斷探索與創新。本文將詳細介紹58集團基於Apache SeaTunnel的資料整合平臺的架構演進、最佳化策略以及未來規劃。

資料整合平臺的背景與挑戰

業務背景

58集團業務廣泛,隨著業務的快速發展,來自招聘、房產、二手房、二手市場、本地服務和資訊保安等業務領域的資料規模大幅上漲,58集團需要打通不同資料來源之間的資料流動和匯聚,實現資料的統一管理、流轉和共享。這不僅涉及到資料的收集、分發和儲存,還包括離線計算、跨叢集同步和使用者畫像等應用場景。

file

目前,58集團日均處理訊息數量達到5000億+,峰值處理訊息數達2000萬+,任務數達1600+。處理如此大規模的資料量,58集團面臨著巨大的挑戰。

file

挑戰

在打通不同資料來源之間的資料流動和匯聚,實現資料的統一管理、流轉和共享的過程中,58集團面臨的挑戰包括:

  • 高可靠性:確保在各種故障情況下資料不丟失,保障資料一致性和任務的穩定執行。
  • 高吞吐量:處理大規模資料流,實現高併發和大批次資料傳輸。
  • 低延遲:滿足實時資料處理和快速響應的業務需求。
  • 易維護性:簡化配置和自動化監控,減輕維護負擔,便於快速發現和解決故障,確保系統的長期可用性。

架構演進之路

58集團資料整合平臺的架構經歷了多次演進,以適應不斷變化的業務需求和技術發展。

file

早期架構一覽

  • 2017年:使用Flume進行平臺整合管理。
  • 2018年:引入Kafka Connect 1.0。
  • 2020年:使用Kafka Connect 2.4版本,實現增量負載均衡和CDC(Change Data Capture)。
  • 2023年:引入Apache SeaTunnel,整合到實時計算平臺,擴充套件各種Source/Sink。

2017年-2018年,58集團資料整合平臺採用了Kafka Connect架構,基於Kafka的資料整合,擴充套件性和分散式處理以橫向擴充套件的方式進行,支援在多節點上執行Worker和Task;Worker故障時自動將任務重新分配到其他Worker,可實現高可用;同時可進行自動化的偏移量管理,以及Rest API的任務和配置管理。

file

然而,隨著業務量的擴充套件和場景多樣化,這套架構陷入了瓶頸:

1. 架構限制

  • 做不到端到端的資料整合
    2. 協調者的瓶頸問題
  • 心跳超時:worker與協調者之間的心跳超時,會觸發任務重新平衡,導致任務暫時中斷。
  • 心跳壓力: worker與協調者進行心跳同步,協調者跟蹤worker狀態,管理大量任務的狀態後設資料。
  • 協調者失敗:協調者當機會影響任務的分配和重新分配,造成任務失敗和 處理效率下降。
    3. 任務重分配 (Rebalance) 的影響
  • 任務暫停和恢復:每次重新分配任務時,會暫停任務,然後重新分配,導致短暫的任務中斷。
  • Rebalance 風暴:如果多個worker節點頻繁加入或退出叢集,或者因為網路抖動導致心跳超時,
    可能會引發頻繁的 Rebalance,從而大幅影響任務處理效率,導致延遲。

鑑於這樣的缺陷,58集團在2013年引入了Apache SeaTunnel,整合到實時計算平臺,實現了自由擴充套件各種Source/Sink。

當前架構

當前,58集團基於Apache SeaTunnel引擎,將Source資料來源(Kafka、Pulsar、WMB、Hive等),經過SeaTunnel自帶的Transform功能,Sink到目的資料庫(Hive、HDFS、Kafka、pulsar、wmb、MySQL、SR、Redis、HBASE、Wtable、MongoDB等),實現了高效的任務管理、狀態管理、任務監控、智慧診斷等功能。

平滑遷移和效能調優

平滑遷移

引入Apache SeaTunnel時,58集團需要對資料整合平臺進行平滑遷移,以減少對使用者或業務的影響,並保證資料的一致性,做到格式一致、路徑一致和資料不丟失。

這個目標讓58集團面臨著挑戰,需要應對遷移的成本和風險
,如瞭解和確認每個任務資料來源格式,以及遷移涉及多個步驟,複雜且耗時長。

為此,58集團採取了以下措施:

  1. 對於源,增加RawDeserializationSchema,相容非結構化資料
  2. 對於目的地,例如hive使用hdfs sink,相容分割槽載入和路徑
  3. 開發自動遷移工具
    • 自動生成任務配置,根據kafka connect配置生成對應的seatunnel任務配置
    • 下掉原任務,重置offset,啟動新任務
    • 驗證和檢查

效能調優

58集團還對資料整合平臺進行了多項效能最佳化,包括:

  • 增加Pulsar Sink Connector:提高吞吐量。
  • 支援陣列資料:增強HbaseSink的相容性。
  • 支援設定過期時間:最佳化RedisSink。
  • 提高PulsarSource吞吐量:最佳化檔案聯結器的壓縮方式。
  • 修復KafkaSource的解析問題:提高Kafka客戶端的配置靈活性。

file

監控和運維自動化

此外,58集團還透過監控和運維自動化來提高資料整合平臺的穩定性和效率:

  • 任務監控:實時監控任務狀態,快速發現並解決故障。

file

file

  • 運維自動化:透過自動化工具減少人工干預,提高運維效率。

file

後續規劃

58集團對資料整合平臺的未來發展有著明確的規劃:

  • 持續完善智慧診斷能力:透過機器學習和人工智慧技術,提高故障診斷的準確性和效率。
  • 上雲和容器化升級:將資料整合平臺遷移到雲環境,實現容器化部署,提高資源利用率和靈活性。

結語

58資料整合平臺的架構演進和最佳化是一個不斷迭代和創新的過程。透過不斷的技術探索和實踐,58集團成功構建了一個基於Apache SeaTunnel的高效、穩定、可擴充套件的資料整合平臺,為業務發展提供了強有力的資料支援。未來,58集團將繼續在資料整合領域深耕,為使用者提供更優質的服務。

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

相關文章