0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

日增320TB數(shù)據(jù),從ClickHouse遷移至ByConity后,查詢性能十分穩(wěn)定!

jf_WZTOguxH ? 來源:AI前線 ? 2023-08-04 15:37 ? 次閱讀

背景介紹

ByConity適合多種業(yè)務場景,在實時數(shù)據(jù)接入、大寬表聚合查詢、海量數(shù)據(jù)下復雜分析計算、多表關聯(lián)查詢場景下有非常好的性能。我們用一個實際的業(yè)務場景來介紹下,這套行為分析系統(tǒng)是基于用戶多維度行為分析平臺,提供事件分析、留存分析、轉(zhuǎn)化分析、用戶分群、用戶留存等多種分析方式和場景。本文將介紹下該用戶多維度行為分析平臺在使用原ClickHouse集群遇到的問題和挑戰(zhàn),以及通過遷移ByConity后如何解決這些問題并給業(yè)務帶來的收益。

d063d910-3288-11ee-9e74-dac502259ad0.jpg

圖1 行為分析系統(tǒng)架構設計

問題和挑戰(zhàn)

早期這套系統(tǒng)部署在ClickHouse集群,一方面,由于業(yè)務的高速發(fā)展導致數(shù)據(jù)量日益膨脹,每日最大新增數(shù)據(jù)超過320TB,每日新增行數(shù)超過2.3萬億條,用戶數(shù)據(jù)維度超過2萬多個;另一方面,用戶查詢需求更加靈活和多樣化,需要同時支持明細查詢、聚合查詢以及交互式分析查詢,并快速給出響應結果。此外,在數(shù)據(jù)量不斷增加的情況下(年增長35%),我們既要能支撐這么大的數(shù)據(jù)增量帶來的挑戰(zhàn),又要把成本增速控制在一定范圍內(nèi)。

但是在已有的ClickHouse集群上我們很難做到。原因是ClickHouse是基于Shared-Nothing的架構,每個節(jié)點是獨立的,不會共享存儲資源,因而計算資源和存儲資源是緊耦合的,會導致如下問題:

擴縮容成本變高,且會涉及到數(shù)據(jù)遷移,使我們不能實時按需的擴縮容,而且會導致資源的浪費,成本不可控

緊耦合的架構會導致多租戶在共享集群環(huán)境相互影響,造成用戶查詢相互影響

由于集群上節(jié)點的讀寫在同一個節(jié)點完成,導致讀寫相互影響

在復雜查詢上例如多表Join等操作的性能支持并不是很好,無法滿足用戶查詢多樣化的需求

技術選型

因此在2022年初業(yè)務開始使用計算存儲分離架構的ByConity來作為主要的OLAP引擎。ByConity是一個開源的云原生數(shù)據(jù)倉庫,它采用計算存儲分離的架構,支持多個關鍵功能特性,如計算存儲分離、彈性擴縮容、多租戶資源隔離和數(shù)據(jù)讀寫的強一致性等。通過利用主流的OLAP引擎優(yōu)化,如列存儲、向量化執(zhí)行、MPP執(zhí)行、查詢優(yōu)化等,ByConity可以提供優(yōu)異的讀寫性能。

d096af8e-3288-11ee-9e74-dac502259ad0.png

圖2 ByConity三層技術架構圖

ByConity是在開源的ClickHouse架構基礎上進行了升級,引入了計算與存儲分離的架構,將原本計算和存儲分別在每個節(jié)點本地管理的架構,轉(zhuǎn)換為在分布式存儲上統(tǒng)一管理整個集群內(nèi)所有數(shù)據(jù)的架構,使得每個計算節(jié)點成為一個無狀態(tài)的單純計算節(jié)點,并利用分布式存儲的擴展能力和計算節(jié)點的無狀態(tài)特性實現(xiàn)動態(tài)的擴縮容。正是由于這種改進,使得ByConity具有以下重要特性:

資源隔離:對不同的租戶進行資源的隔離,租戶之間不會受到相互影響。

讀寫分離:計算資源和存儲資源解耦,確保讀操作和寫操作不會相互影響。

彈性擴縮容:支持彈性的擴縮容,能夠?qū)崟r、按需的對計算資源進行擴縮容,保證資源的高效利用。

數(shù)據(jù)強一致:數(shù)據(jù)讀寫的強一致性,確保數(shù)據(jù)始終是最新的,讀寫之間沒有不一致。

高性能:采用了主流的OLAP引擎優(yōu)化,例如列存、向量化執(zhí)行、MPP執(zhí)行、查詢優(yōu)化等提供優(yōu)異的讀寫性能

業(yè)務收益

在我們引入了ByConity后,整體性能可以達到91%用戶查詢都可以在10秒內(nèi)完成,通過來自用戶的反饋調(diào)研,這個性能指標也是在用戶可接受的范圍內(nèi)。這里總結下我們遷移ByConity帶來的總體收益和經(jīng)驗:

避免資源搶占,查詢性能百分百穩(wěn)定:

在原來ClickHouse的集群上,我們經(jīng)常會遇到資源擠占的問題,由于ClickHouse并沒有做到資源隔離和租戶隔離,在多個用戶共用集群進行查詢時,當一個用戶查詢資源開銷非常大,會涉及資源的搶占,導致這個集群上所有共用的用戶查詢都不穩(wěn)定,服務質(zhì)量達不到滿足。但在遷移到ByConity后,由于計算組是完全物理隔離,可以達到天然的資源隔離和租戶隔離,不同用戶的查詢相互不受到影響,整體查詢性能可以達到91%用戶查詢都可以在10秒內(nèi)完成。再者ByConity提供了自研的復雜查詢鏈路,自研 Disk Cache以減少冷數(shù)據(jù)讀取,并對于高頻使用的Array 建立索引等,而且熱讀效率也優(yōu)于原ClickHouse集群,相比在原Clickhouse集群上性能折損在10%以內(nèi)。

運維成本低,故障節(jié)點秒級替換:

原本在Clickhouse集群上,如果發(fā)現(xiàn)集群中某個節(jié)點壞掉,需要先下掉整臺機器維修,這是因為ClickHouse的計算資源、存儲資源、以及元數(shù)據(jù)信息都在這個節(jié)點上,相當于集群少了一個計算資源,也少了一個存儲副本,在替換新的節(jié)點之前,需要把對壞掉節(jié)點的本地磁盤進行備份遷移到新的節(jié)點上,維護成本比較高,且數(shù)據(jù)一致性很難得到保障。而對于ByConity來講,如果發(fā)生計算組壞掉的情況,由于計算組不存儲數(shù)據(jù),只包含無狀態(tài)的計算節(jié)點,因此只需要替換新的計算組即可,數(shù)據(jù)的可靠性和一致性由HDFS來保障,且本地熱讀數(shù)據(jù)緩存的丟失對業(yè)務查詢性能是可控的,這部分也主要得益于了ByConity存儲和計算分離架構實現(xiàn)。

無感擴縮容,節(jié)約資源成本:

ByConity是可以實現(xiàn)無感擴縮容,它是一個模塊化和容器化的部署,基于Kubernetes的彈性伸縮能力,如果有足夠的機器可以無限的擴容,同時如果服務器發(fā)生故障,我們也不用擔心,因為ByConity的節(jié)點只一個無狀態(tài)的計算節(jié)點,直接下掉對整個集群影響不大。而且通過自適應調(diào)度回避慢節(jié)點,提升吞吐能力,提高節(jié)點資源利用率。同時ByConity的壓縮率極高,以其中一個業(yè)務為例,每日新增460TB數(shù)據(jù),壓縮后達到100TB,壓縮比達到65%,并支持低基數(shù)編碼 & ZSTD等等壓縮方式,極端情況下存儲占用小于parquet。

數(shù)據(jù)一致性強保障,維護復雜度接近為零:

在遷移到ByConity后,我們完全解決了數(shù)據(jù)一致性問題,因為ByConity不存在本地的主備同步問題,數(shù)據(jù)一致性問題直接交給底層的對象存儲解決,例如HDFS/S3等。這樣對一致性維護的復雜度大大降低,錯誤概率也更低,目前也少有用戶再反饋數(shù)據(jù)一致性問題。但在之前是經(jīng)常遇到,因為ClickHouse集群是多個副本通過節(jié)點間通信去維護的,通過一致性隊列去維護一致性問題,實現(xiàn)上也很復雜,容易出錯。另外,ByConity可以通過HDFS直接訪問到數(shù)據(jù)文件,不同計算引擎適配不同連接器,即可讀入數(shù)據(jù),具備通用能力。

未來展望

通過長達一年半的實踐摸索,ByConity已經(jīng)成為內(nèi)部使用的主要OLAP引擎,后期會有大量的用戶和數(shù)據(jù)遷入,最終取代原本的ClickHouse集群??梢钥闯鯞yConity作為一款計算存儲分離的OLAP引擎,具有高性能、高可擴展性和高穩(wěn)定性等優(yōu)點,能夠滿足大規(guī)模體量的數(shù)據(jù)處理和分析的需求。

通過在社區(qū)的交流以及社區(qū)發(fā)布的 Roadmap 討論

https://github.com/ByConity/ByConity/issues/26

未來階段ByConity會主要聚焦在以下幾個方向:

支持執(zhí)行層的多Stage執(zhí)行、ETL能力等

支持數(shù)據(jù)湖聯(lián)邦查詢?nèi)鏗udi、Iceberg等

ByConity社區(qū)擁有大量的用戶,同時是一個非常開放的社區(qū),我們邀請大家和我們一起在Github上討論共建,也可以加入我們的微信群、飛書群或者Discord參與交流。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)

    關注

    8

    文章

    7030

    瀏覽量

    89038
  • 存儲
    +關注

    關注

    13

    文章

    4314

    瀏覽量

    85850
  • 計算
    +關注

    關注

    2

    文章

    450

    瀏覽量

    38806

原文標題:日增320TB數(shù)據(jù),從ClickHouse遷移至ByConity后,查詢性能十分穩(wěn)定!

文章出處:【微信號:AI前線,微信公眾號:AI前線】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    十分

    誰能幫我看看VHDL編的十分頻圖里19行以下不理解了。一上升沿q就等于1???怎么變0
    發(fā)表于 08-31 09:46

    十分鐘學會ISE

    十分鐘學會ISE
    發(fā)表于 03-26 09:39

    數(shù)據(jù)庫SQL Server 2008 R2版推出OSS版本數(shù)據(jù)上云

    通過外網(wǎng)遷移,則OSS會收取外網(wǎng)流出流量的費用。使用步驟也十分簡單,輕松三步搞定:一是準備好本地數(shù)據(jù)庫,二是將本地備份文件上傳到OSS并獲取文件的URL,三是將備份文件OSS
    發(fā)表于 01-17 11:10

    Centos7下如何搭建ClickHouse列式存儲數(shù)據(jù)

    查詢。不支持窗口函數(shù)和相關子查詢。按照主鍵對數(shù)據(jù)進行排序,這將幫助ClickHouse以幾毫秒的低延遲對
    發(fā)表于 01-05 18:03

    輕松上云系列之二:其他云數(shù)據(jù)遷移至阿里云

    本文檔圍繞如何將您其他云廠商上的數(shù)據(jù)遷移到阿里云,提供了多個場景的實踐方案。文檔合集AWS 數(shù)據(jù)遷移至阿里云Amazon S3數(shù)據(jù)
    發(fā)表于 12-19 16:16 ?425次閱讀

    紅魔Mars游戲性能實測 表現(xiàn)十分穩(wěn)定

    紅魔Mars游戲性能實測 表現(xiàn)十分穩(wěn)定
    的頭像 發(fā)表于 07-02 11:20 ?5379次閱讀

    火山引擎:ClickHouse增強計劃之“多表關聯(lián)查詢

    相信大家都對大名鼎鼎的ClickHouse有一定的了解了,它強大的數(shù)據(jù)分析性能讓人印象深刻。但在字節(jié)大量生產(chǎn)使用中,發(fā)現(xiàn)了ClickHouse依然存在了一定的限制。例如: ? 缺少完整
    的頭像 發(fā)表于 10-10 17:00 ?1576次閱讀

    如何將器件庫遷移至DigiPCBA

    對于準備將設計流程完全遷移至DigiPCBA平臺上的用戶來說,可能遇到的第一個挑戰(zhàn)就是如何將手上現(xiàn)有的元器件遷移至云端。這篇教程將會展示如何使用Altium Designer軟件提供的Library Migrator工具,完成一個新建Workspace的初始設置,隨后將本
    的頭像 發(fā)表于 12-23 14:23 ?1434次閱讀

    如何使用原生ClickHouse函數(shù)和表引擎在兩個數(shù)據(jù)庫之間遷移數(shù)據(jù)

    數(shù)據(jù) Postgres 遷移ClickHouse。在這篇文章中,我們將展示如何結合使用 Postgres 數(shù)據(jù)與流行的
    的頭像 發(fā)表于 05-26 11:38 ?782次閱讀
    如何使用原生<b class='flag-5'>ClickHouse</b>函數(shù)和表引擎在兩個<b class='flag-5'>數(shù)據(jù)</b>庫之間<b class='flag-5'>遷移數(shù)據(jù)</b>

    資深開發(fā)者眼中的開源云原生數(shù)倉 ByConity

    5月22日,字節(jié)跳動宣布開源 ByConity 云原生數(shù)據(jù)倉庫,項目地址:https://github.com/ByConity/ByConity。
    的頭像 發(fā)表于 06-06 16:38 ?768次閱讀

    ClickHouse內(nèi)幕(3)基于索引的查詢優(yōu)化

    ClickHouse索引采用唯一聚簇索引的方式,即Part內(nèi)數(shù)據(jù)按照order by keys有序,在整個查詢計劃中,如果算子能夠有效利用輸入數(shù)據(jù)的有序性,對算子的執(zhí)行
    的頭像 發(fā)表于 06-11 10:46 ?1025次閱讀
    <b class='flag-5'>ClickHouse</b>內(nèi)幕(3)基于索引的<b class='flag-5'>查詢</b>優(yōu)化

    將軟件8位(字節(jié))可尋址CPU遷移至C28x CPU

    電子發(fā)燒友網(wǎng)站提供《將軟件8位(字節(jié))可尋址CPU遷移至C28x CPU.pdf》資料免費下載
    發(fā)表于 09-06 10:42 ?0次下載
    將軟件<b class='flag-5'>從</b>8位(字節(jié))可尋址CPU<b class='flag-5'>遷移至</b>C28x CPU

    TMS320DM6467遷移到TMS320DM6467T

    電子發(fā)燒友網(wǎng)站提供《TMS320DM6467遷移到TMS320DM6467T.pdf》資料免費下載
    發(fā)表于 10-14 11:30 ?0次下載
    <b class='flag-5'>從</b>TMS<b class='flag-5'>320</b>DM6467<b class='flag-5'>遷移</b>到TMS<b class='flag-5'>320</b>DM6467T

    TMS320DM642遷移至TMS320DM648/DM6437

    電子發(fā)燒友網(wǎng)站提供《TMS320DM642遷移至TMS320DM648/DM6437.pdf》資料免費下載
    發(fā)表于 10-14 09:17 ?0次下載
    <b class='flag-5'>從</b>TMS<b class='flag-5'>320</b>DM642<b class='flag-5'>遷移至</b>TMS<b class='flag-5'>320</b>DM648/DM6437

    TMS320VC5509遷移到TMS320VC5509A

    電子發(fā)燒友網(wǎng)站提供《TMS320VC5509遷移到TMS320VC5509A.pdf》資料免費下載
    發(fā)表于 10-17 10:38 ?0次下載
    <b class='flag-5'>從</b>TMS<b class='flag-5'>320</b>VC5509<b class='flag-5'>遷移</b>到TMS<b class='flag-5'>320</b>VC5509A