自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

開源大數(shù)據(jù) OLAP 的思考及優(yōu)秀實踐

大數(shù)據(jù)
本文將介紹開源 OLAP 及其在不同場景下的需求。文章將從 EMR 的角度,簡要介紹 OLAP 的數(shù)據(jù)架構(gòu)。并重點講解 StarRocks 的核心功能和后續(xù)發(fā)展規(guī)劃。

一、開源 OLAP 綜述

圖片

近年來開源領(lǐng)域涌現(xiàn)出了眾多優(yōu)秀產(chǎn)品,如 StarRocks、Doris、湖數(shù)據(jù)、湖格式、Spark 以及早期的 HBase、Presto 等。種類繁多的開源工具為用戶帶來了便利,同時也帶來了選擇難題。

圖片

上圖中對各種數(shù)據(jù)庫做了簡單的分類。例如,StarRocks、Doris 和 CK 等,它們在過去主要是存算一體的 AP 數(shù)據(jù)庫。而 Presto、Trino 和 Impala 等則是經(jīng)典的基于 Hadoop 的 MPP 引擎。此外,Kylin、Hbase 和 Druid 等在預(yù)處理方面有較多應(yīng)用。還有一類是近年來流行的湖格式(湖存儲)工具,其中包括 Delta lake、Hudi、Iceberg,以及幾個月前剛孵化的 Apache Paimon 等。

二、OLAP 場景思考

圖片

OLAP 場景涉及的技術(shù)棧眾多,應(yīng)該如何選擇呢?回答這個問題,首先從場景層面去思考。OLAP 涉及的典型業(yè)務(wù)場景包括,面向用戶的報表、面向經(jīng)營的報表、用戶畫像、運營分析、訂單分析以及自助分析等。

圖片

面向廣告主、門店經(jīng)理以及 ToB 端的報表業(yè)務(wù),這些場景有一個共同特點,即需要根據(jù)用戶的 User ID 等屬性進行快速檢索,對查詢性能有較高要求,同時存在一定量的并發(fā)請求。當(dāng)然,這里的并發(fā)與 ToC 的場景有所不同。

針對這些特點,一款優(yōu)秀的 OLAP 引擎在技術(shù)上應(yīng)滿足以下要求:首先,具備前綴索引功能,這樣在構(gòu)建好索引之后,查詢性能將得到顯著提升;其次,向量化引擎也是一個重要趨勢,最早由 CK 提出,如今許多引擎都在朝這個方向發(fā)展,向量化確實能夠在很大程度上提高查詢速度;此外,數(shù)據(jù)分布的均衡和自動反向處理也是關(guān)鍵,有助于避免數(shù)據(jù)傾斜等問題。

圖片

經(jīng)營報表類場景中,例如實時大屏展示、實時風(fēng)控、實時監(jiān)控和審計等業(yè)務(wù),它們的核心需求是數(shù)據(jù)的實時性,即在業(yè)務(wù)數(shù)據(jù)寫入后,盡可能早地獲取到這些數(shù)據(jù)。實時性的重要性在于,它會影響后續(xù)策略響應(yīng)的速度。同時,在查詢過程中,我們希望查詢性能足夠優(yōu)秀。

此外,這些業(yè)務(wù)還有一個重要特點,即需要對接商業(yè)化的 BI 工具。這意味著我們的 SQL 處理流程需具備較高的多樣性,以滿足不斷變化的分區(qū)需求。在此基礎(chǔ)上,我們還需要對數(shù)據(jù)模型進行精細設(shè)計,以滿足多樣化的需求。

圖片

末端運營分析類場景,例如鏈家等企業(yè)的經(jīng)紀(jì)人績效計算以及買菜類應(yīng)用的團長報表等。這些業(yè)務(wù)的一個共同特點是,經(jīng)紀(jì)人不斷變動,組織架構(gòu)頻繁調(diào)整,導(dǎo)致尾表變化愈發(fā)頻繁。

此外,這些業(yè)務(wù)對查詢性能和數(shù)據(jù)可見性有一定要求。最重要的特點是計算邏輯復(fù)雜,即 join 條件繁多。因此,OLAP 引擎要能夠支持靈活的數(shù)據(jù)模型,而不僅僅局限于大寬表。針對新型 join 支持方面,當(dāng)前市面上的部分產(chǎn)品仍不夠完善。為了提升性能,大家普遍希望在物化視圖等方面具備一定能力。

圖片

在用戶畫像這一業(yè)務(wù)場景中,面臨的主要需求是大寬表的處理。CK 引擎在用戶畫像領(lǐng)域得到了廣泛應(yīng)用。然而,某些場景下需要處理不同標(biāo)簽的組合查詢。此外,用戶畫像業(yè)務(wù)對精確去重有較高要求。

從引擎?zhèn)葋砜?,需要支持大寬表以滿足業(yè)務(wù)需求。然而,更新大寬表時,不能每次都能更新兩三千列數(shù)據(jù),因此更新能力顯得尤為重要。此外,多流 join 支持以及 join 查詢能力優(yōu)化也是關(guān)鍵。在此基礎(chǔ)上,還要求引擎支持 bitmap 精確查詢,以滿足用戶畫像業(yè)務(wù)的高效處理需求。

圖片

訂單分析場景中,數(shù)據(jù)實時性和復(fù)雜的查詢邏輯是兩個核心要點。實際上,回顧前面提到的各個場景,我們會發(fā)現(xiàn)訂單分析場景與其他場景在業(yè)務(wù)特點和技術(shù)要求方面存在一定程度的共性。

訂單分析業(yè)務(wù)對實時性有較高要求,以便快速響應(yīng)業(yè)務(wù)變化。同時,由于訂單數(shù)據(jù)的豐富性和多樣性,查詢邏輯往往較為復(fù)雜。這意味著我們需要為訂單分析場景提供高性能、易用且支持復(fù)雜查詢的解決方案。

圖片

在打造一款 OLAP 引擎產(chǎn)品時,需要重點關(guān)注以下幾個基礎(chǔ)方面:

首先,強化多表關(guān)聯(lián)(join)的能力支持,包括功能層面的語法支持和性能層面的優(yōu)化。多表關(guān)聯(lián)是 OLAP 查詢的核心環(huán)節(jié),對于處理復(fù)雜數(shù)據(jù)場景至關(guān)重要。

其次,現(xiàn)代化引擎解決方案的必備能力,如 CBO(Cost-Based Optimization)和向量化查詢等。這些能力可以使產(chǎn)品在市場上具有競爭力,更好地解決各類業(yè)務(wù)場景問題。

圖片

此外,并發(fā)能力也是一項重要指標(biāo)。在高并發(fā)場景下,OLAP 引擎需要具備穩(wěn)定的性能表現(xiàn)和擴展性。在數(shù)據(jù)寫入方面需要提高性能,高效的數(shù)據(jù)寫入能力有助于 OLAP 產(chǎn)品更好地滿足業(yè)務(wù)場景需求。

其他方面包括功能和架構(gòu)的優(yōu)化,如開發(fā)效率、UDF(用戶自定義函數(shù))支持等。以 Java UDF 為例,相比 C++ UDF,Java 的易用性更高,有利于提高開發(fā)效率。

最后,還要考慮架構(gòu)的運維便利性。良好的 OLAP 產(chǎn)品應(yīng)具備簡潔的運維方式,便于平臺側(cè)進行管理和維護。

三、開源數(shù)據(jù)湖/流式數(shù)倉解決方案

圖片

下面介紹阿里云 EMR(E-MapReduce)平臺上常見的開源數(shù)據(jù)倉庫及數(shù)據(jù)湖的架構(gòu)。首先,來介紹一下 EMR 的整體架構(gòu)。

EMR 基礎(chǔ)架構(gòu)的最底層是云資源,主要包括 ECS(彈性計算服務(wù))和 ACK(阿里云容器服務(wù))。在此基礎(chǔ)上,我們采用調(diào)度器來協(xié)調(diào)和控制數(shù)據(jù)處理流程。此外,我們還提供 JindoFS,這是一種與 Hadoop 兼容的分布式文件系統(tǒng),便于用戶存儲和管理數(shù)據(jù)。

圖片

接下來進一步討論阿里云 EMR 平臺上計算引擎的多樣化應(yīng)用,包括離線批處理、實時 Flink 以及 OLAP 相關(guān)引擎。

目前,典型的數(shù)據(jù)倉庫架構(gòu)仍以離線批處理為主。這種架構(gòu)中,實時數(shù)據(jù)通過 CDC 技術(shù)收集,并通過 Kafka 等消息隊列傳輸至 Flink 等實時處理引擎。經(jīng)過處理后的數(shù)據(jù)直接落地到 OLAP 引擎,以支持快速數(shù)據(jù)分析。

離線部分主要包括 ODS/ DWD 等分層,采用傳統(tǒng)的 Hive 技術(shù)進行數(shù)據(jù)處理。然而,這種架構(gòu)中實時與離線數(shù)據(jù)處理相對獨立,因此數(shù)據(jù)對齊成為一個常見問題。

為解決這一問題,近年來興起了近實時數(shù)據(jù)湖架構(gòu),如 Delta、Iceberg、Hudi 等。這些新型數(shù)據(jù)存儲格式旨在提高數(shù)據(jù)存儲和處理的性能,同時簡化數(shù)據(jù)對齊問題。新興的 Apache Paimon 也為解決數(shù)據(jù)對齊問題提供了有效支持。

圖片

實時數(shù)據(jù)湖架構(gòu)也是 EMR 平臺上常見的一種數(shù)據(jù)處理架構(gòu)。在這種架構(gòu)中,實時數(shù)據(jù)從 CDC 模式或直接從 Kafka 攝入,并在各個層次上進行增量處理。相較于 Lambda 架構(gòu),實時數(shù)據(jù)湖架構(gòu)在數(shù)據(jù)鏈路上實現(xiàn)了統(tǒng)一,從而降低了數(shù)據(jù)校驗等環(huán)節(jié)的工作量。

在這種架構(gòu)中,常見的 OLAP 查詢引擎直接訪問數(shù)據(jù)湖,或者作為末端的 ADS層為業(yè)務(wù)部門提供服務(wù)。通過實時數(shù)據(jù)湖架構(gòu),企業(yè)可以更高效地處理和分析數(shù)據(jù),進而提升業(yè)務(wù)決策的敏捷性和準(zhǔn)確性。

圖片

下面來描述一個典型的數(shù)據(jù)倉庫架構(gòu)。在該架構(gòu)中,借助 Kafka 作為消息隊列,使用 Flink 進行各層次的數(shù)據(jù)處理。同時,將處理后的數(shù)據(jù)同步到類似 StarRocks 的分析型數(shù)據(jù)庫,以提高用戶分析的性能。

圖片

基于 StarRocks 進行實時數(shù)據(jù)分析,其優(yōu)勢包括當(dāng)前應(yīng)用以及未來可能的演進方向。在這種架構(gòu)中,我們采用物化視圖策略,首先將基礎(chǔ)數(shù)據(jù)同步到 StarRocks 內(nèi)部。然后,通過離線物化視圖的批量調(diào)度能力,實現(xiàn)各層次數(shù)據(jù)的刷新。

這種架構(gòu)的主要優(yōu)勢在于,整個數(shù)據(jù)分析過程都在 StarRocks 引擎內(nèi)完成,降低了引入復(fù)雜引擎和組件的需求。從維護角度來看,這種架構(gòu)使得平臺更加簡潔,方便運維和管理。

四、StarRocks 介紹

接下來詳細介紹 StarRocks 的架構(gòu)和核心特性。

圖片

StarRocks 的核心優(yōu)勢在于,它能夠有效應(yīng)對前面所提及的各種場景。它具有如下四個關(guān)鍵特點:

  • 高查詢性能:StarRocks 以其卓越的查詢性能脫穎而出,能夠迅速返回查詢結(jié)果,滿足用戶對實時數(shù)據(jù)的需求。
  • 高效數(shù)據(jù)導(dǎo)入:StarRocks 在數(shù)據(jù)導(dǎo)入方面表現(xiàn)出色,具有較高的吞吐量和較小的延遲,能夠保證數(shù)據(jù)的快速導(dǎo)入和同步。
  • 良好的并發(fā)支持:StarRocks 具備強大的并發(fā)處理能力,可支持多個并發(fā)任務(wù)同時進行,提高系統(tǒng)性能和利用率。
  • 豐富的數(shù)據(jù)模型:StarRocks 提供了多樣化的數(shù)據(jù)模型,便于進行多維數(shù)據(jù)分析。用戶可以根據(jù)實際需求,選擇合適的數(shù)據(jù)模型進行數(shù)據(jù)處理和分析。

圖片

在業(yè)務(wù)側(cè)的整體分層架構(gòu)中,StarRocks 在分析層發(fā)揮著關(guān)鍵作用。它實現(xiàn)了極速統(tǒng)一的解決方案,能夠覆蓋前面提到的各種業(yè)務(wù)場景。通過 StarRocks 的高性能、高吞吐量、低延遲等特點,用戶可以快速地獲取數(shù)據(jù),實現(xiàn)高效的數(shù)據(jù)分析。在此基礎(chǔ)上,StarRocks 豐富的數(shù)據(jù)模型支持多種數(shù)據(jù)處理和分析方式,進一步滿足用戶在多維數(shù)據(jù)分析方面的需求。

圖片

以 StarRocks 為核心,包括數(shù)據(jù)導(dǎo)入、查詢等等在內(nèi),整個生態(tài)鏈路完備。

圖片

StarRocks 具有架構(gòu)清晰、簡單的特點。整體上,分為兩個角色:FE 和 BE。

FE 主要負責(zé)查詢解析和優(yōu)化,生成物理執(zhí)行計劃。FE 采用了高可用設(shè)計,確保在出現(xiàn)故障時能夠自動進行容錯處理。通過內(nèi)部實現(xiàn)的一致性協(xié)議元數(shù)據(jù)同步,即使在 FE 宕機的情況下,系統(tǒng)也能保持穩(wěn)定運行。

BE 在存算分離之前,扮演計算執(zhí)行引擎和存儲引擎的角色。BE 通常采用多副本策略,以確保數(shù)據(jù)安全性。當(dāng)某臺 BE 宕機時,數(shù)據(jù)系統(tǒng)會自動進行遷移,不會影響查詢性能。同時,系統(tǒng)具備自愈功能,能夠在其他機器上自動補全缺失的副本,保證數(shù)據(jù)的完整性和一致性。

圖片

從性能層面來看,全面向量化引擎是 StarRocks 的一個重要特點。之所以強調(diào)“全面”,是因為只有在整個處理鏈路上都沒有短板,才能實現(xiàn)高效的向量化引擎。目前市場上許多產(chǎn)品都聲稱具備向量化能力,但真正能實現(xiàn)全面向量化的引擎并不多。

StarRocks 全面向量化引擎的優(yōu)勢表現(xiàn)在以下幾個方面:

  • 避免性能瓶頸:全面向量化引擎在 Shuffle 和 Join 等環(huán)節(jié)都能高效處理數(shù)據(jù),避免了單一環(huán)節(jié)成為性能瓶頸。
  • 更高的查詢性能:通過引入向量化技術(shù),StarRocks 在核心計算環(huán)節(jié)相對于傳統(tǒng)引擎有顯著優(yōu)勢。例如,虛函數(shù)調(diào)用和 CPU 調(diào)度等操作都能實現(xiàn)高效優(yōu)化。
  • 優(yōu)化系統(tǒng)資源利用:全面向量化引擎能夠更充分地利用系統(tǒng)資源,進一步提高整體性能。

圖片

第二個對性能有重大影響的是 StarRocks 采用了代價驅(qū)動的優(yōu)化策略(CBO)。CBO 主要針對 Join 場景,通過計算每個 Join 操作的代價,動態(tài)調(diào)整 Join 順序和優(yōu)化查詢計劃。這張圖是業(yè)界參考的經(jīng)典論文,展示了 CBO 引擎的工作原理。在 CMU 的相關(guān)課程中也有對 CBO 的介紹。

通過 CBO,StarRocks 能夠?qū)崿F(xiàn) Join 操作的順序調(diào)整和改寫,從而支持多種 Join 類型,使其在復(fù)雜業(yè)務(wù)場景下具有優(yōu)越的性能。這也是 StarRocks 能夠應(yīng)對多種多轉(zhuǎn)場景的核心技術(shù)之一。

圖片

StarRocks 在 Join 操作方面主要支持兩種模式:Shuffle Join 和 Colocation Join。這兩種模式相結(jié)合可以實現(xiàn)高效的數(shù)據(jù)處理和分析。

Shuffle Join:包括 Broadcast Join 在內(nèi)的 Shuffle Join 模式,主要用于總體匯總場景。在這種模式下,StarRocks 通過對數(shù)據(jù)進行隨機分發(fā)和重組,實現(xiàn)不同表之間的 Join 操作。

Colocation Join:針對某些特殊業(yè)務(wù)場景,StarRocks 建議使用 Colocation Join 方式。這種模式可以根據(jù)業(yè)務(wù)需求,保證兩張表的數(shù)據(jù)分布完全一致。在查詢過程中,避免了遠端數(shù)據(jù)傳輸帶來的延遲,提高了處理效率。

圖片

前面介紹了 StarRocks 在查詢側(cè)的關(guān)鍵性能優(yōu)化點,接下來介紹導(dǎo)入側(cè)的特點。在實時分析鏈路圖中可以看到,StarRocks 支持實時導(dǎo)入組件模型。

組件模型相對于傳統(tǒng)更新模型(如 Doris 早期的更新模型)在設(shè)計上進行了優(yōu)化,實現(xiàn)了寫入和查詢之間的性能平衡。在傳統(tǒng)更新模型中,導(dǎo)入速度較快,但查詢時可能需要合并多個小文件,導(dǎo)致內(nèi)存操作較重。

組件模型的核心優(yōu)勢在于:

  • 引入主鍵索引:在導(dǎo)入數(shù)據(jù)時,StarRocks 首先創(chuàng)建主鍵索引,以便知道寫入的 key 在哪個歷史文件中?;谶@個信息,可以更新 DELETE 信息以避免無效查詢。
  • 高效的實現(xiàn):盡管引入了主鍵索引,但 StarRocks 保證了寫入性能不會受到太大影響。這是因為主鍵索引的實現(xiàn)較為高效,整體上與傳統(tǒng)導(dǎo)入方式的速度差距不大。
  • 查詢性能優(yōu)化:由于有了 deliver vector 信息,StarRocks 無需進行排序合并。同時,謂詞可以進行下推,進一步提高查詢性能。
  • 物化視圖:StarRocks 從 2.5 版本開始,對物化視圖的支持較為完備。物化視圖可以大幅提高實時分析的性能,尤其是針對增量數(shù)據(jù)。

圖片

StarRocks 致力于為用戶帶來更好的分析體驗,特別是在查詢性能方面。為了實現(xiàn)這一目標(biāo),StarRocks 重點關(guān)注了用戶分析相關(guān)的工作,希望能夠吸引 Presto 和 Impala 等產(chǎn)品的用戶,讓他們能夠在 StarRocks 上享受到上層查詢優(yōu)化能力,同時不影響性能。

StarRocks 在這方面取得了顯著的成果。如下圖所示,相對于 Trino、Presto 等競爭對手,StarRocks 在大多數(shù)基準(zhǔn)測試和實際客戶案例中,性能提升了 3-5 位。這一成果得益于 StarRocks 不斷優(yōu)化查詢引擎和底層架構(gòu),為用戶提供了更高效、穩(wěn)定的分析解決方案。

圖片

以上是另一份性能報告。

圖片

從 2.3 版本開始,StarRocks 推出了 PIPELINE 引擎,旨在進一步提高 CPU 利用率。在并發(fā)場景下,基于 PIPELINE 引擎,StarRocks 能夠?qū)崿F(xiàn)較為良好的資源隔離能力。這種能力使得 StarRocks 在處理大小查詢以及 ETL 任務(wù)時,能夠盡量彈性地進行資源分配。例如,當(dāng)某些 ETL 任務(wù)較為繁重時,如果沒有資源隔離,其他在線查詢?nèi)蝿?wù)可能會受到較大影響。而 StarRocks 的資源隔離能力則可以有效降低這種影響,確保系統(tǒng)穩(wěn)定運行。

資源隔離是 StarRocks 核心能力之一,對于并發(fā)場景具有顯著的優(yōu)化效果。通過提高 CPU 利用率和完善資源隔離機制,StarRocks 能夠為用戶提供更高效、穩(wěn)定的分析解決方案,滿足各種復(fù)雜場景下的需求。

圖片

最后一項核心能力是數(shù)據(jù)間的均衡。散落的數(shù)據(jù)之間的均衡依賴于存儲和計算的分離,這種分離使得 StarRocks 能夠?qū)崿F(xiàn)彈性的擴容。

當(dāng)添加新節(jié)點時,StarRocks 能夠自動將數(shù)據(jù)均衡分布到新節(jié)點上,確保每個節(jié)點的存儲量均衡。在副本方面,即使出現(xiàn)丟失的情況,StarRocks 也能自動進行恢復(fù)。只要確保多副本中至少有一個副本可用,StarRocks 就能保證數(shù)據(jù)的完整性和可靠性。

五、未來規(guī)劃

圖片

StarRocks 3.x 版本演進的關(guān)鍵點包括:

  • 存儲和計算分離:這是 StarRocks 3.x 版本的核心優(yōu)化之一。
  • Lake House:StarRocks 3.x 版本將支持硬字聯(lián)合力,使得在存儲和計算分離的基礎(chǔ)上,實現(xiàn)多倉庫、多作業(yè)的能力變得更加便捷。此外,針對 ETL 場景,StarRocks 也在不斷優(yōu)化和完善產(chǎn)品自身能力。
  • 場景優(yōu)化:去年,StarRocks 重點關(guān)注了 Big House 場景,并已實現(xiàn)較為成熟的能力。目前,許多客戶正在使用這一場景。建議關(guān)注這一場景的用戶進行嘗試。
  • ETL 能力優(yōu)化:StarRocks 針對算落盤等場景進行了重點優(yōu)化,并支持增量物化視圖。實時更新物化視圖的同時,導(dǎo)入端也實現(xiàn)了統(tǒng)一。
  • 簡化用戶體驗:StarRocks 致力于簡化導(dǎo)入方式,降低用戶學(xué)習(xí)成本。針對不同場景,StarRocks 提供了相應(yīng)的導(dǎo)入方式。例如,Snowflake 在這方面做得非常好,StarRocks 也將借鑒其經(jīng)驗,優(yōu)化用戶體驗。
  • 半結(jié)構(gòu)化數(shù)據(jù)類型支持:針對數(shù)據(jù)庫場景,StarRocks 3.x 版本增加了對半結(jié)構(gòu)化數(shù)據(jù)類型的支持,以滿足此類場景用戶的需求。

總之,StarRocks 3.x 版本在多個方面進行了優(yōu)化和升級,包括存儲和計算分離、Lake House、ETL 能力、用戶體驗以及半結(jié)構(gòu)化數(shù)據(jù)類型支持等。這些改進將幫助用戶更高效地應(yīng)對各種業(yè)務(wù)場景,提升大數(shù)據(jù)分析的處理性能。

責(zé)任編輯:姜華 來源: DataFunTalk
相關(guān)推薦

2022-07-29 13:55:03

大數(shù)據(jù)大數(shù)據(jù)管理

2017-09-04 15:06:23

大數(shù)據(jù)集群開源

2024-02-22 16:54:02

2024-01-12 09:30:09

CDC變更數(shù)據(jù)捕獲系統(tǒng)

2021-08-02 10:22:29

大數(shù)據(jù)安全云計算數(shù)據(jù)安全

2023-10-13 13:11:26

大數(shù)據(jù)技術(shù)開源

2023-12-12 07:34:54

炎凰數(shù)據(jù)大數(shù)據(jù)分析數(shù)據(jù)庫開發(fā)

2022-03-05 23:08:14

開源軟件開發(fā)技術(shù)

2022-12-05 11:29:14

2016-08-31 01:30:18

大數(shù)據(jù)市場大數(shù)據(jù)應(yīng)用

2021-01-20 10:53:41

云計算云存儲云遷移

2023-04-20 11:59:03

開源PatternFly

2024-02-27 07:44:20

2016-12-16 12:43:38

大數(shù)據(jù)OLAP數(shù)據(jù)統(tǒng)計

2015-09-11 09:59:32

2017-07-19 11:04:40

大數(shù)據(jù)大數(shù)據(jù)應(yīng)用方向

2021-09-26 09:40:11

補丁流程實踐

2022-05-16 08:45:05

數(shù)據(jù)質(zhì)量數(shù)據(jù)安全

2023-12-27 19:12:42

OLAP自助分析

2025-01-08 12:36:52

點贊
收藏

51CTO技術(shù)棧公眾號