與創新者同行,Apache Doris in 2023

SelectDB發表於2023-11-09

在剛剛過去的 Doris Summit Asia 2023 峰會上,Apache Doris PMC 成員、飛輪科技技術副總裁衣國壘帶來了“與創新者同行”的主題演講,回顧了 Apache Doris 在過去一年所取得的技術突破與社群發展,重新思考了在面對海量資料實時分析上的挑戰與機遇,全面介紹了 Apache Doris 在未來的迭代計劃與演進方向。 以下為衣國壘在峰會上的演講節選,以衣國壘第一人稱敘述,經編輯。

非常高興可以看到這麼多朋友共聚一堂,現場幾乎座無虛席。我也相信,同樣有很多朋友線上上觀看峰會直播,跨越空間的距離,與我們共享此刻。

今年的主題是 「與創新者同行」,按照慣例往往在開場需要對主題進行闡述,不過我希望把這一環節放在最後,希望大家能跟隨我的節奏。相信在今天的分享結束後,大家會對這一主題有著更加深刻的認識。

Apache Doris in 2023


01 從“全面進化”到“里程碑式的跨越”

回顧 Apache Doris 過去的發展歷程,如果用一個關鍵詞來形容 Apache Doris 在過去 2022 年所取得的種種收穫,我們相信是“厚積而薄發後的全面進化”—— 在 2022 年所釋出的版本中,我們全面啟用了向量化執行引擎、實現了主鍵模型上 Merge-on-Write 資料更新模式、引入統一的資料湖對接框架 Multi-Catalog 以及毫秒級的 Schema Change 等重磅特性,在效能、穩定性、易用性等取得了全面進化。
而對於即將過去的 2023 年,我們迎來了具有里程碑意義的 2.0 版本。從貢獻者和 Commits 資料可以看到,2.0 版本合入的 PR 超過 4100 個,比 1.2 版本增加了 70%、比去年同期釋出的 1.1 版本更是增長了近 10 倍,參與這一版本開發的貢獻者數量達 275 位之多,這一版本的釋出也標誌著我們實現了“里程碑式的跨越”:

  • 引入自適應的並行執行模型和全新查詢最佳化器,盲測效能提升 10 倍,多表關聯提升 13 倍,單表場景提升 10 倍、高併發點查詢提升 20 倍;
  • 從報表和 Ad-hoc 等典型 OLAP 場景擴充到湖倉一體、高併發資料服務以及日誌檢索與分析,支撐更統一多樣的分析場景;
  • 支援實時資料高吞吐寫入、秒級時延,對各類資料更新都有完備的支援,構建更高效易用且穩定的實時資料處理和分析鏈路;


02 全球最活躍的開源大資料專案之一!

在社群生態方面,Apache Doris 社群同樣也愈加繁榮,從開發者規模和開發者活躍度指標上可見:

  • 在 GitHub 上 Apache Doris 已經收穫了超過 9800 個 Star,與去年同期相比增長近 70%,且保持持續增長的態勢;
  • 總的貢獻者規模已經增長至近 590 位,每週都會有許多新面孔開始參與社群貢獻;
  • 平均每月的活躍貢獻者已穩定在 120 人左右,已大幅超過全球知名的開源大資料專案,包括 Spark、Elasticsearch、Trino、Druid 等;
  • 這些貢獻者們每週都會為 Apache Doris 貢獻超過 160 個 PR,同時社群也建立了更加成熟穩定的 CL 流水線,每個合入的程式碼都會經過數千測試用例,這也使得社群以極快速度迭代的同時,穩定性也得以保證;

這一系列數字無不說明, Apache Doris 現在已經成為全球最活躍的開源大資料專案之一



除此以外,我們也看到貢獻者來源更加多元化,廣泛分佈於國內的資料庫獨角獸企業和眾多一線網際網路公司,我們也看到阿里雲、騰訊雲、華為雲、百度智慧雲、天翼雲以及火山引擎等頂尖雲廠商也紛紛投入社群共建,並提供了基於 Apache Doris 的雲上數倉託管服務,給予開源使用者更多選擇。

03 開源實時資料倉儲領域的事實標準!

在技術加速迭代的同時,我們也看到有越來越多的使用者開始選擇相信 Apache Doris,社群已經聚集了超過 30000 名資料庫以及大資料相關領域的工程師,享受由 Apache Doris 帶來的分析體驗。
在過去許多社群使用者的印象中,Apache Doris 更多是被網際網路企業所使用,例如百度、美團、小米、京東、騰訊等網際網路一線企業。而現如今所覆蓋的行業領域已越來越廣泛,不論是金融、政企、電信、製造亦或是交通、物流、快速消費品行業等,都有著許多企業在其核心分析業務中應用 Apache Doris。
在此我很高興地宣佈,截至目前  Apache Doris 在全球範圍的使用者規模已經超過了 4000 家!這 4000 多家企業使用者中,絕大多數都與我們有著直接的接觸,不論是反饋需求、參與測試、提交程式碼或是分享實踐經驗,都在以他們的方式回饋和貢獻社群。他們中的許多也參與了今天的峰會分享,我們也期待他們真實業務場景的經驗收穫能為更多人帶來啟發。
在如此龐大的使用者規模下,Apache Doris 已成為各行各業使用者在使用實時資料倉儲的選擇,成為開源實時資料倉儲領域的事實標準!

我們如何應對實時分析的挑戰


從 Apache Doris 誕生之初,就一直致力於解決人們海量資料實時分析的難題。而從過去版本的發展脈絡中,我們同樣可以清晰感受到,為了更好地應對使用者在真實業務場景中的挑戰,Apache Doris 在朝著 實時分析、融合統一和雲原生這三大趨勢上持續演進,這也是我們在 2023 年聚焦的開發方向;

  • 實時分析:在大規模實時資料上實現查詢效能,既包含了資料的高吞吐實時寫入和實時更新、也包含了更低的查詢分析時延;
  • 融合統一:在一套系統中提供對多種分析負載的支援、簡化複雜架構帶來的運維使用成本,除了持續加強過去 Apache Doris 一直比較擅長的報表分析和即席查詢外,湖倉聯邦分析、日誌檢索分析、ETL/ELT 的查詢加速以及高併發 Data Serving 等分析場景也是重要的突破方向;
  • 雲原生化:面向雲端計算基礎設施進行革新,利用雲的彈性降低儲存和計算成本,支援遷移到 K8s 容器等更多環境中進行部署及執行。

01 查詢效能

開頭我們也曾提到過,在 Apache Doris 2.0 版本中我們實現了盲測效能 10 倍以上的提升,這其中最重要的部分在於 CBO 查詢最佳化器和自適應的 Pipeline 並行執行模型。
CBO 查詢最佳化器: 過去 Apache Doris 多服務於線上報表業務,這些場景往往是將資料打平儲存進寬表中以應對分析,即使存在多表關聯往往也較為簡單,因此發揮效能的關鍵在於掃描和聚合的效率。而當越來越多使用者基於 Apache Doris 進行復雜計算或 ELT/ETL 批次資料處理時,大寬表或者預聚合表這種空間換時間的方式很難發揮作用,需要人工介入進行調優並改寫 SQL ,查詢效能遭遇到挑戰。為此我們花費了大量的時間進行了查詢最佳化器的重構,並在 Apache Doris 2.0 版本中正式釋出。在面對數千上萬行的複雜 SQL 或者數十張表的關聯計算時,CBO 最佳化器可以生成更高效的 Query Plan 並提升查詢效能,減少因人工調優帶來的人力消耗和心智成本。
Pipeline 並行執行模型: 過去版本中在發起 Query 時 BE 執行併發度需要進行手工調整,同樣也需要人工介入,並且大小查詢在同一個叢集執行時會遭遇資源搶佔問題。為此我們引入了 Pipeline 執行模型作為查詢執行引擎,系統自動調整執行並行度,並可以保證大小查詢的穩定執行,提升了 Apache Doris 對於 CPU 的利用效率,因此在混合負載場景下查詢效能和穩定性都得到了全面提升。



與此同時,在 Apache Doris 2.0.0 版本我們引入了全新的行列混合儲存以及行級 Cache,使得單次讀取整行資料時效率更高、大大減少磁碟訪問次數,同時引入了點查詢短路徑最佳化、跳過執行引擎並直接使用快速高效的讀路徑來檢索所需的資料,並引入了預處理語句複用執行 SQL 解析來減少 FE 開銷,在併發能力上實現了數量級的提升。

面向高併發 Data Serving 場景 ,實現了單節點 30000 QPS 的並發表現,較過去版本點查詢併發能力提升超 20 倍。



在多維度檢索場景中 ,我們同樣引入了倒排索引來提升效能,在關鍵字模糊查詢、等值查詢和範圍查詢等場景中均取得了顯著的查詢效能和併發能力提升。



02 實時寫入與更新

匯入效能最佳化: 聚焦於實時分析,我們在過去的幾個版本中在不斷增強實時分析能力,其中端到端的資料實時寫入能力是最佳化的重要方向,在 Apache Doris 2.0 版本中,我們進一步強化了這一能力。透過 Memtable 並行下刷、單副本匯入等最佳化,使實時匯入效能獲得 2-8 倍的提升。



Merge-on-Write: Unique Key 主鍵模型的 Merge-on-Write 資料更新模式最初是在 Apache Doris 1.2 版本中引入,而在 Apache Doris 2.0 版本中這一能力得到進一步最佳化,功能穩定性得到大幅提升,並透過寫入效能的最佳化在典型使用者場景中,實現了近百萬行每秒 Upsert 操作的峰值寫入吞吐,同時引入了資料的關聯更新以及部分列更新,實現了對各類更新操作的完整支援。



瞭解更多: 10x 查詢效能提升,全新 Unique Key 的設計與實現|新特性解讀

03 更多分析場景

湖倉一體: 在 Apache Doris 1.2 版本中我們引入了 Multi-Catalog 功能,支援了多種異構資料來源的後設資料自動對映與同步,實現了便捷的後設資料和資料打通。在 2.0.0 版本中,我們進一步對資料聯邦分析能力進行了加強,引入了更多資料來源,並針對使用者的實際生產環境做了諸多效能最佳化,在真實工作負載情況下查詢效能得到大幅提升。這一框架也幫助我們可以更好進行跨源的資料同步,只需要簡單的 insert into select 即可實現資料快速寫入 Doris 中。

瞭解更多: 查詢效能較 Trino/Presto 3-10 倍提升!Apache Doris 極速資料湖分析深度解讀

半結構化資料分析與日誌檢索分析:日誌檢索分析是 Apache Doris 後續重點發力的場景之一,在 Apache Doris 2.0.0 版本中我們提供了原生的半結構化資料支援,在已有的 JSON、Array 基礎之上增加了複雜型別 Map,並基於 Light Schema Change 功能實現了 Schema Evolution。與此同時,2.0.0 版本新引入的倒排索引和高效能文字分析演算法全面加強了 Apache Doris 在日誌檢索分析場景的能力,可以支援更高效的任意維度分析和全文檢索。結合過去在大規模資料寫入和低成本儲存等方面的優勢,相對於業內常見的日誌分析解決方案,基於 Apache Doris 構建的新一代日誌檢索分析平臺實現了 10 倍以上的價效比提升。

瞭解更多: 如何基於 Apache Doris 構建新一代日誌分析平臺|解決方案

更精細化的多租戶與資源管理方案 當單個叢集應對多種分析負載時,隨之而來的問題即如何保證相互之間的資源搶佔,為此在 2.0 版本中我們引入了資源隔離方案,透過對 Workload 進行分組管理,以保證記憶體和 CPU 資源的靈活調配和管控,此外我們還引入了查詢排隊的功能,在建立 Workload Group 時可以設定最大查詢數,超出最大併發的查詢將會進行佇列中等待執行,以此來緩解高負載下系統的壓力。



04 低成本與高可用

降儲存成本: 在儲存方面,冷熱資料往往面臨不同頻次的查詢和響應速度要求,因此通常可以將冷資料儲存在成本更低的儲存介質中。因此在 2.0 版本中推出了冷熱資料分層功能,冷熱資料分層功能使 Apache Doris 可以將冷資料下沉到儲存成本更加低廉的物件儲存中,同時冷資料在物件儲存上的儲存方式也從多副本變為單副本,儲存成本進一步降至原先的三分之一,同時也減少了因儲存附加的計算資源成本和網路開銷成本。透過實際測算,儲存成本最高可以降低超過 70%。



瞭解更多: Apache Doris 冷熱分層技術如何實現儲存成本降低 70%?|新版本特性

支援部署在公有云/私有云/K8s: 面對更多使用者在公有云、私有云以及 K8s 等環境的部署要求,我們開發了 K8s Operator,可以實現對 FE、BE以及 Compute Node、Broker 等所有節點的部署、擴縮容、健康檢查等一系列運維工作,此外還支援對 Compute Node 節點 Auto Scaling ,根據自機器的負載進行自動擴容。這一功能目前已經在社群使用者中大規模試用,並將在後續的版本中正式釋出出來。



實現跨叢集複製 :在 Apache Doris 2.0.0 版本中,我們同樣引入 CCR 的功能在庫/表級別將源叢集的資料變更同步到目標叢集,可以更好實現讀寫負載分離以及多機房備份,並可以更好支援不同場景的跨叢集複製和災備需求。

走向實時分析的下一步


回顧完在 2023 年的進展後,承前而啟後,該聊聊正在做以及未來即將要做的事情。
定位於實時資料倉儲,後續 Apache Doris 社群仍會繼續堅守實時分析、融合統一及雲原生化這三大方向,每一方向都有許多有意義的工作在陸續開展中。

01 更快的分析效能與更實時的資料寫入及更新

查詢引擎方面 ,在即將釋出的 2.1 版本中,CBO 查詢最佳化器將實現全自動的統計資訊收集,並提供豐富的 Hint 語法,在最佳化器規則失效的時候可以支援手動調整規則,我們也將會發布 TPC-DS 的效能測試報告。多表物化檢視是社群使用者呼聲已久的功能,也將於 2.1 版本加入進來,同時我們還將引入 Union All 運算元並行執行來進一步加速 ETL 操作的執行效能,後續使用者在 Apache Doris 進行大批次資料處理將會執行得更快更穩定更簡易。我們還會引入新的 Join 演算法,將多表 Join 效能進一步至之前的兩倍。



實時資料寫入方面 ,我們將對所有資料寫入的語義進行統一,無論是關係型資料庫、資料流、本地檔案或者資料湖的資料檔案,對於 Apache Doris 而言都將統一具象為關係表、可以透過 insert into 的統一語義來實現資料寫入。同時我們還將簡化資料寫入的鏈路,透過內建的 Job 排程來執行資料寫入,避免引入第三方的資料同步元件。我們將引入服務端攢批機制,在上游資料高頻寫入時透過服務端攢批來避免小檔案合併問題、降低資料庫的寫入壓力。

實時資料更新方面 ,Merge-on-Write 模式將會預設開啟,以此實現任意列的靈活更新,後續將基於 Merge-on-Write 實現所有資料模型的統一,減少使用者在各種資料模型上的選擇。

在可觀測性方面 ,我們將為使用者提供全新的 Profile 便於使用者定位運算元執行情況,同時支援查詢任務的進度動態展示,並可以整合至 Doris Manager 中以視覺化的方式展現,這部分功能已經開發就緒、在 2.1 版本中即將上線。


02 更多查詢分析場景的統一



在湖倉一體場景上 ,我們會充分結合多表物化檢視與內建 Job 排程的能力,將物化檢視擴充到資料湖的多種資料來源上,無需任何其他元件、依靠自身排程能力即可實現從資料湖到資料倉儲的 ETL 作業以及數倉分層建模。在 2.0 版本中我們已經實現了對 JDBC 資料來源的寫回操作,後續對資料的寫入將會擴充到 Iceberg、Hudi、Paimon 等,實現資料查詢分析的更完整閉環。

除了讀取更多資料來源的資料之外,Apache Doris 也在打通被外部訪問的資料通道。目前 Doris 對外輸出資料的介面採取了 MySQL 連線協議,在應對大規模資料讀取或者資料科學場景時(例如 Pandas 之類的資料科學引擎),MySQL 協議的吞吐成為了系統瓶頸,因此在後續版本中 我們引入了基於 Arrow Flight 的高速資料讀取介面,直接透過 BE 將資料進行傳輸,在實際測試過程中資料吞吐效能較過去提升了超過 100 倍



在半結構化資料分析和日誌分析場景中 ,我們會增加倒排索引對更加複雜型別的支援,包括對於 Array、Map、GEO 等複雜型別。 值得一提的是,為了應對日誌場景對儲存欄位 Schema Less 的需求,我們會在 2.1 版本中引入 Variant 資料型別,可以支援任意型別、任意形狀的 JSON 格式文件資料,可以支援自動動態地處理列增加或型別變更,完全不需要繁瑣的 DDL 操作以及 Schema Change 操作。



在負載管理方面 ,我們仍會持續探索靈活的混合負載管理, 支援透過 SQL 來建立和管理 Workload Group 並調整資源配置,保證負載隔離性的同時實現資源利用率的最大化。

03 雲原生和存算分離

在之前的文章中我們曾介紹到 SelectDB Cloud 存算分離版本將會合入社群,但程式碼結構整理、相容性改造以及合入的工作量超過我們預期,好在這一工作已經進入尾聲。在 Apache Doris 2.1 版本中所有程式碼結構的調整將會完成,預計在 2.2 版本中將會面向社群全面可用,屆時大家都可以感受全新雲原生架構帶來的彈性,敬請期待。


與創新者同行


在演講的最後,我想介紹下本次峰會籌備的幕後故事。我們一直在思考該傳達什麼樣的理念給所有社群使用者,但一直沒有找到特別精準的表達。
在回顧了 Apache Doris 從誕生至今這十年的發展過程後,我們想到,這不就是一個講述技術創新的故事麼?
在 SQL on Hadoop 的時代,Doris 選擇獨立於 Hadoop 生態、不依賴 HDFS 進行資料儲存、不依賴 Zookeeper 進行分散式管控,任一程式都可實現線上擴縮容並保證高可用;面對語法各異的大資料元件中,Doris 選擇支援標準 SQL 併相容 MySQL 協議,極大簡化了使用者的使用門檻;基於自研的預聚合儲存引擎、物化檢視和 MPP 執行框架,充分利用多機多核的平行計算能力,實現了大規模資料上的極速查詢效能…… 正是因為堅持技術創新才使得 Apache Doris 的生命力愈加旺盛
到現如今,我們在 Apache Doris 中引入了諸多的功能創新點,倒排索引、行列混存、毫秒級線上 Schema Change、Merge-on-Write 寫時合併、Variant 資料型別 ……  每一步都是在持續引領技術創新
所以這裡的 「與創新者同行」有幾層含義:

  • 我們希望與熱愛開源技術的開源貢獻者們一起,以技術創新為資料世界帶來些改變;
  • 我們希望把認可並信賴 Apache Doris 的使用者代表聚集起來,以真實場景中的應用創新為更多人帶來啟發;
  • 我們也希望與上下游合作伙伴、雲服務廠商一起,以產品創新為行業注入新的活力,為所有使用者帶來新的選擇。

選擇 Apache Doris,就是選擇與眾多創新者同行
在最後,我們也致敬每一位追風趕月的創新者們,也期待與更多創新者與一同前行,探索資料世界的更多可能性。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70017904/viewspace-2993655/,如需轉載,請註明出處,否則將追究法律責任。

相關文章