日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实践 | Kylin在滴滴OLAP引擎中的应用

發(fā)布時(shí)間:2025/3/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实践 | Kylin在滴滴OLAP引擎中的应用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

本文轉(zhuǎn)載自 AI前線

作者 | 滴滴數(shù)據(jù)平臺(tái)團(tuán)隊(duì)

編輯 | Vincent

?

AI 前線導(dǎo)讀:企業(yè)的生產(chǎn)活動(dòng)會(huì)產(chǎn)生各種各樣的數(shù)據(jù),數(shù)據(jù)作為企業(yè)最重要的資產(chǎn)之一,價(jià)值巨大,數(shù)據(jù)價(jià)值的獲取需要對其進(jìn)行不斷訪問(或讀或?qū)?#xff09;,不同的數(shù)據(jù)訪問需求就構(gòu)成了相互區(qū)別的數(shù)據(jù)訪問場景,只有按照場景定制數(shù)據(jù)的存儲(chǔ)、檢索、傳輸以及計(jì)算加工方案,才有可能提供整體最優(yōu)的數(shù)據(jù)訪問性能。

滴滴 OLAP 引擎細(xì)分多種場景,如靈活分析、固化分析、熱點(diǎn)數(shù)據(jù)等,針對不同場景的特性,使用不同的場景引擎。Apache Kylin 作為滴滴 OLAP 引擎內(nèi)部的固化分析場景引擎,間接服務(wù)了滴滴下游多個(gè)重要的數(shù)據(jù)產(chǎn)品,覆蓋了十多條業(yè)務(wù)線,為用戶提供了穩(wěn)定、可靠、高效的數(shù)據(jù)分析性能。

?

數(shù)據(jù)訪問場景

?2.1 重視區(qū)分?jǐn)?shù)據(jù)訪問場景

為什么需要重視區(qū)分?jǐn)?shù)據(jù)訪問場景?怎么區(qū)分?jǐn)?shù)據(jù)訪問場景?

本質(zhì)上,數(shù)據(jù)訪問場景是一類數(shù)據(jù)訪問需求,數(shù)據(jù)訪問需求可以通過考察以下幾個(gè)方面進(jìn)行歸類識(shí)別:

  • 期望進(jìn)行的查詢以及各個(gè)查詢的查詢頻度和占查詢總量的比例;

  • 每類查詢(行、列、字節(jié)等)結(jié)果的數(shù)據(jù)量級分布;

  • 讀取和更新數(shù)據(jù)的關(guān)系,如讀寫比例、數(shù)據(jù)更新粒度等;

  • 數(shù)據(jù)的工作規(guī)模以及在本機(jī)使用數(shù)據(jù)的方式;

  • 事務(wù)以及事務(wù)隔離級別的需求;

  • 數(shù)據(jù)副本和邏輯完整性的需求;

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

  • 等等,針對不同的數(shù)據(jù)訪問場景,需要定制不同的數(shù)據(jù)存儲(chǔ)、檢索、傳輸以及計(jì)算加工方案,只有這樣,才能借助場景特性,設(shè)計(jì)更有針對性的實(shí)現(xiàn)方案,以更加契合該場景下的數(shù)據(jù)使用,最大化整體數(shù)據(jù)訪問性能。

    ?2.2 典型的數(shù)據(jù)訪問場景

    典型的數(shù)據(jù)訪問場景有:OLTP(On-Line Transaction Processing)場景和 OLAP(On-Line Analysis Processing)場景,OLAP 場景下至少又可細(xì)分為以探索分析為目的的靈活分析和有嚴(yán)格數(shù)據(jù)訪問模式的固化分析兩類場景,這里提到的嚴(yán)格數(shù)據(jù)訪問模式是指在數(shù)據(jù)產(chǎn)出前就已確定可對該數(shù)據(jù)執(zhí)行哪些具體分析,其有明確的邊界,更具體地是指該數(shù)據(jù)存在固定的分析維度,固定的分析指標(biāo)以及在指標(biāo)之上有固定的聚合方式。

    表 2.2-1 對靈活分析和固化分析進(jìn)行了對比總結(jié):

    在互聯(lián)網(wǎng)企業(yè),尤其是以數(shù)據(jù)驅(qū)動(dòng)為核心的互聯(lián)網(wǎng)企業(yè),靈活分析和固化分析二者不可或缺,其中固化分析的一種主要應(yīng)用就是報(bào)表類數(shù)據(jù)產(chǎn)品(當(dāng)然,并非唯一,其他應(yīng)用方式也不可忽略)。靈活分析和固化分析二者的整合催生了滴滴支持多場景的 OLAP 引擎的誕生。

    ?

    支持多場景的 OLAP 引擎

    ?3.1 OLAP 引擎現(xiàn)狀

    當(dāng)前,OLAP 引擎眾多。在大數(shù)據(jù)領(lǐng)域,如 Hive,依賴 Hadoop 提供的可靠存儲(chǔ)和計(jì)算能力,為用戶提供穩(wěn)定的分析服務(wù),再比如 Presto、Spark SQL,突出內(nèi)存計(jì)算,可以滿足用戶快速的分析需求。這些產(chǎn)品雖然側(cè)重不同,但都能覆蓋靈活分析和固化分析場景需求。

    但從嚴(yán)格意義上講,這些產(chǎn)品在設(shè)計(jì)上都沒有細(xì)分兩種場景,而是將二者抽象為一類分析需求,即認(rèn)為只有一種場景,這樣設(shè)計(jì)的好處是可以統(tǒng)一領(lǐng)域問題處理,但因?yàn)槟:藘煞N場景各自的特點(diǎn),在兩種使用場景共存的應(yīng)用中,總體數(shù)據(jù)訪問性能上存在較大的提升空間。

    ?3.2 滴滴 OLAP 引擎

    滴滴 OLAP 引擎,區(qū)分靈活分析和固化分析,同時(shí)對于熱點(diǎn)數(shù)據(jù),也作為一種特有場景進(jìn)行處理。

    圖 3.2-1 OLAP 引擎方案(忽略部分組件關(guān)聯(lián)連線)

    如圖 3.2-1,整體方案上,查詢請求首先進(jìn)入 OLAP 引擎,查詢路由會(huì)基于元數(shù)據(jù)選擇合適的場景引擎,然后根據(jù)所選擇的場景引擎重寫查詢,完成重寫的查詢會(huì)被發(fā)往場景引擎完成執(zhí)行并返回查詢結(jié)果。

    此外,OLAP 引擎還包含了一個(gè)數(shù)據(jù)轉(zhuǎn)移決策模塊,可以根據(jù)用戶提供的先驗(yàn)知識(shí)及自身決策將數(shù)據(jù)轉(zhuǎn)移到更契合的場景引擎。調(diào)度模塊根據(jù)這一決策觸發(fā)數(shù)據(jù)在場景引擎間的“復(fù)制”,以及無效“副本”的清除。新生成的“復(fù)制副本”通常會(huì)提供比老舊“副本”更好的訪問性能,即需要花費(fèi)更小的訪問 Cost(代價(jià))。

    ?3.3 固化分析場景實(shí)現(xiàn)方案

    章節(jié) 2.2 中已經(jīng)分析了固化分析場景的特點(diǎn),不難發(fā)現(xiàn),該場景下非常適合對數(shù)據(jù)進(jìn)行聚合預(yù)計(jì)算并緩存聚合結(jié)果,即聚合緩存。

    固化分析有固定的分析維度、指標(biāo)及其聚合方式,查詢邊界明確,對原始明細(xì)數(shù)據(jù)執(zhí)行聚合預(yù)計(jì)算,并將結(jié)果緩存到 Key-Value 存儲(chǔ),不僅可以緩解每次分析查詢給集群帶來的計(jì)算壓力,Key-Value 存儲(chǔ)也可以提升查詢性能。通常地,聚合預(yù)計(jì)算結(jié)果相對于原始的明細(xì)數(shù)據(jù)在規(guī)模上會(huì)有明顯的量級下降,這也是 OLAP 場景的一個(gè)特性。

    ?

    Apache Kylin 作為固化分析場景引擎

    ?4.1 固化分析場景引擎選型

    章節(jié) 3.3 分析了固化分析場景的實(shí)現(xiàn)方案,在技術(shù)選型時(shí)選擇使用 Apache Kylin,主要因?yàn)?Kylin 提供了以下三個(gè)特性:

  • 針對明細(xì)數(shù)據(jù)進(jìn)行聚合計(jì)算;

  • 將聚合結(jié)果存儲(chǔ)到 HBase;

  • 針對明細(xì)和聚合結(jié)果支持標(biāo)準(zhǔn)的 SQL 訪問;

  • 上述三個(gè)特性不僅提供了完備的聚合緩存能力,同時(shí)也支持 SQL 訪問,因此接入成本相對較低,另外,Kylin 也提供了成熟的優(yōu)化查詢的方法,如 HBase RowKey 序、字典編碼等等,在一定程度上方便了使用優(yōu)化。

    ?4.2 Apache Kylin 在場景引擎中承擔(dān)的工作職責(zé)

    Kylin 作為固化分析場景引擎,主要負(fù)責(zé)對有聚合緩存需求的表進(jìn)行查詢加速。什么樣的表會(huì)有這樣的需求呢?

  • 報(bào)表類產(chǎn)品使用的表;

  • 經(jīng) OLAP 引擎數(shù)據(jù)轉(zhuǎn)移決策識(shí)別認(rèn)為需要進(jìn)行聚合緩存的表;

  • 前者不難理解,后者則如引擎中的表,表數(shù)據(jù)規(guī)模較大,且被頻繁執(zhí)行某種聚合分析,在一段時(shí)間內(nèi)達(dá)到一定的頻次,引擎會(huì)識(shí)別并認(rèn)為該表需要執(zhí)行聚合緩存,進(jìn)而觸發(fā)調(diào)度將數(shù)據(jù)“復(fù)制”到 Kylin。這樣,下次針對該表的聚合分析如果可被 Kylin 的聚合緩存覆蓋,就會(huì)直接查詢 Kylin 中的聚合數(shù)據(jù)“副本”而非原始的明細(xì)數(shù)據(jù)“副本”。

    ?4.3 使用 Apache Kylin 遇到的挑戰(zhàn)

    滴滴使用 Kylin 的方式與傳統(tǒng)方式有異,Kylin 在架構(gòu)設(shè)計(jì)上與業(yè)務(wù)緊耦合,傳統(tǒng)方式中業(yè)務(wù)分析人員基于 Kylin 建模、構(gòu)建立方體(Cube),然后執(zhí)行分析查詢。但滴滴將 Kylin 作為固化分析場景下的引擎使用,提供針對表的聚合緩存服務(wù),這樣作為一個(gè)通用數(shù)據(jù)組件的 Kylin 就剝離了業(yè)務(wù)屬性,且與用戶相割裂,對外透明。

    在最初的使用中,由于沒有控制 OLAP 引擎的內(nèi)部并發(fā),來自調(diào)度的聚合緩存任務(wù)會(huì)在某些情況下高并發(fā)地執(zhí)行 Kylin 的表加載、模型和立方體的創(chuàng)建,因?yàn)?Kylin Project 元數(shù)據(jù)的更新機(jī)制導(dǎo)致操作存在失敗的可能。當(dāng)前,我們通過在 OLAP 引擎內(nèi)部使用隊(duì)列在一定程度上緩解了問題的發(fā)生,此外,結(jié)合重試機(jī)制,基本可以保證操作的成功完成。最后我們也注意到,該問題在最新的 Kylin 版本中已經(jīng)進(jìn)行了修復(fù)。

    另外,Kylin 默認(rèn)地,在刪除立方體時(shí)不會(huì)卸載 HBase 中的 Segment 表,而需定期執(zhí)行腳本進(jìn)行清理。這樣,就導(dǎo)致引擎運(yùn)行時(shí)及時(shí)卸載無效的立方體無法級聯(lián)到 HBase,給 HBase 造成了較大的運(yùn)維壓力。因此我們也對源碼進(jìn)行了調(diào)整,在立方體刪除時(shí)增加了 HBase Segment 表清理的功能,等等。

    ?4.4 Apache Kylin 在場景引擎中的使用效果

    圖 4.4-1 為 Kylin 在滴滴 OLAP 引擎中的部署情況,Kylin 集群包含 2 臺(tái)分布式構(gòu)建節(jié)點(diǎn)、8 臺(tái)查詢節(jié)點(diǎn),其中 2 臺(tái)查詢節(jié)點(diǎn)作為集群接口承接 REST 請求,REST 請求主要包含兩類:構(gòu)建作業(yè)狀態(tài)查詢和創(chuàng)建類操作,創(chuàng)建類操作如裝載表、建模、創(chuàng)建立方體以及對等的刪除操作等等。對于構(gòu)建作業(yè)狀態(tài)查詢輪詢請求兩臺(tái)節(jié)點(diǎn),而對創(chuàng)建類操作則請求其中固定的一臺(tái)節(jié)點(diǎn),另一臺(tái)作為 Standby 存在,這樣設(shè)計(jì)的主要目的是避免集群接口的單點(diǎn)問題,同時(shí)解決因 Kylin 集群元數(shù)據(jù)同步機(jī)制導(dǎo)致的可能出現(xiàn)的創(chuàng)建類操作失敗問題。

    圖 4.4-1 Kylin 集群部署

    目前,Kylin 集群維護(hù)了 700+ 的立方體,每日運(yùn)行 2000+ 的構(gòu)建作業(yè),平均構(gòu)建時(shí)長 37 分鐘,立方體存儲(chǔ)總量 30+TB(已去除 HDFS 副本影響);對未使用緩存的查詢進(jìn)行統(tǒng)計(jì),80% 的查詢耗時(shí)小于 500ms,90% 的查詢耗時(shí)小于 2.8 秒。需要說明的是,由于 OLAP 引擎中“數(shù)據(jù)轉(zhuǎn)移決策”模塊會(huì)根據(jù)查詢場景觸發(fā)數(shù)據(jù)“復(fù)制”到 Kylin 中來,在近期的統(tǒng)計(jì)中,立方體數(shù)量一度會(huì)達(dá)到 1100+。

    在業(yè)務(wù)方面,Kylin 間接服務(wù)了下游數(shù)易(面向全公司的報(bào)表類數(shù)據(jù)產(chǎn)品)、開放平臺(tái)(面向全公司的查詢?nèi)肟?#xff09;等多個(gè)重要數(shù)據(jù)產(chǎn)品,覆蓋了快車、專車等十多個(gè)業(yè)務(wù)線的分析使用,間接用戶 3000+,Kylin 的引入為用戶提供了穩(wěn)定、可靠、高效的固化分析性能。

    ?

    總結(jié)

    滴滴 OLAP 引擎細(xì)分了靈活分析、固化分析、熱點(diǎn)數(shù)據(jù)等幾類場景, Kylin 作為固化分析場景引擎在滴滴 OLAP 引擎中承擔(dān)了重要角色。引擎使用 Kylin 提供的:針對明細(xì)數(shù)據(jù)進(jìn)行聚合計(jì)算,將聚合結(jié)果存儲(chǔ)到 HBase,針對明細(xì)和聚合結(jié)果支持標(biāo)準(zhǔn)的 SQL 訪問三個(gè)特性透明地服務(wù)用戶。當(dāng)前,引擎服務(wù)了下游多個(gè)重要數(shù)據(jù)產(chǎn)品,覆蓋了十多個(gè)業(yè)務(wù)線,為用戶提供了穩(wěn)定、可靠、高效的數(shù)據(jù)分析性能。

    Kylin 作為中國人主導(dǎo)的第一個(gè) Apache 頂級開源項(xiàng)目,覆蓋場景重要,社區(qū)活躍,資料豐富,未來我們將更加專注于 Kylin 在滴滴 OLAP 引擎應(yīng)用場景下的穩(wěn)定性以及查詢、構(gòu)建優(yōu)化。

    ?

    作者介紹

    鄭秋野,滴滴數(shù)據(jù)平臺(tái)高級專家工程師,滴滴數(shù)據(jù)系統(tǒng)團(tuán)隊(duì)負(fù)責(zé)人。

    靳國衛(wèi),滴滴數(shù)據(jù)平臺(tái)專家工程師,主要負(fù)責(zé) OLAP 引擎建設(shè)。

    張曉東,滴滴數(shù)據(jù)平臺(tái)高級工程師,主要負(fù)責(zé) OLAP 引擎元數(shù)據(jù)設(shè)計(jì)開發(fā)以及 Apache Kylin 集群運(yùn)維。

    ?

    關(guān)于滴滴數(shù)據(jù)平臺(tái)團(tuán)隊(duì)

    滴滴基礎(chǔ)平臺(tái)部數(shù)據(jù)平臺(tái)團(tuán)隊(duì)負(fù)責(zé)公司數(shù)據(jù)倉庫建設(shè)、數(shù)據(jù)治理以及基礎(chǔ)數(shù)據(jù)工具研發(fā)等,團(tuán)隊(duì)提供 OLAP 引擎、Adhoc 工具、數(shù)據(jù)地圖、數(shù)據(jù)分析平臺(tái)、建模平臺(tái)等系列產(chǎn)品穩(wěn)定、高效地服務(wù)用戶的數(shù)據(jù)需求。

    轉(zhuǎn)載于:https://my.oschina.net/cicixing/blog/2208233

    總結(jié)

    以上是生活随笔為你收集整理的实践 | Kylin在滴滴OLAP引擎中的应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。