<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Apache Kylin 在貝殼找房指標(biāo)體系的應(yīng)用

          共 4321字,需瀏覽 9分鐘

           ·

          2021-05-05 11:13


          引言


          “貝殼找房在做的就是推動居住服務(wù)這個傳統(tǒng)行業(yè)進(jìn)行深度的互聯(lián)網(wǎng)化,在這個過程中數(shù)據(jù)是非常重要的支撐。”

          ——張如松,貝殼找房數(shù)據(jù)平臺高級工程師

          近日,Apache Kylin 5 周年在線慶典順利結(jié)束,來自貝殼找房的張如松老師為大家介紹了 Apache Kylin 在在貝殼找房指標(biāo)體系的應(yīng)用,包含 Kylin 升級歷程以及對 Kylin 4.0 版本的展望。

          以下是張如松老師的現(xiàn)場分享實錄。

          Apache Kylin 在貝殼找房的發(fā)展歷程


          貝殼找房是以技術(shù)驅(qū)動的品質(zhì)居住服務(wù)平臺,聚合和賦能全行業(yè)的優(yōu)質(zhì)服務(wù)者,打造開放的品質(zhì)居住服務(wù)生態(tài),致力于為3億家庭提供包括二手房、新房、租賃、裝修和社區(qū)服務(wù)等全方位的居住服務(wù),涉及到了居住服務(wù)的方方面面。

          貝殼找房有 4+ 年的 Kylin 使用經(jīng)驗。從 2016 年下半年開始,當(dāng)時有一個 Hive + MySQL 的平臺,內(nèi)部代號是地動儀,用來解決業(yè)務(wù)線的多維分析需求。

          Kylin 在貝殼找房中的架構(gòu)體系

          上圖展現(xiàn)了平臺數(shù)據(jù)的流轉(zhuǎn)過程,負(fù)責(zé)數(shù)倉的同學(xué)會將數(shù)據(jù)進(jìn)行初步的預(yù)聚合,再通過關(guān)系數(shù)據(jù)庫來提供查詢。但是隨著數(shù)據(jù)量的快速增長,查詢響應(yīng)的時間變得越來越長,底層數(shù)據(jù)庫的運維壓力也越來越大。為了解決這些問題,同時為了支撐公司的指標(biāo)體系建設(shè),需要一個既能夠支持大規(guī)模數(shù)據(jù)計算,也可以對查詢作出快速響應(yīng)的引擎。
           
          經(jīng)過調(diào)研,從可支持海量數(shù)據(jù)計算、亞秒級查詢響應(yīng)、支持標(biāo)準(zhǔn)SQL、以及可維護(hù)性,涉及的技術(shù)棧以及社區(qū)活躍度上,Kylin 都符合作為數(shù)據(jù)引擎來支撐企業(yè)指標(biāo)體系建設(shè)的要求。


          2017 年 3 月,Kylin 1.6 版本上線

          隨著指標(biāo)平臺的上線,Kylin 開始對外提供服務(wù)。

          2017 年底,貝殼已經(jīng)累計創(chuàng)建了 300 + Cube,每天有 20 多萬的查詢量

          2018 年初,隨著指標(biāo)在各業(yè)務(wù)線的推廣,有越來越多的數(shù)據(jù)產(chǎn)品開始接入 Kylin

          例如像 Merlin、Turing 等數(shù)據(jù)產(chǎn)品,這些產(chǎn)品從PC端到手機(jī)端覆蓋的范圍非常廣泛,涉及到公司組織架構(gòu)的各個層級,都有相應(yīng)的數(shù)據(jù)需求。同時為了保障重點數(shù)據(jù)的產(chǎn)出和查詢,我們又部署了一套集群來給重點業(yè)務(wù)使用。

          2018 年底,貝殼一共有 2 套集群,累計創(chuàng)建了 600+ Cube,每天的查詢量達(dá)到了 200 萬。


          2019 年初,我們 Kylin Team 定下了兩個 KPI,在機(jī)制方面要保障重點數(shù)據(jù)在每天上午 9 點之前產(chǎn)出,在查詢上要達(dá)成 3 秒鐘內(nèi)響應(yīng)占比 99.7%,將 Kylin 升級到 3.1 版本,主要來做實時多維分析的應(yīng)用。

          為了達(dá)成這兩個目標(biāo),在計算方面我們把集群從 1.6.0升級到 2.5.2,引入了 Spark 組件,將重點 Cube 構(gòu)建的方式從 MR 改為了 Spark。


          上圖是調(diào)優(yōu)前后的對比,重點 Cube 的平均構(gòu)建時間從 70 分鐘降到了 43 分鐘,近 40% 左右的提升;在查詢方面也通過一系列的優(yōu)化,在 12 月就達(dá)成了 3 秒內(nèi)占比 99.7% 的目標(biāo)。


          下圖是當(dāng)時每天的統(tǒng)計數(shù)據(jù),到 19 年底貝殼還是兩套集群,版本是 2.5.2,累計 700+ Cubes,每天的查詢量超過了 1000 萬。


          2020年初,Kylin 升級到 3.1.0,引入了 Flink 組件。

          下圖是公司的一級指標(biāo)使用 Flink 組件前后花費時間的對比,可以看到提升比較明顯,截止到 2020 年底,貝殼有兩個3.1的集群,累計 800+ Cubes,每天的查詢量最高超過了 2300 萬。

          使用 Flink 前后的構(gòu)建時長對比


          總的來說,這幾年貝殼找房圍繞 Kylin 主要在做平臺化的建設(shè)。

          下圖右邊最下面是 Kylin 集群,我們把集群的節(jié)點分成了 3 種角色,一臺 Master 節(jié)點,負(fù)責(zé)接受提交的構(gòu)建任務(wù)和提供元數(shù)據(jù)查詢服務(wù)。Master 節(jié)點既不參與查詢也不參與構(gòu)建。有多臺構(gòu)建器(Job節(jié)點)和查詢機(jī)器(Query節(jié)點)提供服務(wù),這是在集群節(jié)點上的劃分。集群本身是不對外開放的,通過上層平臺提供服務(wù)。在平臺側(cè)主要是圍繞 API、任務(wù)、查詢、元數(shù)據(jù)做了一些工作。我們封裝了 Kylin 的 API,對創(chuàng)建的 Cube 的流程進(jìn)行了簡化,同時對接了公司的權(quán)限體系來對模型進(jìn)行權(quán)限控制。
          在任務(wù)管理上,由平臺控制任務(wù)的提交,包括任務(wù)的優(yōu)先級,任務(wù)的運行數(shù),還有對任務(wù)狀態(tài)的監(jiān)控和異常數(shù)據(jù)的報警等。在查詢上,包括對 Cube 所在集群的路由,以及對查詢的實時監(jiān)控和分析。在元數(shù)據(jù)管理上,我們對 Cube 進(jìn)行了生命周期管理,當(dāng)符合規(guī)則的時候,會啟動 Cube 下線的流程。元數(shù)據(jù)管理還包括對 Cube 在不同集群之間的遷移和集群的版本控制、配置管理等等。

          下圖展示的是平臺里非常有意思的一個功能,叫做 Cube 查詢分析,每個小時都會分析一次Kylin的查詢?nèi)罩荆y(tǒng)計出這些 Cube 被查詢了多少次,有哪些產(chǎn)品使用 Cube 的數(shù)據(jù),上面這個圖就是一個 Cube 被不同產(chǎn)品查詢次數(shù)的占比,可以看到這個 Cube 有 7 個產(chǎn)品在用,下面這個圖是 Cube 的響應(yīng)時間在不同范圍內(nèi)的查詢次數(shù)和占比,可以看到這個 Cube 被查詢了69萬次,3秒內(nèi)占比達(dá)到了99.99%。
          我們會解析 Cube 查詢解析的每一條 SQL,拿到 SQL 用到的維度組合以及對應(yīng)的響應(yīng)時間,下圖包括三個方面內(nèi)容:

          • Cube 被使用最多的維度組合排行

          • Cube 查詢慢的組合排行

          • 最近 30 天都沒有用到過的維度

          通過這些數(shù)據(jù)可以讓 Kylin 的用戶更好的了解數(shù)據(jù)的使用情況,也可以根據(jù)這些信息做一些針對性的優(yōu)化,比如在構(gòu)建和查詢方面。

          Kylin 在貝殼能高效的運用離不開內(nèi)部同學(xué)的貢獻(xiàn)。下圖是這幾年貝殼找房的同學(xué)貢獻(xiàn)到社區(qū)的一些記錄,先后有4位同學(xué)向 Kylin 貢獻(xiàn)代碼,涉及任務(wù)調(diào)度、Web頁面、構(gòu)建和查詢的優(yōu)化等等多個方面,覆蓋了從1.6到3.1的各個版本。
          貝殼找房開發(fā)人員對 Kylin 的貢獻(xiàn)

          Kylin 在貝殼找房指標(biāo)體系建設(shè)過程中的作用


          貝殼找房是在 2016 年下半年開始規(guī)劃指標(biāo)體系的建設(shè),為了明確指標(biāo)的定義,統(tǒng)計數(shù)據(jù)的口徑,提高數(shù)據(jù)的共享性和安全性,同時規(guī)劃了指標(biāo)平臺來承載指標(biāo)體系的建設(shè),并且使用 Kylin 來作為指標(biāo)體系的數(shù)據(jù)引擎,來提供數(shù)據(jù)服務(wù)。

          下圖是以 Kylin 為基礎(chǔ)的指標(biāo)平臺的架構(gòu),通過對數(shù)倉數(shù)據(jù)的建模計算,提供給指標(biāo)平臺使用,指標(biāo)平臺以 API 的方式對外提供服務(wù),API 的基礎(chǔ)是指標(biāo),業(yè)務(wù)方定義的 API 可以包含一個或多個指標(biāo)。

          下面是基于 Kylin 的指標(biāo)計算和使用的流程,首先數(shù)倉的同學(xué)會根據(jù)業(yè)務(wù)過程進(jìn)行建模,從源數(shù)據(jù)有一個 ETL 的過程,最后會在 OLAP 層產(chǎn)生一張事實表,接著會在 Kylin 上關(guān)聯(lián)維表創(chuàng)建模型和 Cube,創(chuàng)建完 Cube 后會自動在調(diào)度系統(tǒng)生成一個依賴事實表和維表的任務(wù),接著會在指標(biāo)平臺定義指標(biāo),配置一下計算方式,支持的維度等信息,創(chuàng)建完指標(biāo)之后就可以在 API 配置使用,調(diào)度系統(tǒng)會根據(jù)任務(wù)依賴來觸發(fā) Cube 的構(gòu)建,數(shù)據(jù)構(gòu)建完之后各種數(shù)據(jù)產(chǎn)品就可以通過 API 來使用這些數(shù)據(jù),這是基于 Kylin 的指標(biāo)創(chuàng)建和使用的流程。


          接下來為大家介紹兩個指標(biāo)的例子,兩種不同的計算方式,一個是SUM類型,一個是COUNT  DISTINCT類型的精確去重。

          在貝殼找房指標(biāo)體系里面,精確去重是非常強(qiáng)的需求,尤其是一些涉及到業(yè)績類的指標(biāo),比如經(jīng)紀(jì)人的帶看量,精確去重也是 Kylin 的優(yōu)勢之一。


          上圖左右兩邊是手機(jī)端的產(chǎn)品,中間是PC端的報表產(chǎn)品,這幾款產(chǎn)品都是通過固定的維度組合來獲取相應(yīng)的指標(biāo)數(shù)據(jù),只需要篩選不同的過濾條件就可以快速獲取報表。

          另外一種場景就是可以隨意進(jìn)行維度組合的自助分析場景,做一些探索性的嘗試,下圖是我們公司自研的Odin可視化平臺,圖左側(cè)兩個紅框分別是維度和指標(biāo),用戶可以隨意選擇他想要的維度和需要的指標(biāo),配置篩選條件,右側(cè)的圖是根據(jù)用戶的選擇,實時查詢Kylin生成的圖表,當(dāng)他確定要使用這些維度和指標(biāo)之后,就可以把當(dāng)前的配置保存成固定的報表
          不管是固定報表還是自助分析,底層的查詢流程是一樣的,下圖左側(cè)框是業(yè)務(wù)方發(fā)起指標(biāo)調(diào)用的形式,里面的字段是他需要的維度,同時要指定時間范圍和過濾條件,發(fā)起一次API的調(diào)用,中間的框是指標(biāo)平臺,接受API的請求,將API的參數(shù)轉(zhuǎn)化為標(biāo)準(zhǔn)SQL,然后提交給Kylin集群執(zhí)行查詢,查詢完了之后會將查詢結(jié)果返回給指標(biāo)平臺,指標(biāo)平臺將數(shù)據(jù)封裝成固定的格式返回給業(yè)務(wù)方。這就是貝殼找房各種數(shù)據(jù)產(chǎn)品使用Kylin的底層查詢流程。

          下圖展示了目前 Kylin 在貝殼找房的一個使用情況,因為對接了公司的指標(biāo)體系,所以 Kylin 的使用覆蓋了所有的業(yè)務(wù)線,為超過 30 多個數(shù)據(jù)產(chǎn)品提供查詢服務(wù),支撐了10000+ 指標(biāo)的計算需求,每天的查詢量最高超過 2300萬,我們承諾的查詢響應(yīng)時間是 3 秒內(nèi)占比是99.7%,目前來說 Kylin 都能很好的完成這些目標(biāo)。

          對 Kylin 未來發(fā)展的展望


          對 Kylin 的展望主要是針對 Kylin 4.0,貝殼在 9 月份的時候也做了一次簡單的測試,總體來說非常期待 4.0 GA 版本的發(fā)布。希望在建模的流程上能夠更簡化更靈活,比如支持 Schema 的動態(tài)更新。在當(dāng)前的情況下,只要涉及到 Cube 的改動就比較繁瑣,希望 Kylin 4.0 能改變這種情況。

          關(guān)于 Local  segment  cache,4.0 里面生成的文件是存儲在集群上,每次查詢都需要實時去讀取集群上的文件,同時對集群的資源和性能依賴比較大,可以考慮一下引入為 HDFS 提速的組件,比如 Alluxio,可以將 Segment 的文件緩存到本地來提升查詢性能。

          關(guān)于多租戶,希望在查詢層面做到對多租戶的支持,來避免不同業(yè)務(wù)之間互相的影響,因為貝殼現(xiàn)在的業(yè)務(wù)方還是比較多,互相影響的情況也會發(fā)生。

          關(guān)于 Kubernetes,現(xiàn)在的機(jī)器數(shù)和實例數(shù)也比較多,運維的成本比較高,后續(xù)會嘗試把 Kylin 部署到 Kubernetes 來降低維護(hù)成本。

          作者介紹


          張如松,貝殼找房數(shù)據(jù)平臺高級工程師,負(fù)責(zé) OLAP 引擎的開發(fā)和維護(hù)以及運維指標(biāo)體系的建設(shè)。

          瀏覽 47
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  波多野吉衣一区二区三区 | sv在线观看 | 波多野吉衣无码AV | 久久99精品久久只有精品 | 亚洲天堂网在线观看视频 |