close

html模版Apache Kylin在唯品會大數據的應用
很多技術在迎來春天之前,都會經過幾個冬天。百度首席科學傢Andrew Ng相信,AI正在改變幾個重要行業,而且路線圖也越來越清晰,因此,AI長久的春天已經到來,即使沒有一百年那麼長,也會逐漸取代某些崗位。越來越多的人將失去以前的工作,語音識別、金融工程、醫療影像、教育等等領域的轉變正在發生,你準備好瞭嗎? 人工智能永恒的春天已經到來,你準備好瞭嗎?




很多技術在迎來春天之前,都會經過幾個冬天。百度首席科學傢Andrew Ng相信,AI正在改變幾個重要行業,而且路線圖也越來越清晰,因此,AI長久的春天已經到來,即使沒有一百年那麼長,也會逐漸取代某些崗位。越來越多的人將失去以前的工作,語音識別、金融工程、醫療影像、教育等等領域的轉變正在發生,你準備好瞭嗎? 人工智能永恒的春天已經到來,你準備好瞭嗎?




本系列將探討各種關於機器學習的主題和技術,機器學習可以說是最近幾年最有討論價值的技術和計算機科學領域。我們會從本文開始,結合一個Python擴展的“案例研究”:我們可以如何構建用於檢測信用卡詐騙的機器學習模型?




在2016年的敏捷大會上,InfoQ與Dominica DeGrandis和Julia Wester對話,主題是關於她們在本次大會的演講內容Leankit。




引子:隨著傳統基於RDBMS的EDW往大數據的演進的過程中,Batch可處理的數據量越來越大,時間越來越快,但是Ad-hoc的響應速度卻始終是大數據的瓶頸。

在2015年 唯品會的數據分析碰到瞭以下兩個瓶頸:第一是數據準備的流程長,第二是缺少合適數據提取和分析工具。

首先,從數據準備流程來看,常見的流程是業務人員提出需求,BI同事定角度、找數據, 如果數據不完善,還得繼續找數據開發。這就導致同一個需求,需要和不同的人反復溝通,在溝通過程中參與的人越多,信息衰減也就越厲害。再加上排期的等待,最終的結果一方面可能與初衷有所偏差,另一方面時間一長也失去瞭對熱點關註度,分析變得非常滯後,不能及時的反應線上業務並加以改進。


其次,對於有分析能力的業務側同學,沒有趁手的工具就導致即使有能力準備撩袖子大幹一場瞭也發現巧婦難為無米之炊,大傢隻能感慨大數據的門檻太高瞭,又回到瞭第一點的長時間等待的惡性循環裡去瞭。

我們總結下來,在唯品會這樣規模的公司裡,數據分析有兩個痛點:


需要一個可以自由組合的維度和指標的平臺,業務人員可以根據自己的視角自給自足的完成數據提取和分析;

這個平臺,不僅數據要夠豐富,即使大數據量響應速度也要快。


針對這兩個痛點,本著 讓大數據成為唯品會的增長引擎 這個目標,我們大數據部門的提供瞭一套完整的解決方案:自助多維分析平臺。我們通過有較高可擴展性的維度建模準備數據,在此之上搭建一套數據查詢引擎,並配上操作簡單的數據可視化前端,為業務人員搭瞭數據分析的臺子。隨著大傢數據分析技能的提升,人人都是數據分析師的這個理念就逐汽車喇叭推薦漸在公司內部擴展開來瞭。

lexus音響改裝


唯品會如何使用Kylin

數據和前端是皮和肉,需要通過好的數據引擎才能支撐起來。在數據引擎角度,我們通過一段時間的積累和演進,從基於Presto的ROLAP模型進化到瞭基於Kylin和Presto的雙計算引擎。往超大數據集也要快速ad-hoc響應的方向走近瞭一步。

第一階段,我們的目標是在Ad-hoc響應時間 = 10秒的前提條件下,支持:


根據這個目標,我們選擇使用Presto作為計算引擎,Presto MPP的架構 + 通過Hive Connector直接訪問HDFS上的數據,為我們提供良好的Ad-hoc響應速度和相對較低的維護成本。為瞭滿足高Ad-hoc響應速度的需求,常見的做法是把HDFS上處理完的數據同步到Ad-hoc響應友好的數據庫中,比如GreenPlum或Hbase等,但這樣的缺點是雖然速度上去瞭,但數據模型在Hive和Ad-hoc庫中需要維護兩份並保持一致,維護的成本非常高。Presto的Connector機制很好的解決瞭這個問題,同時他的計算能力也滿足瞭我們第一階段的需求。

然後我們通過SQL Parser,將前端拖拽或事件描述的對象轉化為SQL,同時完成SQL的變形和性能優化,把計算引擎和用戶操作連接在一起,完成瞭第一階段的目標。

自助多維分析平臺一階段邏輯架構

隨著業務的不斷增長,在自助多維分析平臺上逐漸出現瞭很多維度和指標組合類似、頻率較高的查詢,這些查詢有著明顯的模式,且通過分析我們瞭解到這些維度和指標的組合是業務部門常用的核心數據。這些查詢反復的在Presto上執行,顯然不是最佳選擇,也達不到業務部門提出的新目標,核心數據查詢響應時間 =3秒。此時,Kylin就成瞭我們的首選。我們的數據引擎的架構,也從單純的操縱SQL擴展到計算引擎的路由。通過讀取Metadata並根據規則,在Kylin和Presto兩個計算引擎之間路由,我們可以在不顯著提高數據模型維護成本的前提條件下,通過Kylin對關鍵數據做預計算,提高核心數據的響應速度。

為什麼選擇Kylin

首先,Kylin利用空間換時間,從原理上已經確保瞭Ad-hoc響應速度達標,和Oracle CUBE/物化視圖的原理相同易於理解。

第二,Kylin支持SQL,這對於數據分析而言至關重要,同時滿足我們一個SQL在不同計算引擎之間路由的需求。

另外,Kylin的SQL on Hbase的實現也很好的解決瞭Hbase不易查詢的問題。第三是支持Dimension-Fact的join,這極大的解耦瞭數據模型和計算引擎之間的關系,不像ES或Pinot隻支持單表,還有為他們專門處理數據的額外工作。第四是對數據開發來說,創建和管理CUBE比較簡單,且透明化瞭MR和HBASE同步。第五是可以很方便的在調度系統中調用Kylin API定時刷新CUBE。綜上所述,Kylin對於一個數據分析系統來說是一個好的解決方案。

經過一段時間的測試和線上運行,我們在之前把Kylin覆蓋到核心指標的查詢基礎上還擴展到瞭在Presto上查詢需要30秒以上的指標和維度組合上。因為這類查詢往往需要掃描大量的基礎數據,在Kylin上預計算可以有效的較低資源使用。另一方面,基於自助多維分析平臺的業務場景,我們也在以下兩個場景中不啟用Kylin。第一是維度的基數大於1億的場景,主要是由於大基數的維度加載的Kylin Server的內存中容易引起OOM。第二是數據模型經常變化的主題,在Kylin中維護CUBE的成本就很高瞭,每次變化都需要重建CUBE,重刷數據,這顯然與我們提高復用降低重復開發的初衷不符。對於這兩個場景,由Presto完成計算也可以很好的滿足需求。

基於以上的原則,目前我們累計有20+個CUBE,10+T存儲,最大CUBE記錄數上千億,覆蓋瞭23%的查詢。同時,Ad-hoc的響應速度也令人滿意。Kylin的平均響應速度是Presto的10.5倍,中位數響應速度是Presto的4.5倍。

唯品會對Kylin做的改進

針對唯品會的痛點,我們也在開源框架的基礎上進行瞭修改。基礎升級方面,我們針對自助多維分析平臺的需求進行瞭升級。比如,在查找CUBE的時候,僅當CUBE內數據包含SQL查詢的時間范圍才命中CUBE,避免給用戶不完整的數據集。同時我們采集瞭Kylin運行中metadata,並給予這些數據提供SQL分析API以解析Kylin能運行的SQL子查詢。另外一些BUG修復也提交到瞭社區。

除此之外,我們基於Presto+Kylin雙引擎的架構,開發瞭Presto on Kylin這個功能。通過在Presto側增加Kylin Connector,我們支持瞭Kylin與Hive數據源的跨源Join,支持Raw data匯總後的數據和Kylin Cube 數據Join。為瞭支持以上兩個功能,我們在Kylin增加瞭Explain功能簡化瞭Cube命中探查的復雜度。同時,為瞭進一步降低數據開發尋找查詢組合的復雜度,我們開發瞭Cube Advisor,通過統汽車音響喇叭品牌計分析Presto SQL獲得所有維度和指標的組合頻次,根據最常使用和響應時間長兩個條件,推薦合適的Cube定義建議,數據開發可以直接根據推薦的建議創建Cube。

下一步,我們會改造Kylin維表的Cache機制,解決大基數維表不能創建CUBE的問題,同時進一步擴展CUBE Advisor支持一鍵生成CUBE的功能並能夠支持自動刷新歷史數據,降低人工維護成本。同時,將Kylin的應用推廣到報表類數據產品。

在提高大數據分析Ad-hoc響應速度的路上,可謂八仙過海各顯神通,我們通過Presto和Kylin的結合滿足瞭當前的需求,後面我們也會繼續探索更多解決方案,尋找下一代的多維分析引擎,在此過程中,歡迎大傢與我們一起討論。

謝麟炯,唯品會大數據平臺高級技術架構經理,主要負責大數據自助多維分析平臺,離線數據開發平臺及分析引擎團隊的開發和管理工作 ,加入唯品會以來還曾負責流量基礎數據的 采集和數據倉庫建設以及移動流量分析等數據產品的工作。


您需要 註冊一個InfoQ賬號 或者

登錄 才能進行評論。在您完成註冊後還需要進行一些設置。

獲得來自InfoQ的更多體驗。


通過個性化定制的新聞郵件、RSS Feeds和InfoQ業界郵件通知,保持您對感興趣的社區內容的時刻關註。


InfoQ每周精要

通過個性化定制的新聞郵件、RSS Feeds和InfoQ業界郵件通知,保持您對感興趣的社區內容的時刻關註。






我們發現您在使用ad blocker。

我們理解您使用ad blocker的初衷,但為瞭保證InfoQ能夠繼續以免費方式為您服務,我們需要您的支持。InfoQ絕不會在未經您許可的情況下將您的數據提供給第三方。我們僅將其用於向讀者發送相關廣告內容。請您將InfoQ添加至白名單,感謝您的理解與支持。

A786D2DF914F98DE
arrow
arrow

    txu56n9xk8 發表在 痞客邦 留言(0) 人氣()