成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

WeOLAP:微信 OLAP 湖倉新場景優(yōu)化實踐

大數(shù)據(jù) 數(shù)據(jù)湖
ClickHouse 在微信團隊有著廣泛應(yīng)用,如實時報表、AB 實驗和實時計算等,通過將 Hadoop 相關(guān)生態(tài)集成到 ClickHouse 中,性能得到了十倍到百倍的提升,能夠做到萬億級數(shù)倉、亞秒級響應(yīng)和穩(wěn)定高可用。

 ClickHouse 在微信有著廣泛應(yīng)用,如何保障其自身查詢性能,并能在新場景中結(jié)合應(yīng)用成為了關(guān)鍵問題。基于該背景,開發(fā)團隊首先針對ClickHouse 的性能問題,開發(fā)了相應(yīng)的性能觀測工具,并在數(shù)據(jù)查詢、策略實驗等場景針對性進行了湖倉讀取、bitmap 計算等方面的探索優(yōu)化,最后將 ClickHouse 在 AI 場景進行落地應(yīng)用,沉淀了融合 OLAP 能力的成熟數(shù)據(jù)管線。

一、ClickHouse 在微信的應(yīng)用

1. ClickHouse 在微信的應(yīng)用

ClickHouse 在微信團隊有著廣泛應(yīng)用,如實時報表、AB 實驗和實時計算等,通過將 Hadoop 相關(guān)生態(tài)集成到 ClickHouse 中,性能得到了十倍到百倍的提升,能夠做到萬億級數(shù)倉、亞秒級響應(yīng)和穩(wěn)定高可用。

圖片

ClickHouse 在微信的集群規(guī)模有數(shù)千臺,Top50 響應(yīng)時長約 0.34 秒,平均響應(yīng)時長為 4 秒,查詢量級為每天百萬級。當前的主要版本是基于社區(qū)的 22.8,少量版本對應(yīng)社區(qū) 23.3。

圖片

2. 新場景應(yīng)用

過去一年我們探索了 ClickHouse 的一些新的應(yīng)用場景。在湖倉讀取方面,基于 Iceberg/Hive 進行讀取和湖上數(shù)據(jù)加工,來緩解數(shù)據(jù)孤島問題;在實驗新場景上,進行畫像分析、人群圈選,支撐實時可見的在線實驗系統(tǒng);另外,也與 AI 進行結(jié)合,通過成熟的 OLAP 數(shù)據(jù)管線為近/離線模型推理進行提效。

圖片

二、ClickHouse 的性能觀察工具

作為一個用戶,需要感知查詢的資源消耗;作為一個運維同學,需要知道如何優(yōu)化集群負載;作為一個開發(fā)同學,需要快速定位慢查詢的原因。這些都離不開性能觀察工具。ClickHouse 提供了一系列便捷的性能觀測工具,如 Query Log、Query Thread Log、Sampling Query Profiler 和 Flame Graph 等。

圖片

首先是最常用的 Query Log 和 Query Thread Log,通過查詢的 query id,可以對這條查詢性能進行觀察分析。我們還可以在代碼中增加自定義的 Profile Event,方便定制一些觀測指標。

圖片

第二個是 Sampling Query Profiler 和 ClickHouse Flame Graph,通過可視化的火焰圖能夠直觀地對內(nèi)存和 CPU 進行分析,在 CH 可以對指定查詢進行 profile,支持的最細粒度為 query 級別。它有一個缺點,會將一個查詢涉及到的多個線程匯聚到一起,導(dǎo)致無法對單個線程的情況進行分析。我們針對這個問題也做了改進優(yōu)化,使它能支持線程級的單個展示和查詢聚合。

圖片

第三個是 Processors Profile Log,它可以幫助我們清晰地看到每個算子的耗時,判斷算子間是否均衡、是否存在傾斜情況,也可以幫助我們看到算子間的依賴關(guān)系。

圖片

WeOLAP 團隊還自研了性能分析工具 Profile Engine,從事前和事后兩個場景進行優(yōu)化。在事前對用戶提交的 SQL 結(jié)合集群信息和表信息進行分析,并基于索引、分區(qū)等給出相應(yīng)可視化改進建議;在事后基于制定的規(guī)則對大查詢和慢查詢進行分析,給出優(yōu)化建議。通過這個工具,既可以給使用者提出優(yōu)化建議,也可以幫助使用者平衡集群負載。該工具上線后的使用效果很不錯。

圖片

三、湖倉讀取優(yōu)化

ClickHouse 在湖倉鏈路中既是存儲組件又是計算組件,跨層的存在會導(dǎo)致一些問題:

  • ClickHouse 中的數(shù)據(jù)有孤島化傾向,不能被 Spark、Presto 等引擎查詢。
  • 數(shù)據(jù)冗余,Shared-nothing 帶來昂貴的機器成本。
  • 繁瑣的數(shù)據(jù) ETL。

我們的改進目標是讓 ClickHouse 作為計算組件,直接讀取湖倉數(shù)據(jù)。

圖片

其中存在一些挑戰(zhàn):

  • ClickHouse 目前只支持單機讀取 Hive。
  • ClickHouse 支持讀取 Iceberg,但僅限 S3 存儲。
  • Iceberg 沒有 C++ 的 API。
  • 現(xiàn)在只支持 Hive/Iceberg 外表,一旦表 schema 變化,需要手動同步 DDL 修改。
  • 部分場景的 ORC 讀取性能不佳。

圖片

針對上述問題,我們采取了如下優(yōu)化措施:

  • 新增外置 HTTP 協(xié)議的 Iceberg API server,使用 Java 繞開 C++ 限制,實現(xiàn)外置 server。
  • 通過一致性 hash 分發(fā)文件路徑到各節(jié)點實現(xiàn)分布式讀取。
  • 對元信息和數(shù)據(jù)文件進行 cache。
  • 讀取集群和計算集群分離。

圖片

增加外庫實現(xiàn),避免手動繁瑣的建表和元信息不一致問題。

圖片

ClickHouse 在讀取某些 ORC 文件時會很慢,例如示例的 select * 和 select count(1)。

圖片

通過火焰圖分析,我們發(fā)現(xiàn) Apache Arrow 庫讀取 ORC 有大量的 memcpy,十分影響性能。我們切換到了 Apache ORC 庫進行讀取,整體性能提升了 0.5 到 1 倍。

圖片

在某些場景會出現(xiàn) IO 浪費,如圖中的 select 一列,在 stripe size 為 4MB 和 64MB 時,對應(yīng)解壓后的大小相等,但 HDFS 讀取量差異很大。

圖片

ReadBuffer 在讀取時很容易 cache 大量我們不需要的數(shù)據(jù),幫我們緩存很多不需要的列,造成大量 IO 浪費。此外,在讀取時會先讀 stripe footer,再讀 row data,導(dǎo)致頻繁地 HDFS seek。以上這兩點是造成 IO 浪費的主要原因。

圖片

我們采用 IO 預(yù)讀機制對 ORC 的讀取性能進行優(yōu)化。首先,ORC 文件可以提前計算文件中哪些 range 是需要被讀取的,基于此,我們將讀取規(guī)則改為當讀命中某個 range 時,按照 range 粒度執(zhí)行預(yù)讀,并將臨近 range 進行合并,減少HDFS seek 次數(shù)。

圖片

在應(yīng)用該讀取優(yōu)化后,性能提升十分明顯,以圖中的讀取 6 列為例,原有的 40 秒查詢縮短至 3.7 秒,提升了 10 倍。

圖片

此外,我們還做了 HDFS 優(yōu)化、元信息優(yōu)化和資源并發(fā)鏈接限制,基于這些優(yōu)化,在典型場景性能提升了 5 到 10 倍。

四、實驗場景 Bitmap 優(yōu)化

在命中分析、畫像圈選中可以使用 bitmap 進行查詢加速,將原有的交并補邏輯轉(zhuǎn)換為位圖操作,相比明細表的聚合或 join 查詢,通常可以取得數(shù)倍的性能提升。

圖片

ClickHouse 數(shù)據(jù)按行進行拆分運算,在 bitmap 場景中,不用批數(shù)據(jù)的行數(shù),即使行數(shù)相同,其代表的計算工作量也存在很大差異,造成了數(shù)據(jù)傾斜,其中某個 pipe 的工作量顯著高于別的 pipe,以至拖慢了整個查詢。

圖片

我們的解決方案是在執(zhí)行引擎新增 repartition 階段,重新進行數(shù)據(jù)均衡,并將數(shù)據(jù)分發(fā)到所有后續(xù) pipe。在大 bitmap 計算中,數(shù)據(jù)傾斜場景性能提升約 10%~20%。

圖片

我們通過 ClickHouse Flame Graph 對三個線程的執(zhí)行過程進行分析,發(fā)現(xiàn)有兩個執(zhí)行線程長時間等待,而另一個執(zhí)行線程耗時在讀取 bitmap,讀取開銷遠大于計算。

圖片

ClickHouse 在 mark 級以下沒有任何并行化機制,我們針對性優(yōu)化成支持行級并行讀取,對于大 bitmap 異步進行反序列化讀取,并減少內(nèi)存拷貝操作。

圖片

另外,我們通過對原有字段編碼進行壓實,既節(jié)省了存儲空間,又提升了性能。

圖片

新增內(nèi)核特性可編碼字典 Encode Dictionary,支持單機字典和副本同步字典,支持所有原生 ClickHouse 字典函數(shù),支持 value to key 反查,以及 bitmap to bitmap 編碼。

圖片

在經(jīng)過以上優(yōu)化后,我們在測試數(shù)據(jù)集上的性能提升很明顯。在 bitmap32 上,求并集和交集有 10 倍的性能提升,在 bitmap64 上,有百倍的提升。

圖片

在實際業(yè)務(wù)應(yīng)用上,bitmap64 場景從查不了變?yōu)椴榈每欤琤itmap32 場景從快到更快,在畫像分析、實驗留存分析和表存儲等方面優(yōu)化效果都很不錯。

圖片

五、ClickHouse with AI

隨著機器學習的興起,圖片或文本通過 embedding 高維向量的方式表達,求解相似度會轉(zhuǎn)換為計算向量間的距離。在離線加工場景使用 OLAP 有很多優(yōu)勢,比如可以基于元數(shù)據(jù)過濾、做一些聚合操作,以及配合 UDF 進行加工等等。此外,我們也在精確距離運算、ANN 索引等方面做了一些探索性的優(yōu)化。

圖片

我們基于 ClickHouse 對整套算法鏈路做了重構(gòu),融合 OLAP 成熟數(shù)據(jù)管線,實現(xiàn)了推理、加工和檢索一體化。當有復(fù)用需求時,可以直接修改數(shù)據(jù)管線中的 SQL 配置或 UDF,從而大大降低了使用成本。

圖片

我們還做了向量精確檢索查詢優(yōu)化,將其封裝為 SQL,對于后續(xù)的需求可以方便地進行修改迭代。并且對查詢 SQL 進行了性能優(yōu)化:

圖片


  • 通過 SQL 改寫,采用 with 代替 join,減少冗余計算;prefilter 提前過濾不必要元素。
  • 使用 ZSTD 壓縮,優(yōu)化數(shù)據(jù)結(jié)構(gòu)。
  • 加入 repartition 階段,解決線程間數(shù)據(jù)傾斜問題。

圖片

另外,我們還優(yōu)化了 embedding 計算相關(guān)函數(shù),在業(yè)務(wù)場景中取得了 4 倍的性能提升:

  • 我們在內(nèi)核中新增了一個向量距離計算函數(shù) NormalizedCosineDistance,它可以在歸一化場景下減少整體計算量。
  • 同時我們也根據(jù)業(yè)務(wù)場景定制了 embedding vector distance 函數(shù),通過大幅減少計算的過程中的 memcpy,性能有了很大的提升。

圖片

以上就是本次分享的內(nèi)容,謝謝大家。

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

2024-09-11 14:47:00

2023-10-13 07:25:50

2024-03-05 08:21:23

湖倉一體數(shù)據(jù)湖數(shù)據(jù)倉庫

2023-10-30 07:25:37

數(shù)據(jù)湖數(shù)據(jù)處理

2023-08-30 07:14:27

MaxCompute湖倉一體

2022-07-18 16:02:10

數(shù)據(jù)庫實踐

2024-12-16 08:34:13

2023-07-12 08:44:46

湖倉存儲系統(tǒng)數(shù)據(jù)湖

2022-09-15 09:32:42

數(shù)據(jù)倉處理

2023-06-28 07:28:36

湖倉騰訊架構(gòu)

2023-12-14 13:01:00

Hudivivo

2022-12-21 08:32:34

OLAPDruid架構(gòu)

2016-03-04 10:29:51

微信支付源碼

2019-06-21 10:40:25

微信小程序前端

2021-06-07 10:45:16

大數(shù)據(jù)數(shù)據(jù)倉庫數(shù)據(jù)湖

2012-03-13 15:46:44

計世網(wǎng)

2021-06-11 14:01:51

數(shù)據(jù)倉庫湖倉一體 Flink

2022-05-18 13:24:47

京東調(diào)優(yōu)實踐
點贊
收藏

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

主站蜘蛛池模板: 五月天婷婷久久 | a级黄色毛片免费播放视频 国产精品视频在线观看 | 日日骚网 | 碰碰视频 | 中文字幕 在线观看 | 男人天堂av网站 | 国产精品久久国产精品 | 亚洲一区二区三区免费视频 | 久久免费观看一级毛片 | 亚洲视频在线一区 | 成人在线视频一区 | 精品欧美乱码久久久久久 | 欧美日韩国产一区二区三区 | 色视频网站在线观看 | 韩国精品在线观看 | 国产成人亚洲精品 | 99精品在线观看 | 亚洲精品日韩在线 | 91精品国产手机 | 中文字幕av在线播放 | 大陆一级毛片免费视频观看 | 韩日一区二区三区 | 99re在线视频 | 中文字幕一区在线观看视频 | 久久伊人亚洲 | 亚洲a级 | 欧美不卡一区 | 成人性视频免费网站 | 久久精品小视频 | 午夜精品视频 | 日韩在线观看 | 久久国产精品一区二区三区 | 丁香色婷婷 | 国精久久 | 夜久久 | 7777精品伊人久久精品影视 | 人人叉 | 日韩成人一区 | 国产一区久久 | 成人免费看片又大又黄 | 高清免费av|