全部產品
Search
文件中心

E-MapReduce:什麼是EMR Serverless StarRocks

更新時間:Jul 12, 2024

EMR Serverless StarRocks是開源StarRocks在阿里雲上的全託管服務,您可以通過其靈活地建立和管理執行個體以及資料。本文為您介紹StarRocks的核心特性,並詳述EMR Serverless StarRocks在此基礎之上所引入的諸多增強功能與服務優勢。

StarRocks介紹

StarRocks是一款支援MySQL協議的AnalyticDB,它整合了向量化處理、MPP架構、代價基礎最佳化器(CBO)、智能物化視圖和即時更新的列式儲存技術,從而實現了快速、即時、高效的多維資料分析。您可以輕鬆地將即時或離線資料來源匯入到StarRocks中,也可以直接對資料湖中的多種資料格式進行分析。由於其與MySQL協議的相容性,您可以簡便地使用MySQL用戶端和常用BI工具進行接入。此外,StarRocks還提供水平擴充能力,並具備高可用、高可靠和易於營運的特點,適用於即時資料倉庫、OLAP報表、資料湖分析等多種業務情境。

StarRocks特性

MPP分布式執行架構

StarRocks採用MPP(Massively Parallel Processing)分布式執行架構。在這一架構下,一條查詢請求會被拆分成多個物理計算單元,在多台機器上並存執行。每個執行節點擁有獨享的資源,包括CPU與記憶體。MPP架構能夠使得單個查詢請求充分利用所有執行節點的資源,因此隨著叢集水平的擴充,單個查詢的效能可以不斷提升。

全面向量化引擎

StarRocks的計算層全面採用了向量化技術,將所有運算元、函數、掃描過濾和匯入匯出模組進行了系統性最佳化。向量化引擎最大化了CPU的處理能力,通過列式資料群組織和處理方式極大地提升效率。資料的儲存和記憶體中的組織、SQL運算元的計算都基於列式實現,使得CPU緩衝使用更有效,減少了虛函數調用和分支判斷,從而實現更順暢的CPU指令流水線操作。

利用CPU提供的SIMD(Single Instruction Multiple Data)指令,StarRocks的全面向量化引擎以更少的指令執行更多的資料操作,標準測試集驗證表明,這能夠讓執行運算元的效能整體提升3到10倍。

除了運算元全面向量化之外,StarRocks執行引擎中還包含了額外的最佳化技術,例如“Operation on Encoded Data”。此技術允許直接在編碼後的欄位上,無需解碼,執行各類運算元,包括關聯、彙總、運算式計算等。這顯著降低了SQL執行過程中的計算複雜度,使相關查詢速度提升了2倍以上。

儲存計算分離

StarRocks 3.0版本支援了全新的存算分離模式,實現了計算資源與儲存資源的完全解耦,提升了系統的靈活性、效能和可靠性,同時降低了成本。

在儲存計算分離模式中,儲存和計算成為了獨立服務,可以單獨進行伸縮,有效避免了傳統存算一體模式中由於等比例擴縮容帶來的資源浪費問題。這種解耦使計算節點能在幾秒內動態伸縮,極大地提高了資源使用率。

對於儲存層,StarRocks利用了Object Storage Service的幾乎無限容量和高可用性特點,不僅支援多種雲上Object Storage Service,也相容HDFS,確保資料的大規模儲存和持久化。

StarRocks的儲存計算分離模式保留了與傳統存算一體模式相同的功能,無論是資料寫入還是熱資料查詢效能均可相比肩。在此模式下,您同樣能夠應對資料更新、資料湖分析、物化視圖加速等多樣化的資料情境需求。

CBO最佳化器

在多表關聯查詢情境下,即使擁有高效能的執行引擎也不足以保證最佳的執行效能。這是因為在此類情境中,不同執行計畫的效率差異可能相差極大,尤其是隨著關聯表數量的增加,有效執行計畫的數量也呈指數級增長,從而使得尋找最優執行計畫成為一個複雜度極高的NP-Hard問題。因此,一款能夠準確選擇最佳查詢計劃的優秀查詢最佳化工具對於實現最優的多表查詢效能至關重要。

StarRocks設計並實現了一個全新的、基於代價的最佳化器(CBO,Cost Based Optimizer)。該最佳化器採用Cascades-like架構,深度定製以充分利用StarRocks全面向量化的執行引擎,並引入了眾多創新最佳化措施。CBO不僅能實現公用運算式的複用和相互關聯的子查詢的重寫,還支援Lateral Join、Join Reorder以及針對Join操作的分布式執行策略選取,以及最佳化了低基數詞典編碼等關鍵效能提升功能。目前,這款最佳化器已經能夠全面支援TPC-DS的99條SQL語句。

得益於這款先進的CBO,StarRocks相較於同類產品在應對多表關聯查詢,尤其是複雜多表關聯查詢方面表現出色,極大地發揮了向量化執行引擎的效能潛力。

可即時更新的列式儲存引擎

StarRocks採用了先進的列式儲存引擎,將相同類型的資料以按列的方式進行連續存放。這種儲存方法使資料能夠採用更為高效的編碼策略,不僅提升了資料的壓縮率,降低了儲存成本,同時也減少了查詢過程中的磁碟I/O需求,顯著提升查詢速度。在典型的OLAP情境中,由於查詢通常只聚焦於特定幾個列,列式儲存額外減少了讀取非必要列的資料量,從而能夠在很大程度上削減磁碟I/O的負擔,實現大幅度的輸送量節省。

StarRocks能夠實現秒級的匯入延遲,提供近乎即時的資料處理能力。其儲存引擎在匯入資料的同時保障了ACID事務特性,保證了大量匯入的原子性,確保操作要麼全部匯入成功,要麼全部匯入失敗。這種設計允許多個事務平行處理,同時提供快照隔離(Snapshot Isolation)層級的事務隔離保護。

StarRocks的儲存引擎還特別適用於Partial Update和Upsert等操作。使用Delete-and-Insert的實現方式,通過主鍵索引快速過濾資料,避免讀取階段的Sort和Merge操作。此外,該引擎還能夠利用其他二級索引,在大規模資料更新的情境下,依然能夠保持對查詢請求的超高速響應。

智能物化視圖

  • 自動化資料同步與即時更新:StarRocks支援使用物化視圖進行查詢加速和數倉分層。StarRocks的物化視圖能夠實現自動同步。每當原始表中的資料發生任何變更,物化視圖能即時感知並自動完成相應的更新操作,確保與原表資料始終保持一致。此外,StarRocks還具備智能選擇物化視圖的功能。在查詢規劃階段,若檢測到有能夠提升查詢效率的物化視圖存在,StarRocks將自動執行查詢改寫,確保使用最優物化視圖進行查詢。

  • 靈活建立與管理物化視圖:StarRocks物化視圖支援按需靈活建立與刪除。您可以在使用過程中視實際使用方式來判斷是否需要建立或刪除物化視圖。整個過程在後台自動完成,無需人工幹預。

  • 簡化ETL流程與資料處理:StarRocks的物化視圖能夠替代傳統的ETL建模流程。您無需在上遊應用中進行資料轉換操作,便可以直接在使用物化視圖的過程中實現資料的轉換與加工,簡化了資料處理流程。

資料湖分析

StarRocks不僅能高效地分析本機存放區的資料,也可以作為計算引擎直接分析資料湖中的資料。您可以通過StarRocks提供的External Catalog,輕鬆查詢儲存在Apache Hive、Apache Iceberg、Apache Hudi、Delta Lake等資料湖上的資料,無需進行資料移轉。支援Parquet、ORC、CSV等檔案格式;也支援HDFS、S3、OSS等儲存方式。

在資料湖分析情境中,StarRocks主要負責資料的計算分析,而資料湖則主要負責資料的儲存、組織和維護。使用資料湖的優勢在於可以使用開放的儲存格式和靈活多變的Schema定義方式,可以讓BI、AI、AdHoc、報表等業務維持在統一的單點身份可信(Single Source of Truth),而StarRocks作為資料湖的計算引擎,可以充分發揮向量化引擎和CBO(Cost Based Optimizer)的優勢,大大提升了資料湖分析的效能。

Serverless StarRocks增強特性

EMR Serverless StarRocks主要在企業級功能方面做了以下增強:

  • 全託管的免營運產品服務形態,大大降低了營運和使用的複雜度以及成本。

  • 可視化的StarRocks執行個體管理主控台,使得執行個體的整體營運和管理更加方便。

  • 可視化的監控及營運能力。

  • 支援大、小版本自動升級,方便StarRocks進行版本升級管理。

  • 增加EMR StarRocks Manager,提供了企業級的StarRocks管理能力:

    • 安全能力:支援使用者及許可權管理。

    • 診斷分析:支援可視化慢SQL,及SQL查詢分析能力。

    • 資料管理:提供資料庫、表、分區、分區、任務的查詢能力,方便營運管理。