StarRocks基本架構原理

一年都在冬眠發表於2024-10-08

概念

  • StarRocks是新一代高效能分析型資料倉儲,支援實時、多維、高併發的資料分析;
  • StarRocks支援從各種資料來源進行實時和批次資料推流,它還允許您直接分析儲存在資料湖中的資料,無需資料遷移
  • StarRocks非常適合對新資料進行實時分析。可以高速攝取資料,並實時更新和刪除資料

場景

  • StarRocks滿足各種企業分析需求,包括OLAP多維分析、實時分析、高併發分析、統一分析等

OLAP多維分析

  • OLAP(Online Analytical Processing,聯機分析處理)是一種資料分析技術,它允許使用者從多個角度對資料進行快速、靈活的分析
  • MPP(Massively Parallel Processing,大規模並行處理)框架是一種分散式計算架構,它透過將任務並行地分散到多個伺服器和節點上執行來提高資料處理的速度和效率
  • MPP框架和向量化執行引擎使使用者能夠在各種架構之間進行選擇,以開發多維分析報告
  • 使用者行為分析、使用者畫像、標籤分析、使用者標記、高維指標報表、自助式儀表板、服務異常探測和分析、跨主題分析、財務資料分析、系統監控分析

實時分析

  • StarRocks使用Primary Key表實現實時更新,TP資料庫中的資料變更可以在幾秒鐘內同步到StarRocks,構建實時倉庫
  • 線上促銷分析、物流跟蹤分析、金融行業的效能分析和指標計算、直播質量分析、廣告投放分析、駕駛艙管理、應用程式效能管理(APM)

高併發分析

  • StarRocks利用高效能資料分發、靈活的索引和智慧物化檢視,以高併發方式進行面向使用者的分析

統一分析

  • 一個系統可以為各種分析場景提供支援,從而降低系統複雜性並降低TCO
  • StarRocks統一了資料湖和資料倉儲,湖倉一體中的資料可以在StarRocks中全部進行管理,需要高併發的延遲敏感型查詢可以在StarRocks上執行,資料湖中的資料可以透過StarRocks提供的外部目錄或外部表進行訪問

架構

  • 整個系統僅由兩種型別的元件組成:前端和後端。前端節點稱為FE。後端節點有兩種型別:BE和 CNs(計算節點)
  • 當使用本地資料儲存時,會部署BE,當資料儲存在物件儲存或HDFS上時,會部署CN

前端節點(FE)

  • 負責後設資料管理、客戶端連線管理、查詢規劃和查詢排程
  • FE節點分為Leader FE、Follower FE和Observer FE。Leader FE負責讀寫後設資料,Follower FE和Observer FE只讀取後設資料,並將寫請求路由到Leader FE

後端節點(BE)

  • 負責資料儲存和SQL執行
  • BE節點在存算一體架構中負責資料儲存,在存算分離架構中,BE被計算節點(CN)取代,資料儲存在物件儲存或HDFS中

資料管理

  • 使用列式儲存,採用分割槽分桶機制進行資料管理
  • 一張表可以被劃分成多個分割槽,一個分割槽內的資料可以進一步分桶,形成Tablet,每個Tablet以多副本形式儲存在不同的BE節點上,支援資料的高可靠性和服務的高可用性

存算分離架構

  • StarRocks支援存算分離架構,其中計算節點(CN)僅負責資料計算任務和快取熱資料,資料儲存在物件儲存或HDFS中
  • 這種設計降低了儲存成本,確保更好的資源隔離,並具有高度的彈性和可擴充套件性

特點

  • 向量化引擎:透過向量化引擎,StarRocks可以充分利用CPU的SIMD指令集,提高查詢效能
  • CBO(基於代價的最佳化器):StarRocks的CBO最佳化器採用Cascades框架,基於統計資訊進行代價估算,選擇最優的物理執行計劃
  • 高併發查詢:StarRocks最佳化查詢排程和資源分配,支援高併發查詢。
  • 智慧物化檢視:StarRocks支援非同步物化檢視,可以自動重新整理,支援多表關聯和豐富的聚合運算元,提高查詢效能

StarRocks和Doris對比

StarRocks Doris
架構特點 MPP架構,支援存算分離,可以將資料儲存在物件儲存(如S3)或HDFS中,而計算節點可以獨立擴充套件,支援向量化查詢引擎,列式儲存,以及多種資料匯入方式 MPP架構,支援多種資料匯入方式,在2.0版本後也開始支援存算分離架構,允許資料儲存在遠端儲存系統中
效能對比 單表查詢場景有優勢,更新頻率高,降低維護成本 多表查詢和資源消耗方面有優勢
應用場景 需要處理大規模資料和分析複雜資料的場景 需要高效能資料處理和分析的場景
儲存模型 在儲存方面提供了更多最佳化,如資料壓縮和行列混存表 同樣採用列式儲存模型

資料匯入方式

  • Insert Into: 兩者都支援使用Insert Into語句直接匯入資料,適用於小批次資料的匯入
  • Stream Load: 兩者都支援Stream Load,適用於實時資料匯入,透過HTTP協議傳送資料
  • Broker Load: 兩者都支援Broker Load,適用於從HDFS等外部儲存系統批次匯入資料
  • Routine Load: 兩者都支援Routine Load,適用於從Kafka等流資料來源實時匯入資料

相關文章