近日(ri),火(huo)山(shan)引擎(qing)數智平臺VeDI與DataFun聯合舉(ju)辦以(yi)“OLAP計算引擎(qing)”為主(zhu)題的(de)直播活(huo)動,來自(zi)火(huo)山(shan)引擎(qing)數智平臺VeDI的(de)產(chan)品專家從技術選(xuan)型、能力(li)分析、性能優(you)化以(yi)及應(ying)用場景落地多個(ge)角度,介(jie)紹火(huo)山(shan)引擎(qing)ByteHouse如何(he)基于ClickHouse實現實時計算能力(li)升級。
據(ju)(ju)(ju)(ju)(ju)介(jie)紹,火山引(yin)擎(qing)(qing)ByteHouse來源(yuan)于(yu)(yu)字節跳(tiao)動多(duo)(duo)年(nian)內(nei)部沉淀。由于(yu)(yu)場(chang)景越來越豐富以及數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)分(fen)析需(xu)(xu)求增(zeng)長(chang),業(ye)務對(dui)于(yu)(yu)實時數(shu)(shu)(shu)倉的(de)(de)(de)要求也越來越高。首先是(shi)(shi)數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)體量大(da)以及不斷增(zeng)長(chang)的(de)(de)(de)問題。早在2019 年(nian),字節內(nei)部每天(tian)新增(zeng)的(de)(de)(de)數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)量就(jiu)達到了100TB。其次(ci),在海量數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)基礎上(shang),由于(yu)(yu)數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)類型(xing)多(duo)(duo)樣(包括批式數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)和(he)流(liu)式數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju))、查詢(xun)需(xu)(xu)求多(duo)(duo)樣、交互式分(fen)析復雜,數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)引(yin)擎(qing)(qing)需(xu)(xu)要具備靈活性。目(mu)前,行業(ye)Redis、 SparkSQL 等開源(yuan)方案(an)可(ke)以從不同角度滿足上(shang)述兩個(ge)需(xu)(xu)求,但是(shi)(shi)維護(hu)多(duo)(duo)個(ge)開源(yuan)數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)庫將導(dao)致成(cheng)本(ben)高,選擇一款可(ke)以避免成(cheng)本(ben)無限擴(kuo)展(zhan)的(de)(de)(de)計算引(yin)擎(qing)(qing)成(cheng)為字節數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)研發首要考慮的(de)(de)(de)問題。
ClickHouse性(xing)能高、靈活(huo)性(xing)強,且主要依賴磁盤、成本相對可(ke)控,成為字(zi)節跳動內部計算引(yin)擎的首選。但原(yuan)生 ClickHouse 能力難以支持(chi) upset 、實時數據更(geng)新等一(yi)些場景,在很多層面有局限性(xing),例如:
(資料圖片)
· 單表(biao)性能強勁,但多表(biao)能力(li)局限,且對(dui)標準 SQL 兼容性低。
· 缺(que)乏成(cheng)熟運維(wei)(wei)管(guan)理工具,運維(wei)(wei)復雜(za)程度高(gao)。
· ClickHouse 為(wei) MPP 架構(存算(suan)一體架構),性(xing)能強,但橫向擴容成本非常(chang)高、數(shu)據隔離性(xing)差(cha)。
ByteHouse產品專家在直播中介紹到,“為了解決以上問題,我們主要從4個方向進行優化,讓OLAP引擎能力、性能、運維、架構進一步升級。”
第一,豐富的自(zi)研表(biao)引(yin)(yin)(yin)(yin)擎(qing)(qing),實(shi)現OLAP引(yin)(yin)(yin)(yin)擎(qing)(qing)能力進化。 ByteHouse 彌補了ClickHouse表(biao)引(yin)(yin)(yin)(yin)擎(qing)(qing)的不(bu)足(zu),并衍生出全新的表(biao)引(yin)(yin)(yin)(yin)擎(qing)(qing),包(bao)括使高可用(yong)表(biao)引(yin)(yin)(yin)(yin)擎(qing)(qing)、實(shi)時(shi)(shi)數據(ju)引(yin)(yin)(yin)(yin)擎(qing)(qing)、Unique 引(yin)(yin)(yin)(yin)擎(qing)(qing)、Bitmap 引(yin)(yin)(yin)(yin)擎(qing)(qing)。以Unique 引(yin)(yin)(yin)(yin)擎(qing)(qing)為例(li),它解(jie)決了社區版 ReplacingMergeTree 實(shi)時(shi)(shi)更新延遲問題,真(zhen)正做到實(shi)時(shi)(shi) upset。
第二,新增(zeng)優(you)化(hua)器(qi)、字典、索引(yin)支(zhi)持能力,實現(xian)OLAP引(yin)擎性(xing)(xing)能進化(hua)。ClickHouse在多表場景中性(xing)(xing)能存(cun)在缺陷,而ByteHouse 通過(guo)自研CBO 和(he) RBO(基于代價和(he)基于規則的優(you)化(hua)器(qi)),支(zhi)持了多層(ceng)嵌套(tao)的下推、Join 子查(cha)詢(xun)的下推、Join-Reorder、Bucket Join、Runtime Filter 等優(you)化(hua)器(qi)特性(xing)(xing),做到 TPC-DS 的性(xing)(xing)能可以(yi)達到 99 條sql100%覆蓋,極大(da)提升(sheng)多表場景下的性(xing)(xing)能。另外,ByteHouse還支(zhi)持了全局字典以(yi)及更多索引(yin),如 Bitmap index,讓查(cha)詢(xun)效率更快(kuai)。
第三(san), 自動化(hua)、可視化(hua),實(shi)現OLAP引擎(qing)運(yun)(yun)維進化(hua)。ByteHouse 提(ti)供標(biao)準化(hua)運(yun)(yun)維、集(ji)(ji)群健(jian)康(kang)度(du)檢(jian)測(ce)、問題(ti)發生時的診斷(duan)工具,幫助(zhu)運(yun)(yun)維人員提(ti)高(gao)效(xiao)率。例如(ru)(ru),集(ji)(ji)群健(jian)康(kang)度(du)的檢(jian)測(ce)工具,類似(si)于集(ji)(ji)群的實(shi)時巡檢(jian),能夠報告當前集(ji)(ji)群狀態(tai)、出現了什么問題(ti)、問題(ti)如(ru)(ru)何解決,最大程(cheng)度(du)把(ba)問題(ti)前置化(hua),降(jiang)低運(yun)(yun)維風險。從效(xiao)果上(shang)看, 18000 個(ge)節點(dian)只需(xu)要不到 10 個(ge)運(yun)(yun)維人員來支持。
第四, 存算(suan)分離(li),實現(xian)OLAP引擎架構進化(hua)。ByteHouse推出了 MPP 2. 0 即(ji)存算(suan)分離(li)架構。一方面, 存算(suan)分離(li)可(ke)以更好實現(xian)資源隔離(li),每一個計(ji)算(suan)任務都會提交到不(bu)同的計(ji)算(suan)資源中,做(zuo)到用戶之間(jian)互不(bu)影(ying)響(xiang),還能靈活擴容(rong)、縮容(rong)存儲(chu)計(ji)算(suan)資源;另一方面,存算(suan)分離(li)能做(zuo)到真正云(yun)原生(Cloud native),ByteHouse 存儲(chu)層既支持(chi)(chi) HDFS,也支持(chi)(chi) S3 對(dui)象或(huo)者其他的對(dui)象存儲(chu),實現(xian)云(yun)原生部署。
目前,ByteHouse已經在(zai)行為(wei)分(fen)析(xi)、精準(zhun)營(ying)(ying)銷、實(shi)時(shi)監控(kong)等業務場景中落地。以實(shi)時(shi)監控(kong)為(wei)例(li),很多互聯網APP有(you)線上運營(ying)(ying)活動、直播(bo)電商等業務,數(shu)據(ju)(ju)(ju)(ju)實(shi)時(shi)性(xing)格外重要。數(shu)據(ju)(ju)(ju)(ju)從生(sheng)產(chan)到(dao)展現在(zai)大屏(ping)上,延遲往往要控(kong)制在(zai)分(fen)鐘級(ji)甚(shen)至(zhi)秒級(ji)以內。而(er)ByteHouse高吞吐性(xing)能(neng)、查詢性(xing)能(neng),使(shi)數(shu)據(ju)(ju)(ju)(ju)從輸(shu)入端到(dao)輸(shu)出端的流程(cheng)達(da)到(dao)秒級(ji)。在(zai)數(shu)據(ju)(ju)(ju)(ju)保障(zhang)層(ceng)面,ByteHouse 也能(neng)精細(xi)到(dao)Exactly Once 的語義,保證(zheng)數(shu)據(ju)(ju)(ju)(ju)不(bu)(bu)丟(diu)失、不(bu)(bu)重復(fu),最(zui)終(zhong)達(da)到(dao)數(shu)據(ju)(ju)(ju)(ju)高效(xiao)存儲、準(zhun)確查詢。(作者:吳卓港)