- Doris實時數(shù)倉實戰(zhàn)
- 王春波
- 843字
- 2023-11-02 20:30:21
1.2.1 極簡架構(gòu)
從設(shè)計上來說,Doris融合了Google Mesa的數(shù)據(jù)存儲模型、Apache的ORCFile存儲格式、Apache Impala的查詢引擎和MySQL交互協(xié)議,是一個擁有先進(jìn)技術(shù)和先進(jìn)架構(gòu)的領(lǐng)先設(shè)計產(chǎn)品,如圖1-4所示。

圖1-4 Doris技術(shù)分解
在架構(gòu)方面,Doris只有兩類進(jìn)程:一類是FE,可以理解為Doris的管理節(jié)點,主要負(fù)責(zé)用戶請求的接入、查詢計劃的解析、元數(shù)據(jù)的存儲和集群管理相關(guān)工作;另一類是BE,主要負(fù)責(zé)數(shù)據(jù)存儲、查詢計劃執(zhí)行。這兩類進(jìn)程都可以橫向擴展。除此之外,Doris不依賴任何第三方系統(tǒng)(如HDFS、ZooKeeper等)。這種高度集成的架構(gòu)極大地降低了運維成本。
FE節(jié)點包含Leader、Follower和Observer三種角色。默認(rèn)一個集群只能有一個Leader,可以有多個Follower和Observer。其中,Leader和Follower組成一個Paxos選擇組,如果Leader宕機,剩下的Follower會自動選出新的Leader,保證寫入高可用。Observer同步Leader的數(shù)據(jù),但是不參加選舉。如果只部署一個FE,F(xiàn)E默認(rèn)就是Leader。
FE節(jié)點主要包含存儲管理模塊、狀態(tài)管理模塊、協(xié)調(diào)模塊、元數(shù)據(jù)模塊和元數(shù)據(jù)緩存模塊。存儲管理模塊負(fù)責(zé)管理所有的元數(shù)據(jù)信息,包括表信息、Tablet信息、Tablet的副本信息等,還負(fù)責(zé)管理用戶的權(quán)限信息(即用戶的認(rèn)證信息和授權(quán)信息)和數(shù)據(jù)的導(dǎo)入任務(wù)等。狀態(tài)管理模塊負(fù)責(zé)管理所有BE進(jìn)程的存活狀態(tài)、查詢負(fù)載等非持久化信息,并提供發(fā)布訂閱接口。協(xié)調(diào)模塊負(fù)責(zé)接收用戶發(fā)來的請求,然后進(jìn)行語句解析、生成執(zhí)行規(guī)劃,根據(jù)當(dāng)前集群的狀態(tài),對執(zhí)行規(guī)劃進(jìn)行調(diào)度。元數(shù)據(jù)模塊負(fù)責(zé)對元數(shù)據(jù)的讀寫,只有Leader角色擁有此權(quán)限。元數(shù)據(jù)緩存模塊負(fù)責(zé)同步元數(shù)據(jù),以供語句解析、生成執(zhí)行規(guī)劃,主要是Follower和Observer角色擁有此權(quán)限。
BE節(jié)點可以無限擴展,并且所有BE節(jié)點的角色都是對等的。在集群足夠大的情況下,部分BE節(jié)點下線不影響集群提供服務(wù)。BE節(jié)點主要由存儲引擎和查詢執(zhí)行器組成。存儲引擎負(fù)責(zé)管理節(jié)點本地的Tablet數(shù)據(jù),發(fā)送或者接收數(shù)據(jù)并保存副本,定期合并、更新多個版本的數(shù)據(jù),以減少存儲占用。存儲引擎還負(fù)責(zé)接收來自查詢執(zhí)行器的數(shù)據(jù)讀取請求和批量數(shù)據(jù)導(dǎo)入請求。在MPP集群中執(zhí)行查詢時,會分解為一個樹狀的執(zhí)行樹,由Coordinator來協(xié)調(diào)執(zhí)行,樹的葉子節(jié)點也叫計劃片斷(PlanFragment),每個PlanFragment分配一個BE節(jié)點的查詢執(zhí)行器。
- ETL數(shù)據(jù)整合與處理(Kettle)
- Python數(shù)據(jù)分析入門:從數(shù)據(jù)獲取到可視化
- Architects of Intelligence
- Python廣告數(shù)據(jù)挖掘與分析實戰(zhàn)
- 算法與數(shù)據(jù)中臺:基于Google、Facebook與微博實踐
- INSTANT Cytoscape Complex Network Analysis How-to
- 大數(shù)據(jù)Hadoop 3.X分布式處理實戰(zhàn)
- Hadoop 3.x大數(shù)據(jù)開發(fā)實戰(zhàn)
- 數(shù)據(jù)庫原理與應(yīng)用(Oracle版)
- 跟老男孩學(xué)Linux運維:MySQL入門與提高實踐
- Python金融實戰(zhàn)
- Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)(第3版)
- 企業(yè)級容器云架構(gòu)開發(fā)指南
- Chef Essentials
- Hands-On Deep Learning for Games