sponsored links

貝殼找房 x StarRocks:全新統一的極速OLAP平臺實踐

貝殼找房作為“科技驅動的新居住服務商”,致力於推進居住服務產業數字化、智慧化程序,透過助力優質服務者,為三億中國家庭提供包括二手房、新房、租賃、裝修等全方位的高品質、高效率居住服務。

貝殼大資料平臺部構建和支撐了全集團多個場景應用,覆蓋的業務線多,業務複雜度高,因此對資料分析平臺的要求也非常高。OLAP平臺需要支撐如指標分析、Ad hoc探索性分析、視覺化報表等常規業務,還需要支援如使用者行為分析、風控、DMP等典型業務。OLAP平臺需要適配不同型別、負載以及場景的分析要求,為此大資料平臺部需要同時運維的平臺上已經存在有6、7種不同的分析引擎。

從2021年開始透過引入StarRocks,作為主要的分析引擎開始了公司大資料分析引擎的整合。在指標平臺、報表平臺上基本實現了透過一個元件(StarRocks)來適配多樣的資料分析場景。透過StarRocks構建一站式全場景的極速資料分析平臺,提升了資料分析效率,降低了運維複雜度,充分釋放了資料價值。

“ 作者:肖贊

貝殼找房(北京)科技有限公司OLAP平臺負責人,基礎平臺中心大資料平臺部架構師 ”

業務背景

貝殼是一個典型的產業網際網路公司,OLAP平臺是我們數字化運營的基石,在資料平臺中佔據著非常重要的位置。首先OLAP平臺需要支撐集團的經營管理決策,需要將各種業務流程中的關鍵指標抽象出來,在OLAP平臺上進行實現。其次是探索性分析,OLAP平臺需要支援前線的業務員的探索性分析。再次是視覺化報表,即常規的固定報表業務,需要OLAP引擎有支援大規模併發請求的能力。最後是典型業務如使用者行為分析、使用者轉換漏斗、使用者畫像、使用者風控,交易等業務的支撐。下面以指標臺和視覺化報表平臺為例對貝殼的業務現狀做一些簡要的介紹:

指標平臺

指標平臺作為全集團多場景的統一指標管理平臺,提供了以下功能:

  • 對外提供統一的API
  • 指標統一定義,口徑統一管理
  • 實時指標查詢

前期使用Apache Kylin支援彙總指標查詢。隨著明細查詢的需求增加,又引入了Druid、ClickHouse和Apache Doris等多個元件。

目前應用情況:

  • 上萬級別指標應用
  • 幾千萬呼叫/天
  • TP99查詢在3秒以內

視覺化報表平臺

運營人員可以在視覺化報表平臺上,基於Hive表或指標來建立自助報表。基於指標建立報表時,透過指標平臺將請求轉化為SQL語句,大部分使用Impala執行查詢。

目前應用情況:

  • 活躍報表數千張
  • 每天數十萬次呼叫

業務痛點

引入不同的引擎來解決不同場景的問題,雖然可以滿足大部分業務的需求,同時也會帶來其它的問題。總結主要有以下四點:

歷史資料Update支援差

由於貝殼大部分的業務場景都需要對資料進行更新操作。如果是離線指標透過批次的方式處理,但實時指標就需要實時的對歷史資料進行更新。

例如在經紀人帶看場景中,某些帶看記錄,如果觸發了風控規則,會被判定為無效帶看記錄,資料狀態就會發生變更。再比如新房交易流程,新房記錄的狀態需要在報備、帶看、簽約、成交直接互相流轉。整個業務流程都需要對新房狀態進行線上更新。

Druid作為原架構中的主要分析引擎,不支援Update功能,只能用於對離線資料進行指標分析,無法支援實時指標計算。ClickHouse雖然提供了Update和Delete兩個mutation操作,但是修改的代價比較大。經常積累過量mutation無法完成資料更新,而且導致了多次線上ClickHouse叢集整體宕機。另外,由於mutation是一個非同步的執行緒,所以並不能保證Update的資料實時可見,從而指標的實時性也無法得到保障。

多表Join功能的支援能力差

平臺現有的OLAP引擎(Kylin、Druid、ClickHouse)多表Join時的效能都比較差,甚至不支援多表Join。以前通常只能採用寬表形式來構建資料模型。但貝殼是一個線上線下結合產業網際網路公司,一個典型的場景是有經紀人經常在門店中間跳動。在計算最新的業績,或者計算獎金指標的時候,就需要去關注組織架構變動。使用寬表模型的話,只要維度發生變化,就需要重刷整個寬表,導致有些指標重新整理的時間過久,資料時效性就會變差。

現有的引擎Druid雖然有lookup表的能力,但經過實際測試後效能不佳。Apache Kylin實際上也不支援Join,多表的Join需要透過在cube構建的時候底層打成寬表來實現。ClickHouse只支援本地Hash join的模式,不支援分散式Shuffle join,多數情況下靈活性受限,效能表現不佳。

無法同時支援明細與聚合

在貝殼指標不僅僅需要給管理人員看彙總指標,如果發現指標有問題,還需要下鑽到明細,檢視導致指標異常的具體原因。隨後根據明細資料的情況,再採取一系列的管理動作。也就是說,OLAP引擎需要同時具備明細資料查詢和資料聚合的能力。由於Apache Kylin、Druid不能較好支援明細資料查詢,之前只能將聚合後的資料儲存在Apache Kylin、Druid中,明細資料儲存在Clickhouse中。沒有把聚合資料放到Clickhouse是由於Clickhouse的物化檢視是不透明的,對上層的應用程式來說查詢明細的時候需要切換到對應的明細表,操作也比較繁瑣。不論是查詢引擎還是表的切換都需要我們維護額外的查詢程式碼邏輯。而且對前端的資料分析人員也不夠友好,他們需要同時瞭解明細資料與聚合資料不同的儲存位置以及之間的對應關係,增加學習,溝通的成本。

OLAP引擎較多,運維複雜,使用者學習成本較高

目前貝殼的資料分析平臺中引入了六、七種不同的分析引擎(Impala、Presto、Kylin、Druid、ClickHouse、Hive)。而團隊只有十幾個人,技術棧過多,導致我們對每一種引擎的掌握程度都不夠深,運維壓力非常大,出問題的時候很容易hold不住。

特別像ClickHouse 的叢集,雖然效能很好,但是對運維的要求比較高。ClickHouse叢集的分片、副本資訊,都是透過靜態的配置檔案的方式進行配置。當整個叢集需要擴縮容的時候,就必須透過修改配置檔案的方式進行重新整理,資料的均衡都需要運維人員介入。此外ClickHouse透過zookeeper來做副本管理,當叢集規模變大時,副本數過多會導致zookeeper的壓力變大,叢集的穩定性也就會相應變差。

另一方面,多個引擎對使用者來說學習成本也很高,不同分析系統的SQL語句不一致,每一種都需要額外的學習成本。

StarRocks 與其它 OLAP 引擎的比較

為解決以上問題,從今年開始我們引入了 StarRocks,逐步替換之前的分析引擎,實現 OLAP 平臺多業務場景的查詢引擎統一化。

主要因為 StarRocks 具備以下特性:

  • MPP 架構 + 高效列式儲存引擎
  • 高效能、高可用、高彈性
  • 標準 ANSI SQL 支援
    1. 支援多表 Join
    2. 支援 MySQL 協議
  • 支援預聚合
    1. 支援物化檢視
    2. 支援預聚合結果自動更新
  • 支援資料高效的批次匯入、實時匯入
  • 支援資料的實時更新

我們對 StarRocks 與其他 OLAP 引擎做了全面的對比測試,對比項包括 ClickHouse、Duird 和 Apache Doris。測試環境配置資訊如下:

貝殼找房 x StarRocks:全新統一的極速OLAP平臺實踐

查詢效能:StarRocks vs ClickHouse vs Apache Doris

查詢效能對比測試使用 SSB 測試集,資料量最大的表 lineorder 約60億(scale 1000)。在 ClickHouse 最擅長的寬表模式下,分別在限制執行緒數不超過8,不限制執行緒數兩種情況下對比了 StarRocks 和 Clickhouse 的效能。

在 StarRocks 和 ClickHouse 單節點都使用不超過8個執行緒的情況下,13個查詢中有9個 StarRocks 的效能好於 ClickHouse。

貝殼找房 x StarRocks:全新統一的極速OLAP平臺實踐


(寬表模式,設定ClickHouse max_threads=8)

不限制ClickHouse執行緒數情況下,13個查詢中有7個 StarRocks 效能好於 ClickHouse。

貝殼找房 x StarRocks:全新統一的極速OLAP平臺實踐


(寬表模式,不限制max_threads)

在多表 Join 模式下,對比了 StarRocks 和 Apache Doris 的表現。整體上 StarRocks 比 Apache Doris 有5-10倍的效能優勢。

貝殼找房 x StarRocks:全新統一的極速OLAP平臺實踐

沒有對 Apache Doris 的寬表效能程序測試,是由於在60億的資料量下,StarRocks 可以直接使用 insert into select 語句將資料轉成寬表,Apache Doris 執行相同語句會報 oom。由此也可以看出 StarRocks 在記憶體的管理和執行效率上比 Apache Doris 要好不少。同時也瞭解到 StarRocks 後續也有開源的計劃,所以我們在應用中都使用了 StarRocks 作為 OLAP 分析引擎。

高併發:StarRocks vs Druid

線上實際環境,以寬表模式對 Druid 和 StarRocks 進行了高併發的壓力測試。Druid 叢集的QPS 可以達到600-700左右,平均響應時間100ms左右,最大響應時間300ms左右。相同規模的 StarRocks 叢集,QPS 可以達到1500-2000,平均響應時間在50ms左右,最大響應時間在100ms左右。

貝殼找房 x StarRocks:全新統一的極速OLAP平臺實踐


(壓力測試下Druid併發量)

貝殼找房 x StarRocks:全新統一的極速OLAP平臺實踐


(壓力測試下DorisDB併發量)

此外,我們額外對 StarRocks 的 Join 模式進行了高併發的壓力測試,QPS 可以到200-300,平均響應時間470ms。可以看出即使在 Join 模式的複雜查詢場景下,StarRocks 的併發效能還依舊維持在一個不錯的水準。

貝殼找房 x StarRocks:全新統一的極速OLAP平臺實踐

其他指標

如下表所示,我們也對其他方面的指標進行了比較:

貝殼找房 x StarRocks:全新統一的極速OLAP平臺實踐

StarRocks 在貝殼的應用

目前貝殼的 StarRocks 叢集使用35臺物理機(80core、192GB記憶體、3TB SSD),部署了35 BE,3 FE。支援瞭如指標平臺、視覺化報表平臺、典型業務場景等多個應用。

指標平臺

1、 高QPS指標查詢

透過 StarRocks 強大的併發能力支撐以往 Druid 所不能滿足的高 QPS 場景。如房屋經紀人業績考核時段,QPS 會瞬間從幾十飆升到3000。以往使用Durid應對這類瞬時高壓場景沒有很好的解決辦法,叢集會不停告警乃至宕機。使用 StarRocks 支撐的指標平臺就能很好的解決這個問題。

2、 可自動更新的物化檢視

StarRocks 有非常好的物化檢視能力。對慢查詢指標透過rollup聚合,在查詢時可以自動命中物化檢視,自動路由,加速整個查詢。同時物化檢視支援自動更新,當明細表發生變化時,物化檢視自動重新整理聚合結果。

3、 實時的大屏指標

原有的實時指標是透過 ClickHouse 來支援的,但是需要建大量的檢視。ClickHouse 物化檢視不支援自動路由,在查詢時需要指定對應的物化視圖表名字。而且 ClickHouse 對 Update 的支援也非常有限,查詢最新的記錄需要額外的函式支援,不符合標準的 SQL 語法。總體來說使用 ClickHouse 來計算實時指標,實現過程非常複雜。透過 StarRocks 來支援實時指標場景,能自動對指標進行實時更新,只需要建立對應的物化檢視即可,無需額外的任何操作就可以指標的實時更新。

4、 更靈活的資料模型

StarRocks 同時也具備非常強的單表查詢能力和多表 Join 能力,可以支援寬表模式和多表Join模式。在應對部分靈活指標,如前文提到的經紀人組織架構變更場景,基於 StarRocks 就無需構建寬表。使用線上Join的方式,當維度發生變動的時候,更新維度表重新進行關聯查詢即可。

奧丁視覺化平臺

此前我們基於 MySQL 做了大量的報表,如市場管理看板等。隨著資料量增大,資料量達到千萬級別 MySQL 已經完全不能支撐。目前已將這些視覺化系統報表全部遷移到 StarRocks上。由於 StarRocks 對 MySQL 協議的支援,整個遷移的過過程比較平滑,只需要很少的工作量。

典型業務

原有的典型業務如A/B試驗平臺、交易平臺、風控平臺、直播中臺等,之前是基於 ClickHouse 和 Apache Doris 構建的。現在我們已經開始將這些業務應用逐步遷移至 StarRocks。此外,後續構建的新應用,如使用者行為分析等,我們也會基於 StarRocks 來進行構建。

下圖是直播中臺從 Apache Doris 遷移到 StarRocks 後的查詢效率對比。可以看到查詢效率均有成倍的提升,在資料量大的情況下(全量表)效能提升尤為明細,效能提升均在7倍以上。

貝殼找房 x StarRocks:全新統一的極速OLAP平臺實踐

寫在最後

在近半年的使用過程中,從整體來看 StarRocks 在穩定性和查詢效能上要優於 Apache Doris。寬表效能和 ClickHouse 不相上下,多表Join能力要勝於 ClickHouse。StarRocks 在保持甚至超過 ClickHouse 效能的同時,極大降低了我們的運維壓力,簡化了資料開發的鏈路。

StarRocks 對 Hive 外表的支援也給我們很大的想象空間,尤其是一些 Ad hoc 查詢場景。現在我們的小查詢用 Spark SQL,大的查詢用 Hive 或者是 Presto。後續使用 StarRocks 來分擔一些熱查詢的流量,整體的查詢效率也可以得到進一步的提升。使用 StarRocks 查詢ElasticSearch 外表也在我們下一步的規劃中。

後續我們會將 StarRocks 覆蓋到更多的業務場景,使用 StarRocks 逐步替代 Druid、Clickhouse、Kylin 等其他分析引擎,來構建我們全場景統一的極速 OLAP 分析平臺。

分類: 體育
時間: 2021-09-13

相關文章

詹姆斯-沃西:我認為戴維斯應該打五,其他五號位防不住他

詹姆斯-沃西:我認為戴維斯應該打五,其他五號位防不住他
虎撲09月19日訊 此前有訊息稱下賽季安東尼-戴維斯將會出任球隊五號位,但在之前的採訪中戴維斯也曾透露過他不想打五號位,但是如果球隊需要他也可以去打.近日,前湖人球員詹姆斯-沃西在接受Spectrum ...

湖人名宿:濃眉哥很適合打五號位 對位時沒人能防他

湖人名宿:濃眉哥很適合打五號位 對位時沒人能防他
北京時間9月19日,湖人名宿詹姆斯-沃西在節目中表示,安東尼-戴維斯很適合五號位,因為其他五號位球員防不住他. 湖人今夏進行了一番引援,他們引進了拉塞爾-威斯布魯克.卡梅隆-安東尼等人.湖人陣容的年齡 ...

嫦娥四號、天問一號探測器總指揮!這14位航天界“牛人”,都來自同一所大學!

嫦娥四號、天問一號探測器總指揮!這14位航天界“牛人”,都來自同一所大學!
揚帆起航,逐夢九天,我國航天事業已走過60餘載發展歷程,從"東方紅衛星"到"嫦娥奔月"."北斗組網",再到火星探測器升空--中國人的征途是星 ...

NBA能夠從1號位打到5號位的球員,21世紀僅4人!加內特上榜

NBA能夠從1號位打到5號位的球員,21世紀僅4人!加內特上榜
NBA能夠從1號位打到5號位的球員,21世紀僅4人!加內特上榜 真正能夠擔得起超級巨星的籃球運動員在技能上一般都是非常全面的,不管是防守端還是攻擊端他都能夠做到穩定,那麼這樣的球星走到哪兒都是香餑餑. ...

現役聯盟能從1號位打到5號位的五位球員!勒布朗依舊全能

現役聯盟能從1號位打到5號位的五位球員!勒布朗依舊全能
第一位:勒布朗詹姆斯 勒布朗詹姆斯向來以全能聞名,雖然新的賽季勒布朗詹姆斯已經37歲,但是他依舊是聯盟全能的代表人物.新的賽季勒布朗詹姆斯場均貢獻25+5+5的資料絕對沒有問題,征戰聯盟多年勒布朗詹姆 ...

停不了!神舟12號返回,天舟三號又將發射,中國批覆17國入空間站

停不了!神舟12號返回,天舟三號又將發射,中國批覆17國入空間站
什麼情況?中國又成功了?的確,中國又成功了!中國再次"打破"了國外對中國技術封鎖之下的"進度",中國神舟十二號任務取得圓滿成功,三名宇航員已經成功返回地面.這是 ...

抗戰時期,國軍陣亡的2位集團軍司令,7位軍長,都是誰?

抗戰時期,國軍陣亡的2位集團軍司令,7位軍長,都是誰?
原標題:抗戰時期,國軍陣亡的2位集團軍司令,7位軍長,都是誰? 我國的近代史是一部屈辱史和抗爭史.從1840年中英爆發鴉片戰爭之後,我國與列強爆發了數十場戰爭,但是由於清政府的腐朽落後,這些戰爭大多以 ...

這個小鎮,走出1位國家主席,1位上將5位中將

這個小鎮,走出1位國家主席,1位上將5位中將
今天要介紹的這個小鄉鎮,居然有58位將軍,其中最具代表性的是7位將軍.這就是湖北紅安高橋鎮.高橋鎮屬於大別山區,位於紅安縣的西南部,西面緊挨著武漢市的黃陂區. 從高橋走出軍銜最高的將軍是1位開國上將, ...

長征途中,30位女紅軍中有4位分娩,孩子卻不得不寄養在老鄉家

長征途中,30位女紅軍中有4位分娩,孩子卻不得不寄養在老鄉家
1934年10月長征出發時,中央紅軍隊伍中有30位女紅軍. 在隊伍中,女紅軍承擔的任務有,幫忙抬傷員.抬輜重,需要尋找挑夫和給挑夫做思想工作,還需要擴紅和宿營前後的準備.收拾,等等. 這些工作對於女紅 ...

帶娃週記:2021年9月12號~9月18號(小學一年級第3周)
從本週開始,和寶要上全天課,8:00-8:20上學,三個時間段(15:30.16:50和17:30)放學.像我這種沒有老人幫忙的雙職工家庭,自然選擇最晚的17:30接和寶放學. 本週總結 總得來說,和 ...

《人魚小姐》過去19年:2位演員自殺,2位至今未婚,1位為母離婚

《人魚小姐》過去19年:2位演員自殺,2位至今未婚,1位為母離婚
近期<親愛的爸媽>.<喬家的兒女>等家庭劇引起了全民觀劇熱潮,這一類劇貼近人們的生活,更能讓觀眾共情.國產劇日漸成熟,曾經在韓流衝擊下進入中國市場的韓國肥皂劇則早已淡出了人們的 ...

英國賊心不死,又搞五國聯防海上軍演,圍堵中國有用嗎?

英國賊心不死,又搞五國聯防海上軍演,圍堵中國有用嗎?
10月8號,英國.澳大利亞.紐西蘭.馬來西亞.新加坡五國聯防協約成員國共同組織了一場大規模軍演,地點靠近馬來西亞的南中國海國際水域,演習部隊主要是由上述五國組成,水面艦艇10艘.潛艇1艘.40多架飛機 ...

因抑鬱症自殺的6位明星,每一位都讓人心痛,最小的年僅25歲

因抑鬱症自殺的6位明星,每一位都讓人心痛,最小的年僅25歲
深受抑鬱症困擾的明星太多了! 大多數都選擇了自殺,結束自己痛苦的一生,在這些明星中,每一位都讓人心痛,最小的年僅25歲. 喬任梁:28歲 9月16日,是喬任梁去世五週年的日子,昔日好友陳喬恩,連續五年 ...

解放軍最傳奇的一個師,走出5位元帥,7位大將,兩百多位將軍

解放軍最傳奇的一個師,走出5位元帥,7位大將,兩百多位將軍
01.85裁軍 1985年,鄧小平向全世界宣佈中國裁軍百萬,中國人民解放軍進行大整編. 整編後,解放軍11個大軍區精簡合併成7個:撤銷師.團級單位4054個:全軍減掉軍級以上單位31個:35個軍撤併了 ...

水滸108將武力如何?僅一位頂尖高手,7位一流高手,其他不值一提

水滸108將武力如何?僅一位頂尖高手,7位一流高手,其他不值一提
"因為不反對天子,所以大軍一到,便受招安,替國家打別的強盜--不'替天行道'的強盜去了,終於是奴才." --魯迅 作為我國四大名著之一,<水滸傳>可謂是中國古典小說的巔 ...

陳毅三兄弟,一位元帥兩位國軍少將,兩位兄長多次掩護陳毅脫險

陳毅三兄弟,一位元帥兩位國軍少將,兩位兄長多次掩護陳毅脫險
民國時期,受到當時大環境的影響,很多家族既有國民黨,也有共產黨,陳毅元帥就是一個典型的例子.陳毅元帥有嫡親堂兄弟三人,分別是陳修和,陳世澤,陳世亨,親兄弟三人,陳毅是老二,兄陳孟熙,弟陳世勳,還有四個 ...

突然消失在熒屏的10位女演員,兩位失婚三位變樣,還有人削髮為尼

突然消失在熒屏的10位女演員,兩位失婚三位變樣,還有人削髮為尼
在很多人的童年記憶中,有不少演員都曾留下過美好的回憶,不過,隨著娛樂圈的更新迭代和歲月的蹉跎,那些曾在熒屏前有過驚鴻一瞥的女演員們,也或多或少早已經被人所淡忘了. 這次,小編就帶大家回憶一下,10位曾 ...

抑鬱症去世的10位明星,每一位都令人痛惜,最大47歲最小的才22歲

抑鬱症去世的10位明星,每一位都令人痛惜,最大47歲最小的才22歲
前陣子,120萬一針的抗癌藥物被推上熱搜,人們對於攻克癌症的要方期盼已久.其實除了癌症,抑鬱症也是一直以來高死亡率的可怕病症.別說普通人,就連很多大明星也有不堪抑鬱症的折磨而去世的. 今天我們就來盤一 ...

梁山雖有108將,但只有1位絕世高手、7位一流高手,其餘皆不入流
大河向東流,天上地星星參北斗--<好漢歌> 說起<水滸傳>,上到九十九,下到剛會走都能掰扯幾句,可見其膾炙人口.<水滸傳>是元末明初施耐庵編著的章回體小說,和< ...

這幾位中國的運動員,雖然不是奧運會冠軍,但卻是我們學習榜樣

這幾位中國的運動員,雖然不是奧運會冠軍,但卻是我們學習榜樣
獲得奧運會冠軍,可以說是無數運動員的夢想.每一個能夠在奧運會上奪金的選手,都會贏得高度的讚美與讚揚.然而,也有一些運動員,雖然他們沒有能夠登上最終的冠軍領獎臺.但是,他們依然會憑藉自身的突破與拼搏等精 ...