什么是Apache Doris
Apache Doris 是一個基于 MPP 的實時數據倉庫,以其高查詢速度而聞名。對于大型數據集的查詢,它在亞秒內返回結果。它支持高并發的點查詢和高吞吐量的復雜分析。它可以用于報告分析、臨時查詢、統一數據倉庫和數據湖查詢加速; Apache Doris,用戶可以構建用于用戶行為分析、A/B 測試平臺、日志分析、用戶畫像分析和電子商務訂單分析的應用程序。
Apache Doris,原名Palo,最初是為支持百度的廣告報告業務而創建的。它于2017年正式開源,并于2018年7月由百度捐贈給Apache軟件基金會,在那里由孵化項目管理委員會的成員在Apache導師的指導下運營。2022年6月,Apache Doris從Apache孵化器畢業,成為頂級項目。到2024年,Apache Doris社區已經吸引了來自不同行業數百家公司的600多名貢獻者,每月有超過120名活躍貢獻者。
Apache Doris擁有廣泛的用戶基礎。它已被全球超過4000家公司用于生產環境,包括TikTok、百度、思科、騰訊和網易等巨頭。它還廣泛應用于從金融、零售、電信到能源、制造、醫療等各個行業。
總體架構
Apache Doris 使用 MySQL 協議,高度兼容 MySQL 語法,并支持標準 SQL。用戶可以通過各種客戶端工具訪問 Apache Doris,并且它可以與 BI 工具無縫集成。
存儲-計算集成架構
Apache Doris的存儲-計算集成架構精簡且易于維護。如下面的圖所示,它僅由兩種類型的過程組成:
前端 (FE): 主要負責處理用戶請求、查詢解析和規劃、元數據管理和節點管理任務。
后端 (BE): 主要負責數據存儲和查詢執行。數據被分區存儲在多個BE節點上,并且有多個副本。
使用場景
如下面所示的圖所示,經過各種數據集成和處理后,數據源通常被攝入到實時數據倉庫 Doris 和離線湖 (如 Hive、Iceberg 和 Hudi) 中。這些在 OLAP 分析場景中被廣泛使用。
Apache Doris 廣泛應用于以下場景:
實時數據分析:
實時報告和決策:Doris為內部和外部企業用戶提供實時更新的報告和儀表板,支持自動化流程中的實時決策。
臨時分析:Doris提供多維數據分析能力,使快速商業智能分析和臨時查詢成為可能,幫助用戶快速從復雜數據中發現見解。
用戶畫像和行為分析:Doris可以分析用戶行為,如參與、留存和轉化,同時支持用于行為分析的群體洞察和人群選擇。
湖倉一體分析:
湖倉一體查詢加速:Doris通過其高效查詢引擎加速湖倉一體數據查詢。
聯邦分析:Doris 支持跨多個數據源的聯邦查詢,簡化了架構并消除了數據孤島。
實時數據處理:Doris結合了實時數據流和批處理數據處理能力,以滿足高并發和低延遲的復雜業務需求。
基于SQL的可觀測性:
日志和事件分析:Doris 能夠實現實時或批量分析分布式系統中的日志和事件,幫助識別問題并優化性能。
Apache Doris的核心特性
高可用性:在Apache Doris中,元數據和數據都以多個副本存儲,通過多數派協議同步數據日志。數據寫入被視為成功,當多數副本完成寫入時,確保即使一些節點失敗,集群仍然可用。Apache Doris支持同城和跨區域的災難恢復,啟用雙集群主從模式。當一些節點發生故障時,集群可以自動隔離故障節點,防止整體集群可用性受到影響。
高兼容性:Apache Doris在MySQL協議上具有高度兼容性,并支持標準的SQL語法,涵蓋了大多數MySQL和Hive函數。這種高兼容性使用戶能夠無縫遷移和整合現有的應用程序和工具。Apache Doris支持MySQL生態系統,使用戶能夠使用MySQL客戶端工具連接Doris,以便進行更方便的運營和維護。它還支持BI報告工具和數據傳輸工具的MySQL協議兼容性,確保在數據分析和數據傳輸過程中的效率和穩定性。
實時數據倉庫:基于Apache Doris,可以構建實時數據倉庫服務。Apache Doris提供了秒級數據攝入能力,能夠在幾秒鐘內將上游在線事務數據庫的增量變化捕獲到Doris中。利用向量引擎、MPP架構和Pipeline執行引擎,Doris提供了亞秒級的數據查詢能力,從而構建高性能、低延遲的實時數據倉庫平臺。
統一的數據湖:Apache Doris 可以基于數據湖或關系數據庫等外部數據源構建統一的數據湖架構。Doris 統一的數據湖解決方案實現了數據湖和數據倉庫之間的無縫集成和自由數據流動,幫助用戶直接利用數據倉庫功能在數據湖中解決數據分析問題,同時充分利用數據湖的數據管理功能來提升數據價值。
靈活建模:Apache Doris 提供了多種建模方法,例如寬表模型、預聚合模型、星型/雪花型模式等。在數據導入過程中,數據可以被扁平化成寬表并通過 Flink 或 Spark 等計算引擎寫入 Doris,或者可以直接導入 Doris,通過視圖、物化視圖或實時多表連接來執行數據建模操作。