《2 得物-StarRocks存算分離在得物的降本增效實踐.pdf》由會員分享,可在線閱讀,更多相關《2 得物-StarRocks存算分離在得物的降本增效實踐.pdf(23頁珍藏版)》請在三個皮匠報告上搜索。
1、StarRocks 存算分離在得物的降本增效實踐丁凱劍得物StarRocks負責人,8年OLAP研發經驗,StarRocks Active Contributor,Apache Druid Committer010203Clickhouse 在大數據量下的困境從 Clickhouse 到 StarRocks 存算分離成果展示及未來規劃01遷移背景背景豐富的場景OLAP 引擎在得物客服、風控、供應鏈、投放、運營、A/B 實驗等大量業務場景,在報表、日志、實時數倉等應用場景都有廣泛的應用。使用多種OLAP引擎引入和使用 OLAP 引擎的過程中業務選擇當時最適合的引擎,現存云 上Hologres、A
2、DB、Clickhouse 和自建Clickhouse、StarRocks 五種引擎產品目標統一引擎最終只保留1到2個引擎先把一套超過4000核的最大,業務最復雜的智能運營平臺 Clickhouse 集群遷移到存算分離的 StarRocks02Clickhouse 在大數據量下的困境線上 Clickhouse 集群面臨瓶頸集群用量大超過4000核存儲超過500TB日常需要查詢日/周/月/季/年 環比/同比,查詢時間跨度長集群負載接近上限物化視圖缺乏透明改寫能力建立了40+物化視圖由外部代碼主動管理、創建物化視圖、改寫sql去查詢物化視圖在需要重刷歷史數據時,由外部代碼管理的物化視圖的重刷復雜缺
3、乏離線導入功能導入鏈路存在格式轉換存在格式轉換,效率低,占用大量占用大量 ClickhouseClickhouse 集群資源集群資源擴容困難Clickhouse 單機規格已是頂配,沒有升配空間沒有升配空間按指定字段分桶的表,擴容后需要重導數據才能保證正確性,需要一周的停服需要一周的停服擴容和導入只能搭建一個主集群一半大的備份集群,存儲最核心的數據,與主集群構成雙活來分流分流部分查詢,來減小主集群負載,這樣增加了增加了50%+50%+成本成本。03基于 StarRocks 降本增效存算分離帶來成本下降單副本模式數據存儲在遠端,不擔心丟失比3副本存算一體降低降低2/32/3存儲成本存儲成本擴縮容無
4、需搬遷數據擴縮容無需均衡,擴容新節點可以馬上利用只緩存必要數據不需要把所有的數據都存儲在本地盤,而只需要緩存常用數據大量使用物化視圖,減少基表實際需要存儲在data cache中的數據量命中 data cache 時性能與存算一體相同經過評估存算分離部署模式能帶來40%+40%+的成本下降的成本下降。更好易用性Clickhouse1.支持的 join 類型有限2.Join 不正確使用分布式表和 local 表會有性能或正確性問題3.手動改寫 SQL 利用物化視圖4.離線導入效率不高StarRocks1.支持各種 join 類型且符合標準 SQL 語法的預期2.不區分分布式表和 local 表,
5、專注業務即可3.物化視圖無侵入透明改寫,并保證與基表數據一致性4.離線導入并發可控,資源可控重度使用物化視圖進行提效使用技巧1.不命中物化視圖時,在資源組中限制大表時間跨度超過8天就不允許查詢2.approx_count_distinct改寫成hll_union_agg(hll_hash(col)讓查基表與查物化視圖的結果完全一致3.使用明細物化視圖減少數據讀取量4.物化視圖只基于單表,方便在各種 join sql 語句中復用5.一個物化視圖包括盡量多的指標,查詢時一次性查多個指標6.materialized_view_rewrite_mode=force讓一個查詢中多個count disti
6、nct也能命中物化視圖重度使用物化視圖進行提效物化視圖推薦1.通過在 FE 中記錄 SQL 結構,在外部實現基于單表的物化視圖推薦程序2.能做到對表/物化視圖字段的在過濾條件中的命中次數進行統計,用來判斷哪些字段做排序鍵能適配更多的查詢能適配更多的查詢3.能做到對單表的子語句用到的指標和維度列進行分析,找到有高收益的潛在找到有高收益的潛在物化視圖物化視圖,并且排除已經存在的物化視圖4.物化視圖啟用 collocate group優化選擇策略和性能1.跳過物化視圖與無關表的匹配,優化選擇性能,耗時減少5 50%0%2.提早剔除一些不包含查詢需要的列的物化視圖,減少了后續匹配測試的開銷,耗時減少7
7、0%70%3.優先選中 key 列匹配查詢過濾條件的物化視圖,再優先選行數最少的物化視圖擴展物化視圖可用場景3.3版本剛發布時不少場景下物化視圖不能被命中社區幫助修復一些問題,我們也修復了8個命中問題,包括這頁所有優化,都已經提交 PR 并 merge 了修復物化視圖刷新問題1.支持刷新順序為從新分區到老分區,最近的數據能最快得到加速2.修復了 force 刷新不生效的問題3.修復物化視圖在 image 創建后被非預期 inactive,重啟后被強制刷新的問題4.反饋給社區修復 fast schema evolution 導致的 MV 非預期刷新問題04遷移過程灰度遷移智能運營原本并不直接查詢
8、 Clickhouse,而是經過中間的 ONE DSLONE DSL 平臺平臺翻譯 DSL(一種類 SQL)為Clickhouse SQL 后發給 Clickhouse現在 ONE DSL 增加 StarRocks 翻譯類型,智能運營仍然經過 ONE DSLONE DSL 平臺平臺翻譯 DSL 為Clickhouse/StarRocks SQL 后發給后端引擎智能運營每個接口指定 DSL 目標翻譯類型,ONE DSL 平臺轉發翻譯后 SQL 給 Clickhouse 或 者StarRocks,按接口灰度可以逐個的遷移和隨時單獨回滾語法兼容兼容 Clickhouse常用函數1.仿造 Trino
9、AstBuilder 實現 Clickhouse AstBuilder,新增sql_dialect=clickhouse 選項2.兼容了業務方用到的72個函數,業務方95%的 SQL 不需要修改3.可以做到一個 Clickhouse 函數對應一個 StarRocks 函數或者多個函數的組合,并且將來新增一個 Clickhouse 函數映射是非常簡單的。實現 Clickhouse用法的 ArrayJoin 函數StarRocks 原生寫法 select u from tbl,unnest(array_ column);ArrayJoin 寫法 select arrayJoin(array_col
10、umn)from tbl;在 select 語句中實現 unnest 列轉行的效果Clickhouse 的 ArrayJoin 語法仍然不支持實現 Clickhouse 式的別名引用select id as id_alias,sum(a)as b,concat(b,_)from tbl group by id_alias可以在select的后段引用前段定義的別名Clickhouse 表/物化視圖轉換工具在引擎之外將 Clickhouse 建表和建物化視圖的 DDL 轉為 StarRocks DDL優化查詢性能優化特定場景性能1.修復多個場景的物化視圖命中問題和優化物化視圖選擇策略性能2.分區字
11、段查詢帶函數導致物化視圖分區裁剪失敗3.優化數值與字符串類型隱式轉換,對應 SQL 性能提升2020倍倍4.優化 date/datetime 被當做字符串使用時的規則,從而命中稀疏索引命中,對應 SQL 性能提升3030倍倍5.減少查詢時存算分離 staros 的 rpc 調用次數+簡易 rpc 結果緩存,查詢耗時普遍減少減少3s+3s+創建大量物化視圖在原有遷移過來的40+物化視圖之外,又增加100+物化視圖。最大的3張表占總存儲的50%,對應了60+物化視圖表結構優化遷移過來的表結構有不少不合理之處優化表和物化視圖的排序鍵、分桶鍵、分桶數量符合查詢特性。極端情況查詢性能提升150150倍優
12、化查詢性能-指導用戶寫更好 SQL把 limit 提前到 join 語句里去除 join key 上不必要的函數調用業務方 join on upper(query)上,但表的數據其實都是小寫,去除 upper 函數再 join 提升至少一倍性能。換種寫法優化 plan極端情況提升250250倍維度表過濾條件下推Join 的維度表也加上過濾條件,從查詢超時到0.10.1s減少了 join 的行數,降低70%70%耗時運維和可觀測增強1.支持指定 custom_query_id,并可以異步 kill query2.根據表名獲取物化視圖列表和物化視圖的具體列信息 API3.資源水位 API4.SQL
13、 復雜度因子 API05成果展示成果展示1.成本收益:智能運營底層底層APAP引擎費用下降引擎費用下降40%40%,存儲費用下降4/52.性能和體驗收益:查詢耗時下降一半下降一半;查詢成功率從98.57%98.57%提升到提升到99.44%99.44%3.數據時效性收益:在雙跑期間 Clickhouse 的基線 SLA 達成率是99.42%,StarRocks 的 基線基線 SLASLA 達成率達成率是是100%100%4.穩定性收益:集群因為單節點異常導致集群不可用的時間從 15min15min縮短到縮短到30s30s內內成本收益社區合作我們與社區保持了密切的接觸,獲得了社區大量幫助我們會提交一些重大 issue,同時也貢獻我們的修復給社區。遷移過程中共提交 PR 28個,已 merge 24個(pr列表)06未來規劃未來規劃1.智能物化視圖推薦2.StarRocks 大版本統一,引擎統一收斂到 StarRocks3.StarRocks 容器化部署和彈性資源4.Flink 寫入 StarRocks 進行整體規劃5.應用湖倉一體6.更多得物應用場景拓展感謝觀看!Thank you!關注公眾號