天天看點

doris架構

文章目錄

  • ​​概述​​
  • ​​架構​​
  • ​​元件​​

概述

Apache Doris是一個現代化的MPP分析型資料庫産品。僅需亞秒級響應時間即可獲得查詢結果,有效地支援實時資料分析。Apache Doris的分布式架構非常簡潔,易于運維,并且可以支援10PB以上的超大資料集。

Apache Doris可以滿足多種資料分析需求,例如固定曆史報表,實時資料分析,互動式資料分析和探索式資料分析等。令您的資料分析工作更加簡單高效!

MPP ( Massively Parallel Processing ),即大規模并行處理,在資料庫非共享叢集中,每個節點都有獨立的磁盤存儲系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每台資料節點通過專用網絡或者商業通用網絡互相連接配接,彼此協同計算,作為整體提供資料庫服務。非共享資料庫叢集有完全的可伸縮性、高可用、高性能、優秀的成本效益、資源共享等優勢。簡單來說,MPP 是将任務并行的分散到多個伺服器和節點上,在每個節點上計算完成後,将各自部分的結果彙總在一起得到最終的結果 ( 與 Hadoop 相似 )。

Doris 主要解決 PB 級别的資料量(如果高于 PB 級别,不推薦使用 Doris 解決,可以考慮用 Hive 等工具),解決結構化資料,查詢時間一般在秒級或毫秒級。

Doris 由百度大資料部研發 ( 之前叫百度 Palo,2018年貢獻到 Apache 社群後,更名為 Doris ),在百度内部,有超過200個産品線在使用,部署機器超過1000台,單一業務最大可達到上百 TB。

百度将 Doris 貢獻給 Apache 社群之後,許多外部使用者也成為了 Doris 的使用者,例如新浪微網誌,美團,小米等著名企業。

doris架構
數倉查詢加速

PB級别資料毫秒/秒級延時,海量資料無縫應用,極大幅度提升查詢效率。

多源聯邦查詢

跨多資料源,統一查詢入口,過濾條件下推,顯著提升查詢性能

,滿足業務人員多元化的查詢需求

實時數倉建構

流式資料高效導入,實時業務資料洞察,統一大資料平台架構和資料流。

互動式資料分析

結合BI建構互動式資料分析應用,對海量資料自助探查和多元度分析,實作對業務的深層探索和快速決策。

核心優勢

性能:

  • 高效列式存儲引擎和現代化MPP架構,結合多種加速方式,實作極緻的查詢性能

    簡單易用:

  • 完全相容MySQL協定和标準SQL,使用者使用友好,能與已有系統架構輕松融合

場景豐富:

  • 在離線一體,通過靈活的資源配置政策可同時支援高并發點查詢和高吞吐大查詢

穩定可靠:

  • 多種政策保證系統高可用,單點故障和系統更新對線上業務無任何影響

架構

高度相容MySQL協定,主從架構,不依賴任何其他元件,任何節點都可線性擴充。

FE負責解析/生成/排程查詢計劃

FE 主要有有三個角色,一個是 leader,一個是 follower,還有一個 observer。leader 跟 follower,主要是用來達到中繼資料的高可用,保證單節點當機的情況下,中繼資料能夠實時地線上恢複,而不影響整個服務。

Observer 隻是用來擴充查詢節點,就是說如果在發現叢集壓力非常大的情況下,需要去擴充整個查詢的能力,那麼可以加 observer 的節點。observer 不參與任何的寫入,隻參與讀取。

BE負責執行查詢計劃、資料存儲

資料的可靠性由 BE 保證,BE 會對整個資料存儲多副本或者是三副本。副本數可根據需求動态調整。

中繼資料

Doris 采用 Paxos 協定以及 Memory + Checkpoint + Journal 的機制來確定中繼資料的高性能及高可靠。中繼資料的每次更新,都首先寫入到磁盤的日志檔案中,然後再寫到記憶體中,最後定期 checkpoint 到本地磁盤上。我們相當于是一個純記憶體的一個結構,也就是說所有的中繼資料都會緩存在記憶體之中,進而保證 FE 在當機後能夠快速恢複中繼資料,而且不丢失中繼資料。Leader、follower 和 observer 它們三個構成一個可靠的服務,這樣如果發生節點當機的情況,在百度内部的話,我們一般是部署一個 leader 兩個 follower,外部公司目前來說基本上也是這麼部署的。就是說三個節點去達到一個高可用服務。以我們的經驗來說,單機的節點故障的時候其實基本上三個就夠了,因為 FE 節點畢竟它隻存了一份中繼資料,它的壓力不大,是以如果 FE 太多的時候它會去消耗機器資源,是以多數情況下三個就足夠了,可以達到一個很高可用的中繼資料服務。

Doris FE高可用方案

如果你是離線業務,對高可用要求不是那麼高可以使用 1 FE(Follower leader) + 1 FE(Observer)

如果你是實時線上業務,對高可用要求很高,建議使用 3 FE(Follower),會自動選舉出一個 leader

資料分布及可靠性

Doris 資料主要都是存儲在 BE 裡面,BE 節點上實體資料的可靠性通過多副本來實作,預設是 3 副本,副本數可配置且可随時動态調整,滿足不同可用性級别的業務需求。FE 排程 BE 上副本的分布與補齊。

如果說使用者對可用性要求不高,而對資源的消耗比較敏感的話,我們可以在建表的時候選擇建兩副本或者一副本。比如在百度雲上我們給使用者建表的時候,有些使用者對它的整個資源消耗比較敏感,因為他要付費,是以他可能會建兩副本。但是我們一般不太建議使用者建一副本,因為一副本的情況下可能一旦機器出問題了,資料直接就丢了,很難再恢複。我們在公司内部的話,一般是預設建三副本,這樣基本可以保證一台機器單機節點當機的情況下不會影響整個服務的正常運作

元件

Frontend(FE)

Java語言開發,Doris 系統的中繼資料管理和節點排程。在導入流程中主要負責導入 plan 生成和導入任務的排程工作,請求接入等。

Backend(BE)

C++語言開發,Doris 系統的計算和存儲節點,執行SQL計劃等。在導入流程中主要負責資料的 ETL 和存儲。

Broker

Broker 為一個獨立的無狀态程序。封裝了檔案系統接口,提供 Doris 讀取遠端存儲系統中檔案的能力,包括HDFS,S3,BOS等。

Mysql Client

Doris 借助 MySQL 協定,使用者使用任意 MySQL 的 ODBC/JDBC以及MySQL 的用戶端,都可以直接通路 Doris。

Doris on ES

Doris-On-ES将Doris的分布式查詢規劃能力和ES(Elasticsearch)的全文檢索能力相結合,提供更完善的OLAP分析場景解決方案:

  • ES中的多index分布式Join查詢。
  • Doris和ES中的表聯合查詢,更複雜的全文檢索過濾。
ODBC External Table Of Doris

ODBC External Table Of Doris 提供了Doris通過資料庫通路的标準接口(ODBC)來通路外部表,外部表省去了繁瑣的資料導入工作,讓Doris可以具有了通路各式資料庫的能力,并借助Doris本身的OLAP的能力來解決外部表的資料分析問題:

  • 支援各種資料源接入Doris。
  • 支援Doris與各種資料源中的表聯合查詢,進行更加複雜的分析操作。
  • 通過insert into将Doris執行的查詢結果寫入外部的資料源。
Spark Doris Connector
  • Spark Doris Connector 可以支援通過 Spark 讀取 Doris 中存儲的資料。
  • 目前版本隻支援從Doris中讀取資料。
  • 可以将Doris表映射為DataFrame或者RDD,推薦使用DataFrame。
  • 支援在Doris端完成資料過濾,減少資料傳輸量。
Flink Doris Connector
  • Flink Doris Connector 可以支援通過 Flink 讀取 Doris 中存儲的資料。
  • 可以将Doris表映射為DataStream或者Table。
  • 支援通過Flink table的方式使用doris資料。
  • 可以通過Flink table 方式友善的将資料通過insert into select方式将資料插入到doris表中。
DataX doriswriter
  • DataX doriswriter 插件,用于通過 DataX 同步其他資料源的資料到 Doris 中。
  • 這個插件是利用Doris的Stream Load 功能進行資料導入的。需要配合 DataX 服務一起使用。
  • 這個擴充可以很友善的将業務資料庫中的資料快速的抽取導入到doris數倉中。
  • 該插件用于logstash輸出資料到Doris,使用 HTTP 協定與 Doris FE Http接口互動,并通過 Doris 的 stream load 的方式進行資料導入。
  • Doris 的審計日志插件是在 FE 的插件架構基礎上開發的。是一個可選插件。使用者可以在運作時安裝或解除安裝這個插件。
  • 該插件可以将 FE 的審計日志定期的導入到指定 Doris 叢集中,以友善使用者通過 SQL 對審計日志進行檢視和分析。

繼續閱讀