StarRocks實戰——貝殼找房數倉實踐

目錄

前言

一、StarRocks在貝殼的應用現狀

1.1 歷史的數據分析架構

1.2 OLAP選型

1.2.1? 離線場景

1.2.2 實時場景

1.2.3 StarRocks 的引入

二、StarRocks 在貝殼的分析實踐

2.1?指標分析

2.2?實時業務

2.3?可視化分析

三、未來規劃

3.1 StarRocks集群的穩定性

3.2?StarRocks 新特性采用


? ? 原文大佬的這篇貝殼找房數倉實踐的文章整體寫的很深入,這里摘抄下來用作學習和知識沉淀。

前言

? ?貝殼找房是國內最大的在線房產交易平臺之一,利用大數據技術進行房源的挖掘和匹配,通過數據分析和挖掘,更準確地了解用戶需求,并為用戶提供個性化的房源推薦和交易服務
? ? 隨著數據和業務規模的增長,傳統數倉的分析能力面臨很大的挑戰,貝殼需要引入新興的數據湖技術來支撐業務的發展。在指標分析場景、實時業務場景采用StarRocks替換原有的Kylin、Clickhouse 等組件,業務性能上有 5-6 倍性能提升;同時,貝殼也開始推動 StarRocks 替換 Presto 的場景,進一步簡化架構,實現分析層的統一,與 StarRocks 社區共建極速統一的湖倉新范式。

一、StarRocks在貝殼的應用現狀

1.1 歷史的數據分析架構

? 早期為了支持多樣化的分析能力,引入了多種OLAP引擎以支持不同的場景,其中包括:

  • Kylin、Druid:用于高QPS的指標查詢、報表系統等(高并發)

  • Presto、Impala:基于Hive數據分析

  • ClickHouse :用于支撐用戶分析、風控等實時業務

? ? ?隨著使用規模的擴大,維護成本越來越高,在擴展引擎數量的同時,必須要考慮上下游配套產品的兼容性改造,由于每個引擎的特殊性,適配的開發成本也很高,隨著引擎數量的增加和特性迭代,這方面的工作量越來越大。盡管數據開發平臺已經在很大程度上屏蔽了引擎的使用細節,但隨著業務的深入使用,某些場景可能需要使用引擎的高級特性支持。一些業務邏輯需要沉淀到引擎底層,增加了業務模型的開發維護成本

1.2 OLAP選型

1.2.1? 離線場景

? ?最初使用kylin進行指標分析,Kylin是一種空間換時間的方案,并且依賴于HDFS 和HBase。此外,Kylin在維度計算方面需要較長的構建時間,查詢性能受到HBase的限制,調優成本較高。

Druid的引入雖然解決了以上問題,Druid 的引入雖然解決了以上問題,但Druid本身也存在一些局限性,比如 SQL 能力較弱,不支持JOIN操作。對于數據分析產品來說,如果只能使用寬表,但寬表模型的問題較為顯著,即一旦維度有所變化,其回溯的成本是很高的

1.2.2 實時場景

? ? ClickHouse 主要是支撐實時分析場景,但在運維成本、更新操作,高并發和Join等場景有諸多限制。

? 從總體來看面臨以下比較嚴重問題:

  • 復雜、靈活的業務模型要求
  • 高性能的查詢和高穩定性
  • 多引擎的高運維成本

1.2.3 StarRocks 的引入

? ? 帶著這些問題開始調研市場上新興的 OLAP 技術,發現 StarRocks 能夠完全解決以上痛點。2021 年 StarRocks 在貝殼落地,截止 2022 年底,StarRocks 在占據了近 70% 的流量份額。生產環境共有 10 集群在使用,大規模集群 BE節點 40個,小規模集群 BE 節點數 5~10個。

? ?規模:

  • 存儲總量80TB
  • 日均寫入的數據量12TB,其中離線7TB,實時5TB
  • 日均的查詢量是1400萬次

二、StarRocks 在貝殼的分析實踐

? 引入StarRocks最要的目標是解決多引擎的問題,接下來通過 3 個場景來介紹各引擎如何統一到 StarRocks 上。

2.1?指標分析

? ?離線分析場景:Druid To StarRocks

? ?指標開發分為3個階段:

  • 數據準備:數據開發人員準備 Hive 表和 StarRocks 表
  • 指標開發:基于元數據進行模型和指標開發
  • 模型構建:將模型轉換到具體引擎的實現

? ?在模型構建階段,使用 Spark任務將Hive數據同步到StarRocks 中,使用Flink同步Kafka中的數據。

? ?在指標分析場景中引入StarRocks,需要關注的主要問題有兩個:
(1)建表:

  • ?離線場景:數據來源于Hive,可以進行數據內容探測,根據數據量自動計算分桶數(StarRocks自動分桶策略),根據實踐經驗,慢查詢sql中有很大一部分是模型問題導致(模型表選擇、分區分桶選擇等),智能化建表模式能更好的適配業務。
  • 實時場景:雖然可以預估數據規模來生成表模型,但是業務的增長和發展是難以預估的,因此,對事實表通過添加定期巡檢任務進行周期性的檢測,根據歷史數據規模評估表的分區和分桶是否合理,定時向用戶反饋,協助用戶進行模型優化。

(2)數據導入:

  • 臨時分區:采用臨時分區來解決導入期間無法查詢的問題
  • 預聚合:Spark任務將Hive數據同步到StarRocks的過程中,先在spark階段對數據進行部分計算,以降低導入過程中BE節點的資源消耗,由于大量的導入通常發生在晚上0點至凌晨6點之間,并伴隨著離線導入的高峰期,提前進行聚合可以減輕compaction的壓力。

  • 高基數的字符列精確去重:需要兼容之前的字符精確去重場景( Kylin、 Druid)使用 Hive 的全局字典來實現去重列編碼。去重計數列使用bitmap類型,查詢性能提高約3到4倍,在高QPS場景下,集群吞吐能力提升明顯。

2.2?實時業務

? 實時分析場景:ClickHouse To StarRocks

?ClickHouse不支持直接的update操作,因此需要通過使用視圖和?argMax()?函數計算最新數據以達到實時更新的目的。對一個復雜的模型而言,需要為每一張表都創建對應的視圖,最終要多張表和視圖才能實現,如圖 7 所示:

? ?ClickHouse 涉及到本地表、分布式表和視圖等不同層級的結構,最頂層的視圖view相當于用戶指標建模時所用的表,從開發角度來看相當復雜:

  • 開發門檻較高:數據開發人員需要對 ClickHouse 有較高的掌握程度

  • 維護迭代成本高:對于頻繁迭代的業務來說,模型的修改和數據驗證過程會變得比較復雜

  • 底表數據量大:底層表存儲了所有變更記錄,在頻繁變更的場景,低表的數據量會變得很大

  • 并發場景下Scan高:底層每次執行都需要掃描大量數據,導致集群的I/O壓力較高,讀寫互相影響

  • Join性能有限:在復雜場景下,多張表的關聯查詢性能不及預期

? StarRocks 原生支持update、高性能的Join,高QPS這些特性可以解決以上所有痛點;針對目前ClickHouse中存量的模型,可以通過以下方式平滑遷移到StarRocks:

  • 模型:使用 Duplicate 模型對應 ClickHouse 中的MergeTree模型,StarRocks 中與 argMax() 函數對應的有 row_number()
  • 查詢:查詢層通過查詢服務直接轉換到StarRocks語法結構

? 下圖是遷移后查詢性能對比結果,平均響應時間大幅下降。通過相同集群規模的并發壓測,QPS提升了5倍以上

2.3?可視化分析

? ?ad-hoc場景:Presto To StarRocks

? ?貝殼內部的BI 產品ODIN分析平臺提供了基于Hive的分析能力,底層通過Presto引擎查詢,用戶通過PrestoSql進行建模分析,模型和引擎耦合性非常緊密,無法輕易轉換成到其他引擎的查詢。? ? StarRocks支持了 Hive 外表的功能,相比Presto有 3 倍以上的性能提升,使得 StarRocks 在貝殼有能力統一 OLAP 場景。目前已開始將分流到 StarRocks 做測試驗證,后續隨著 StarRocks Trino/Presto 兼容能力的進一步提升,會繼續提升 StarRocks 的流量占比,實現 StarRocks 在分析層的完全統一。

三、未來規劃

? ?貝殼找房引入 StarRocks已經有兩年時間了,從實踐結果來看,StarRocks能滿足90% 以上的需求場景。引入StarRocks對貝殼整個分析鏈路的建設起到了關鍵性作用,達到了極速統一的目標,并且帶來了顯著的性能收益,極大提升了OLAP分析場景的能力和效率。以下是未來的發展規劃:

3.1 StarRocks集群的穩定性

? ?對大規模集群的運維,需要從以下幾個方面加強穩定性建設:

  • 細化監控維度,增加重要指標的監控告警
  • 集群上下游鏈路的阻斷控制能力:阻斷能力在穩定性保障中非常重要,監控的目的是更好地發現問題,一旦發現問題,就需要有效的手段來控制降級,比如查詢降級,危險SQL攔截,寫入限制等。
  • 多集群數據源的故障恢復自動化:對于一個核心業務,已經建立了雙鏈路保障策略,出現問題時能夠自動切換,不需要人工干預。

3.2?StarRocks 新特性采用

? ?當前我們比較關注 StarRocks 新特性主要是物化視圖、Trino 語法兼容和 LakeHouse 架構。

  • 物化視圖在OLAP場景下對查詢的性能提升非常大,目前社區在物化視圖的多表,異步,自動更新等方面已經有了很豐富的功能支持,如何將這些功能結合業務場景,自動探測查詢模式生成對應的物化視圖將是未來的重點工作。
  • 從 StarRocks 3.0 版本開始,StarRocks 支持Trino方言,這一點對存量的 Presto模型遷移來說,降低了遷移和使用成本,同時有不錯的查詢性能提升。

  • LakeHouse架構是StarRocks3.0 的新架構模式,相比2.0版本的資源隔離能力,全新的存算分離架構支持硬資源隔離,這個特性使得現在的多個小規模集群模式可以統一成大規模集群,進一步降低資源和維護成本;彈性計算能力可以滿足不同業務的使用場景。此外,StarRocks也支持了Apache Hudi、Apache Iceberg 和 Delta Lake 主流數據湖,統一湖倉查詢場景不再是問題。

參考文章:

性能全面飆升!StarRocks 在貝殼找房的極速統一實踐

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/711542.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/711542.shtml
英文地址,請注明出處:http://en.pswp.cn/news/711542.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PMP考試培訓費用多少錢?

PMP考試的相關費用包括報名費用、培訓費用和證書續證費用三個部分。 一、PMP考試報名費用: 首次報考費用為3900元,如果未通過考試可以在英文報名有效期內進行補考報名,補考費用為2500元。 付費方式是在項目管理學會官方網站上提交報考資料…

企業數字化轉型的第一步:由被動多云向主動多云轉變

隨著經濟環境、市場形勢、技術發展、用戶需求等諸多因素的變化,數字化轉型為企業進一步提升效率和競爭力、提供更加豐富的個性化產品和服務、進行業務場景創新、探尋新的增長機會和運營模式提供了嶄新的途徑。越來越多的企業意識到,數字化轉型已不是企業…

第1篇 Linux Docker安裝rabbitmq

Docker安裝RabbitMq 1、搜索rabbitmq鏡像 docker search rabbitmq2、下載rabbitmq鏡像 docker pull rabbitmq3、運行rabbitmq服務 docker run -d --name rabbitmq --restart always -p 15672:15672 -p 5672:5672 rabbitmq4、訪問rabbitmq http://192.168.1.x:15672 5、rab…

亞信安慧AntDB:打破數據孤島,實現實時處理

AntDB數據庫以其獨特的創新能力在分布式數據庫領域引領潮流。其中,融合統一與實時處理是其兩大核心創新能力,為其贏得廣泛關注與贊譽。融合統一意味著AntDB能夠將多種不同類型的數據庫融合為一體,實現數據的統一管理與處理,極大地…

電視盒子什么品牌好?資深數碼粉強推口碑電視盒子推薦

我對各類數碼產品是非常熟悉的,尤其是電視盒子,用過超十五款了,涵蓋了各個主流品牌,最近看到很多朋友在討論不知道電視盒子什么品牌好,我這次要來分享的就是口碑最好的五款電視盒子推薦給各位不懂如何選電視盒子的新手…

AI、AIGC、AGI、ChatGPT它們的區別?

今天咱們聊點熱門話題,來點科普時間——AI、AIGC、AGI和ChatGPT到底是啥?這幾個詞聽起來好像挺神秘的,但其實它們就在我們生活中。讓我們一起探索這些術語的奧秘! AI(人工智能):先說說AI&#…

數倉技術選型特點

高性能:用全并行的MPP架構數據庫,業務數據被分散存儲在多個節點上,數據分析任務被推送到數據所在位置就近執行,并行地完成大規模的數據處理工作,實現對數據處理的快速響應。 易擴展:Shared-Nothing開放架構…

電梯物聯網之梯控相機方案-防止電瓶車進電梯

梯控現狀 隨著電梯產品在智能化建筑的日益普及,對于電梯的智能化管理 安全性需求 的要求越來越迫切。尤其今年來隨著電瓶車的大量普及,發起多起樓道、轎廂電瓶車著火惡性事件, 造成了極大的社會 負面影響。控制電瓶車進入單元門,樓道以及電梯…

Vue官網“食用指南”

把Vue官網當做一個工具來用,有問題,先來官網查一查。 官網中常用的板塊 官網:https://cn.vuejs.org/上手后,最常用的模塊是【快速上手】【API】。所以務必要知道這兩個模塊在哪里,怎么使用。![image.png](https://img…

/proc/cpuinfo文件內容詳解

/proc/cpuinfo 文件包含了有關系統 CPU 的信息,每一行代表一個屬性及其對應的值。以下是一些常見的屬性及其含義: 1. processor:表示 CPU 的物理編號,通常從 0 開始遞增。 2. vendor_id:CPU 廠商的名稱,如…

藍橋杯 砝碼稱重 dp/dfs

題目鏈接&#xff1a; https://www.lanqiao.cn/problems/1447/learning/?subject_code1&group_code4&match_num12&match_flow1&origincup 思想&#xff1a;dfs暴力枚舉過一半的分 代碼&#xff1a; #include<bits/stdc.h> using namespace std;#def…

快速開發一個鴻蒙的頁面

文章目錄 前言常用組件快速開啟簡單的鴻蒙頁面總結 一、前言 鴻蒙要想快速上手&#xff0c;那么就需要對基礎的組件使用比較熟悉&#xff0c;這里就羅列開發中常見的基礎組件的使用。 只要是寫android的&#xff0c;對于這些組件的使用還是能很快上手的&#xff0c;只要多多…

01-prometheus監控系統-安裝部署prometheus

一、準備環境 主機名ip配置prometheus-server3110.0.0.311核1g-20GBprometheus-server3210.0.0.311核1g-20GBprometheus-server3310.0.0.311核1g-20GB 二、下載/上傳軟件包 1&#xff0c;軟件包地址 這里給大家準備了百度云盤的安裝包&#xff1b; 鏈接&#xff1a;https:/…

FRM模型十二:極值理論

目錄 極值理論介紹GEVPOT 代碼實現 極值理論介紹 在風險管理中&#xff0c;將事件分為高頻高損、高頻低損、低頻高損、低頻低損。其中低頻高損是一種非常棘手的損失事件&#xff0c;常出現在市場大跌、金融體系崩潰、金融危機以及自然災害等事件中。 由于很難給極端事件一個準…

Spring 學習記錄

Spring 學習記錄 1. Spring和SpringFrameWork1.1 廣義的Spring2.1 狹義的Spring2.3 SpringFrameWork / Spring框架圖 2. Spring IOC容器(即上圖中的Core Container)2.1 相關概念 (IOC DI 容器 組件)2.2 Spring IOC容器的作用2.3 Spring IOC容器接口和具體實現類 3. Spring IOC …

flask 數據庫遷移報錯 Error: No such command ‘db‘.

初學FLASK&#xff0c;使用pycharm的terminal 啟動&#xff0c;實現數據庫遷移 文件結構 項目啟動文件不在一級目錄pycharm>terminal啟動 由于自己初入 python flask 很多東西并不懂&#xff0c;只能依葫蘆畫瓢&#xff0c;使用如下命令,輸入完第一行命令執行沒有任何錯誤…

素數合集(C語言版)

目錄 判斷素數函數 題目 素數個數 素數求和 最大的素數

微信小程序 ---- 慕尚花坊 購物車

購物車 01. 購物車-封裝購物車接口 API 思路分析&#xff1a; 為了方便后續進行購物車模塊的開發&#xff0c;我們在這一節將購物車所有的接口封裝成接口 API 函數 落地代碼&#xff1a; import http from ../utils/http/*** description 獲取購物車列表數據* returns Pro…

Vue ElementUI 修改消息提示框樣式—messageBox 的大小

在窄屏模式下&#xff08;移動端或pda&#xff09;&#xff0c;提示框的寬度太寬&#xff0c;會出現顯示不完全的問題。 應當如何修改 ElementUI 的樣式呢&#xff1f; open() {this.$confirm(window.vm.$i18n.t("tips.conLogOut"),window.vm.$i18n.t("tips.tip…

11-Linux部署集群準備

Linux部署集群準備 介紹 在前面&#xff0c;我們所學習安裝的軟件&#xff0c;都是以單機模式運行的。 后續&#xff0c;我們將要學習大數據相關的軟件部署&#xff0c;所以后續我們所安裝的軟件服務&#xff0c;大多數都是以集群化&#xff08;多臺服務器共同工作&#xff…