影片連結:58集團大資料平臺基於Apache SeaTunnel的架構演進
https://www.bilibili.com/video/BV19GUPYcEgB/?vd_source=e139ecc995ab936267a7991b9de55f6c
引言
在數字化時代,資料已成為企業最寶貴的資產之一。58集團作為中國領先的生活服務平臺,其大資料部在資料整合平臺的建設上不斷探索與創新。本文將詳細介紹58集團基於Apache SeaTunnel的資料整合平臺的架構演進、最佳化策略以及未來規劃。
資料整合平臺的背景與挑戰
業務背景
58集團業務廣泛,隨著業務的快速發展,來自招聘、房產、二手房、二手市場、本地服務和資訊保安等業務領域的資料規模大幅上漲,58集團需要打通不同資料來源之間的資料流動和匯聚,實現資料的統一管理、流轉和共享。這不僅涉及到資料的收集、分發和儲存,還包括離線計算、跨叢集同步和使用者畫像等應用場景。
目前,58集團日均處理訊息數量達到5000億+,峰值處理訊息數達2000萬+,任務數達1600+。處理如此大規模的資料量,58集團面臨著巨大的挑戰。
挑戰
在打通不同資料來源之間的資料流動和匯聚,實現資料的統一管理、流轉和共享的過程中,58集團面臨的挑戰包括:
- 高可靠性:確保在各種故障情況下資料不丟失,保障資料一致性和任務的穩定執行。
- 高吞吐量:處理大規模資料流,實現高併發和大批次資料傳輸。
- 低延遲:滿足實時資料處理和快速響應的業務需求。
- 易維護性:簡化配置和自動化監控,減輕維護負擔,便於快速發現和解決故障,確保系統的長期可用性。
架構演進之路
58集團資料整合平臺的架構經歷了多次演進,以適應不斷變化的業務需求和技術發展。
早期架構一覽
- 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的任務和配置管理。
然而,隨著業務量的擴充套件和場景多樣化,這套架構陷入了瓶頸:
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集團採取了以下措施:
- 對於源,增加RawDeserializationSchema,相容非結構化資料
- 對於目的地,例如hive使用hdfs sink,相容分割槽載入和路徑
- 開發自動遷移工具
- 自動生成任務配置,根據kafka connect配置生成對應的seatunnel任務配置
- 下掉原任務,重置offset,啟動新任務
- 驗證和檢查
效能調優
58集團還對資料整合平臺進行了多項效能最佳化,包括:
- 增加Pulsar Sink Connector:提高吞吐量。
- 支援陣列資料:增強HbaseSink的相容性。
- 支援設定過期時間:最佳化RedisSink。
- 提高PulsarSource吞吐量:最佳化檔案聯結器的壓縮方式。
- 修復KafkaSource的解析問題:提高Kafka客戶端的配置靈活性。
監控和運維自動化
此外,58集團還透過監控和運維自動化來提高資料整合平臺的穩定性和效率:
- 任務監控:實時監控任務狀態,快速發現並解決故障。
- 運維自動化:透過自動化工具減少人工干預,提高運維效率。
後續規劃
58集團對資料整合平臺的未來發展有著明確的規劃:
- 持續完善智慧診斷能力:透過機器學習和人工智慧技術,提高故障診斷的準確性和效率。
- 上雲和容器化升級:將資料整合平臺遷移到雲環境,實現容器化部署,提高資源利用率和靈活性。
結語
58資料整合平臺的架構演進和最佳化是一個不斷迭代和創新的過程。透過不斷的技術探索和實踐,58集團成功構建了一個基於Apache SeaTunnel的高效、穩定、可擴充套件的資料整合平臺,為業務發展提供了強有力的資料支援。未來,58集團將繼續在資料整合領域深耕,為使用者提供更優質的服務。
本文由 白鯨開源 提供釋出支援!