一、Apache Doris概覽
Apache Doris是一個現代化的MPP分析型數據庫(OLAP)產品。僅需亞秒級響應時間即可獲得查詢結果,有效地支持實時數據分析。Apache Doris的分布式架構非常簡潔,易于運維,并且可以支持10PB以上的超大數據集。
Doris 由百度大數據部研發 ( 之前叫百度 Palo,2018年貢獻到 Apache 社區后,更名為 Doris ),在百度內部,有超過200個產品線在使用,部署機器超過1000臺,單一業務最大可達到上百 TB。
Doris 主要整合了google Mesa(數據模型),Apache Impala(MPP Query Engine)和Apache ORCFile (存儲格式,編碼和壓縮) 的技術。
二、Doris使用場景
下圖是整個 Doris 的具體使用場景,可以接入多數據源,基于Doris引擎進行數據處理和存儲,最后是一個可視化的呈現。
在數據分析處理框架中,Doris 主要做的是 Online 層面的數據服務,主要處理的是數據分析方面的服務。
Doris的特點:
- 同時支持高并發點查詢和高吞吐的Ad-hoc查詢
- 同時支持離線批量導入和實時數據導入
- 同時支持明細和聚合查詢
- 兼容MySQL協議和標準SQL
- 支持Rollup Table和Rollup Table的智能查詢路由
- 支持較好的多表Join策略和靈活的表達式查詢
- 支持Schema在線變更
- 支持Range和Hash二級分區
三、Doris 系統架構
Doris 的整體架構和 TiDB 類似,借助 MySQL 協議,用戶使用任意 MySQL 的 ODBC/JDBC以及MySQL 的客戶端,都可以直接訪問 Doris。
Doris 中的模塊包括 FE 和 BE 兩類:FE 主要負責元數據的管理、存儲,以及查詢的解析等;一個用戶請求經過 FE 解析、規劃后,具體的執行計劃會發送給 BE,BE 則會完成查詢的具體執行。BE 節點主要負責數據的存儲、以及查詢計劃的執行。
目前平臺的 FE 部分主要使用 JAVA,BE 部分主要使用 C++。
Doris 的架構很簡潔,只設 FE(Frontend)、BE(Backend)兩種角色、兩個進程,不依賴于外部組件,方便部署和運維。FE和BE 都可線性擴展。
FE 主要有三個角色,一個是 leader,一個是 follower,還有一個 observer。leader 跟 follower,主要是用來達到元數據的高可用,保證單節點宕機的情況下,元數據能夠實時地在線恢復,而不影響整個服務。
右邊 observer 只是用來擴展查詢節點,就是說如果在發現集群壓力非常大的情況下,需要去擴展整個查詢的能力,那么可以加 observer 的節點。observer 不參與任何的寫入,只參與讀取。
數據主要都是存儲在 BE 里面,數據的可靠性由 BE 保證,BE 會對整個數據存儲多副本或者是三副本。副本數可根據需求動態調整。
四、Doris 用戶
Doris社區剛剛起步,社區活躍度比較低。目前核心用戶是百度,還有小米和美團。