實踐 Kylin在滴滴OLAP引擎中的應用

2021-09-11 09:05:00 字數 4322 閱讀 9880

作者 | 滴滴資料平台團隊

編輯 | vincent

滴滴 olap 引擎細分多種場景,如靈活分析、固化分析、熱點資料等,針對不同場景的特性,使用不同的場景引擎。apache kylin 作為滴滴 olap 引擎內部的固化分析場景引擎,間接服務了滴滴下游多個重要的資料產品,覆蓋了十多條業務線,為使用者提供了穩定、可靠、高效的資料分析效能。

資料訪問場景

2.1 重視區分資料訪問場景

為什麼需要重視區分資料訪問場景?怎麼區分資料訪問場景?

本質上,資料訪問場景是一類資料訪問需求,資料訪問需求可以通過考察以下幾個方面進行歸類識別:

期望進行的查詢以及各個查詢的查詢頻度和佔查詢總量的比例;

每類查詢(行、列、位元組等)結果的資料量級分布;

讀取和更新資料的關係,如讀寫比例、資料更新粒度等;

資料的工作規模以及在本機使用資料的方式;

事務以及事務隔離級別的需求;

資料副本和邏輯完整性的需求;

對每類查詢的延遲和吞吐量的需求;

等等,針對不同的資料訪問場景,需要定製不同的資料儲存、檢索、傳輸以及計算加工方案,只有這樣,才能借助場景特性,設計更有針對性的實現方案,以更加契合該場景下的資料使用,最大化整體資料訪問效能。

2.2 典型的資料訪問場景

典型的資料訪問場景有:oltp(on-line transaction processing)場景和 olap(on-line analysis processing)場景,olap 場景下至少又可細分為以探索分析為目的的靈活分析和有嚴格資料訪問模式的固化分析兩類場景,這裡提到的嚴格資料訪問模式是指在資料產出前就已確定可對該資料執行哪些具體分析,其有明確的邊界,更具體地是指該資料存在固定的分析維度,固定的分析指標以及在指標之上有固定的聚合方式。

表 2.2-1 對靈活分析和固化分析進行了對比總結:

在網際網路企業,尤其是以資料驅動為核心的網際網路企業,靈活分析和固化分析二者不可或缺,其中固化分析的一種主要應用就是報表類資料產品(當然,並非唯一,其他應用方式也不可忽略)。靈活分析和固化分析二者的整合催生了滴滴支援多場景的 olap 引擎的誕生。

支援多場景的 olap 引擎

3.1 olap 引擎現狀

當前,olap 引擎眾多。在大資料領域,如 hive,依賴 hadoop 提供的可靠儲存和計算能力,為使用者提供穩定的分析服務,再比如 presto、spark sql,突出記憶體計算,可以滿足使用者快速的分析需求。這些產品雖然側重不同,但都能覆蓋靈活分析和固化分析場景需求。

但從嚴格意義上講,這些產品在設計上都沒有細分兩種場景,而是將二者抽象為一類分析需求,即認為只有一種場景,這樣設計的好處是可以統一領域問題處理,但因為模糊了兩種場景各自的特點,在兩種使用場景共存的應用中,總體資料訪問效能上存在較大的提公升空間。

3.2 滴滴 olap 引擎

滴滴 olap 引擎,區分靈活分析和固化分析,同時對於熱點資料,也作為一種特有場景進行處理。

圖 3.2-1 olap 引擎方案(忽略部分元件關聯連線)

如圖 3.2-1,整體方案上,查詢請求首先進入 olap 引擎,查詢路由會基於元資料選擇合適的場景引擎,然後根據所選擇的場景引擎重寫查詢,完成重寫的查詢會被發往場景引擎完成執行並返回查詢結果。

此外,olap 引擎還包含了乙個資料轉移決策模組,可以根據使用者提供的先驗知識及自身決策將資料轉移到更契合的場景引擎。排程模組根據這一決策觸發資料在場景引擎間的「複製」,以及無效「副本」的清除。新生成的「複製副本」通常會提供比老舊「副本」更好的訪問效能,即需要花費更小的訪問 cost(代價)。

3.3 固化分析場景實現方案

章節 2.2 中已經分析了固化分析場景的特點,不難發現,該場景下非常適合對資料進行聚合預計算並快取聚合結果,即聚合快取。

固化分析有固定的分析維度、指標及其聚合方式,查詢邊界明確,對原始明細資料執行聚合預計算,並將結果快取到 key-value 儲存,不僅可以緩解每次分析查詢給集群帶來的計算壓力,key-value 儲存也可以提公升查詢效能。通常地,聚合預計算結果相對於原始的明細資料在規模上會有明顯的量級下降,這也是 olap 場景的乙個特性。

apache kylin 作為固化分析場景引擎

4.1 固化分析場景引擎選型

章節 3.3 分析了固化分析場景的實現方案,在技術選型時選擇使用 apache kylin,主要因為 kylin 提供了以下三個特性:

針對明細資料進行聚合計算;

將聚合結果儲存到 hbase;

針對明細和聚合結果支援標準的 sql 訪問;

上述三個特性不僅提供了完備的聚合快取能力,同時也支援 sql 訪問,因此接入成本相對較低,另外,kylin 也提供了成熟的優化查詢的方法,如 hbase rowkey 序、字典編碼等等,在一定程度上方便了使用優化。

4.2 apache kylin 在場景引擎中承擔的工作職責

kylin 作為固化分析場景引擎,主要負責對有聚合快取需求的表進行查詢加速。什麼樣的表會有這樣的需求呢?

報表類產品使用的表;

經 olap 引擎資料轉移決策識別認為需要進行聚合快取的表;

前者不難理解,後者則如引擎中的表,表資料規模較大,且被頻繁執行某種聚合分析,在一段時間內達到一定的頻次,引擎會識別並認為該錶需要執行聚合快取,進而觸發排程將資料「複製」到 kylin。這樣,下次針對該錶的聚合分析如果可被 kylin 的聚合快取覆蓋,就會直接查詢 kylin 中的聚合資料「副本」而非原始的明細資料「副本」。

4.3 使用 apache kylin 遇到的挑戰

滴滴使用 kylin 的方式與傳統方式有異,kylin 在架構設計上與業務緊耦合,傳統方式中業務分析人員基於 kylin 建模、構建立方體(cube),然後執行分析查詢。但滴滴將 kylin 作為固化分析場景下的引擎使用,提供針對表的聚合快取服務,這樣作為乙個通用資料元件的 kylin 就剝離了業務屬性,且與使用者相割裂,對外透明。

在最初的使用中,由於沒有控制 olap 引擎的內部併發,來自排程的聚合快取任務會在某些情況下高併發地執行 kylin 的表載入、模型和立方體的建立,因為 kylin project 元資料的更新機制導致操作存在失敗的可能。當前,我們通過在 olap 引擎內部使用佇列在一定程度上緩解了問題的發生,此外,結合重試機制,基本可以保證操作的成功完成。最後我們也注意到,該問題在最新的 kylin 版本中已經進行了修復。

4.4 apache kylin 在場景引擎中的使用效果

圖 4.4-1 為 kylin 在滴滴 olap 引擎中的部署情況,kylin 集群包含 2 臺分布式構建節點、8 臺查詢節點,其中 2 臺查詢節點作為集群介面承接 rest 請求,rest 請求主要包含兩類:構建作業狀態查詢和建立類操作,建立類操作如裝載表、建模、建立立方體以及對等的刪除操作等等。對於構建作業狀態查詢輪詢請求兩台節點,而對建立類操作則請求其中固定的一台節點,另一台作為 standby 存在,這樣設計的主要目的是避免集群介面的單點問題,同時解決因 kylin 集群元資料同步機制導致的可能出現的建立類操作失敗問題。

圖 4.4-1 kylin 集群部署

目前,kylin 集群維護了 700+ 的立方體,每日執行 2000+ 的構建作業,平均構建時長 37 分鐘,立方體儲存總量 30+tb(已去除 hdfs 副本影響);對未使用快取的查詢進行統計,80% 的查詢耗時小於 500ms,90% 的查詢耗時小於 2.8 秒。需要說明的是,由於 olap 引擎中「資料轉移決策」模組會根據查詢場景觸發資料「複製」到 kylin 中來,在近期的統計中,立方體數量一度會達到 1100+。

在業務方面,kylin 間接服務了下游數易(面向全公司的報表類資料產品)、開放平台(面向全公司的查詢入口)等多個重要資料產品,覆蓋了快車、專車等十多個業務線的分析使用,間接使用者 3000+,kylin 的引入為使用者提供了穩定、可靠、高效的固化分析效能。總結

滴滴 olap 引擎細分了靈活分析、固化分析、熱點資料等幾類場景, kylin 作為固化分析場景引擎在滴滴 olap 引擎中承擔了重要角色。引擎使用 kylin 提供的:針對明細資料進行聚合計算,將聚合結果儲存到 hbase,針對明細和聚合結果支援標準的 sql 訪問三個特性透明地服務使用者。當前,引擎服務了下游多個重要資料產品,覆蓋了十多個業務線,為使用者提供了穩定、可靠、高效的資料分析效能。

kylin 作為中國人主導的第乙個 apache 頂級開源專案,覆蓋場景重要,社群活躍,資料豐富,未來我們將更加專注於 kylin 在滴滴 olap 引擎應用場景下的穩定性以及查詢、構建優化。

作者介紹

鄭秋野,滴滴資料平台高階專家工程師,滴滴資料系統團隊負責人。

靳國衛,滴滴資料平台專家工程師,主要負責 olap 引擎建設。

張曉東,滴滴資料平台高階工程師,主要負責 olap 引擎元資料設計開發以及 apache kylin 集群運維。

關於滴滴資料平台團隊

滴滴基礎平台部資料平台團隊負責公司資料倉儲建設、資料治理以及基礎資料工具研發等,團隊提供 olap 引擎、adhoc 工具、資料地圖、資料分析平台、建模平台等系列產品穩定、高效地服務使用者的資料需求。

直播報名 Kylin 在汽車之家的應用與實踐

千億級資料量級下,如何秒級返回查詢結果?2017 年,汽車之家遭遇大資料分析難題,經過一番選型調研,選擇了 apache kylin 作為核心 olap 引擎,應用於戰略級商業資料產品 智慧型營銷資料平台 車智雲 從 kylin v1.5 到 kylin v2.6,kylin 在汽車之家的應用歷經多...

HTML語義化在搜尋引擎優化(SEO)中的應用

其實零才接觸html語義化也不是很久,還記得第一次接觸竟然是被某網路公司web前端招聘的hr問到,當時真的很囧。所謂吃一塹,長一智,零才決定對web前端和seo結合起來學習。什麼是html語義化?如果大家對它也較為陌生,或者決定對下面的解釋理解起來有點吃力,可以參考下零才在微博中給的通俗解釋。分離結...

omnipeeker在wifi分析中的應用

記得大學學習tcp ip協議時,tcpdump給了很多幫助,最近需要好好了解一下802.11x mac層,在業內高手的推薦下發現了omnipeeker這一利器。下面和初學者分享一下這個軟體的使用。從無線特性看,電磁波的發射方是沒法限制接收方的,只要在覆蓋範圍內,任何人都可以用相關裝置收到訊號,也可以...