Flink OLAP 助力 ByteHTAP 亮相資料庫頂會 VLDB
動手點關注
乾貨不迷路
一句話文章簡介:
複雜查詢 QPS 破百,位元組跳動 Flink OLAP 助力 ByteHTAP 亮相資料庫頂會 VLDB。
2022 年 9 月 5 日至 9 月 9 日,VLDB 2022 在澳大利亞悉尼舉行。 位元組跳動基礎架構研究成果《 ByteHTAP : ByteDance’s HTAP System with High Data Freshness and Strong Data Consistency》被 VLDB 2022 接收,並受邀進行現場報告。
VLDB 會議 全稱 International Conference on Very Large Data Bases,是 資料庫領域歷史悠久的三大頂級會議 (SIGMOD、VLDB、 ICDE ) 之一 ,同時也是資料庫領域傑出研究和發展成果的實時傳播場所,反映了當前資料庫研究的前沿方向、工業界的最新技術和各國的研發水平。VLDB 自 1975 年成立,每年吸引全球頂級研究機構投稿,對系統創新性、完整性、實驗設計等方面都要求極高。
論文核心貢獻
《 ByteHTAP : ByteDance’s HTAP System with High Data Freshness and Strong Data Consistency》 介紹了位元組跳動為應對業務場景而構建的具有高資料新鮮度和強資料一致性的 HTAP 系統。
-
ByteHTAP 採用獨立引擎和共享儲存架構,它的模組化系統設計充分利用了位元組跳動現有的 OLTP 系統和 OLAP 系統。
-
ByteHTAP 可以在不到 1 秒的延遲下提供高資料新鮮度,為客戶帶來許多新的商機,客戶還可以根據業務需求配置不同的資料新鮮度閾值。
-
ByteHTAP 通過其 OLTP 和 OLAP 系統的全域性時間戳提供強大的資料一致性,使研發人員不必處理系統中複雜的資料一致性問題。
-
ByteHTAP 使用 Flink 作為 OLAP 計算引擎,在計算和儲存中引入了一些重要的效能優化,例如重構 Flink 作業排程流程以提升查詢 QPS,將計算推到儲存層,以及使用刪除點陣圖來有效地處理刪除等。
-
文章最後分享了位元組跳動在生產中開發和執行 ByteHTAP 的經驗教訓與最佳實踐,包括跨 OLAP 資料庫查詢能力、高效的資料匯入、對 Flink 的開發增強等。
核心計算引擎 Flink OLAP
Flink 作為 ByteHTAP 系統的 OLAP 計算引擎,目前已經在公司內部多個業務上線使用。位元組跳動 Flink 技術團隊為 Flink 引擎支援 OLAP 計算做了大量深入優化,有效提升 Flink OLAP 計算效能。目前1600 核叢集,小資料量下128併發簡單查詢排程 QPS 達到 1000 以上,複雜查詢排程 QPS 達到 100 以上;1000 併發 WordCount 查詢 Latency 在 100ms 左右。接下來我們會以 http://issues.apache.org/jira/browse/FLINK-25318 為主,陸續將內部優化貢獻給社群。
-
查詢優化器。支援 TopN,Aggregate 等運算元下推;支援 Plan Cache 和 DAG 並行構建;支援 Cached Catalog。TPC-DS SF100 效能提升 20% 以上。
-
查詢執行優化。支援 ClassLoader 複用和跨作業的 Codegen Cache,降低執行階段 CPU 使用率和 Meta Space 佔用;實現 Runtime Filter 優化 Join 計算效能;非同步資料讀取和併發度優化等。
-
資源管理 和作業排程。 簡化查詢資源申請和釋放流程,優化 JobMaster 與 ResourceManager/TaskManager 節點互動,實現按照 TaskManager 粒度分配作業資源,提升資源申請效能;支援批量部署計算任務,優化部署結構和序列化/反序列化,提升計算任務部署效能。
-
查詢結果管理。實現通過 Websocket 協議提交查詢,計算結果返回從 Pull 模式優化為 Push 模式,避免 Pull 輪詢等待耗時;通過 Dispatcher 連線複用,減少 JobMaster 和 TaskManager 在查詢和計算任務初始化時建立不必要的連線和互動,降低查詢 Latency。
-
記憶體管理優化。優化 MemoryManager 和 NetworkBufferPool 記憶體申請和釋放管理,減少計算任務啟動和停止時的記憶體互動次數和鎖數量;通過減少不必要的 Metrics,增加並行 GC 等優化降低 JobManager/TaskManager 節點的 FGC/YGC,提升查詢執行效能和生產叢集穩定性。
-
網路管理優化。實現 TaskManager 多作業網路連線複用,優化上下游計算任務 Partition Request 互動流程,減少了網路層頻繁初始化損耗和上下游計算任務訊息數量,提升計算任務初始化效能。
-
資源隔離管理。支援按照 TaskManager 維度管理資源組,多租戶間查詢作業實現物理隔離;實現 TaskManager 內計算任務細粒度排程和執行,支援高負載情況下的小查詢優先策略。
位元組跳動最佳實踐
在位元組跳動內部,ByteHTAP 目前已支援 User Growth、電商、幸福裡、飛書等業務,共 11 個叢集 6000+ Core AP 資源,每天 Query 50w+。
作為 ByteHTAP 核心計算引擎的 Flink OLAP,目前相關能力正逐步上線火山引擎商業化產品- 流式計算 Flink 版 (http://www.volcengine.com/product/flink) 。作為將位元組跳動內部雲原生大資料方案整合優化後輸出的企業級統一計算引擎,流式計算 Flink 版具備開箱即用、彈性部署、流批一體、OLAP 多模態計算等特性。
掃碼直達流式計算 Flink 版官網
戳 “閱讀原文”, 獲取論文原文!
- 基於序列標註模型的主動學習實踐
- 加密技術科普
- 二維碼掃描優化
- 前端監控系列4 | SDK 體積與效能優化實踐
- 特效側使用者體驗優化實戰 —— 包體積篇
- 深入理解 Android Studio Sync 流程
- 選擇 Go 還是 Rust?CloudWeGo-Volo 基於 Rust 語言的探索實踐
- 初探自然語言預訓練技術演進之路
- 高效能 RPC 框架 CloudWeGo-Kitex 內外統一的開源實踐
- 開源 1 週年突破 1w Star - CloudWeGo 開源社群實踐分享
- Go 語言官方依賴注入工具 Wire 使用指北
- prompt 綜述
- 資料血緣圖譜升級方案設計與實現
- GitHub 9K Star!位元組高效能開源微服務中介軟體 CloudWeGo 技術沙龍來了!
- 火山引擎 RTC 自研音訊編碼器 NICO 實踐之路
- 如何做好分散式任務排程——Scheduler 的一些探索
- 正式開源!無恆實驗室推出 appshark 自動化漏洞及隱私合規檢測工具
- 不改一行業務程式碼,飛書 iOS 低端機啟動優化實踐
- Redis 持久化策略淺析
- Go 語言官方依賴注入工具 Wire 使用指北