電商卷皮BI的實(shí)踐演進(jìn)和架構(gòu)體系—貓友會大講壇第4期
https://mp.weixin.qq.com/s/wbnxBp8Kbypk1qRMMVfsBw
BI主要有三方面的技術(shù)庐扫,包括DW苟翻,OLAP,DM具垫。目標(biāo)就是提高企業(yè)經(jīng)營和決策的質(zhì)量和效率酱固。
卷皮BI團(tuán)隊負(fù)責(zé)人柴楹,今天在這里給大家分享一下卷皮的BI和大數(shù)據(jù)的一些東西。
BI&大數(shù)據(jù)是什么升熊?
首先我們來聊一下BI和大數(shù)據(jù)。BI和大數(shù)據(jù)到底有什么關(guān)系和不同绸栅。
BI主要有三方面的技術(shù)级野,包括DW,OLAP阴幌,DM勺阐。目標(biāo)就是提高企業(yè)經(jīng)營和決策的質(zhì)量和效率。
數(shù)據(jù)倉庫(Data Warehouse)是一個面向主題的(Subject Oriented)矛双、集成的(Integrate)渊抽、相對穩(wěn)定的(Non-Volatile)、反映歷史變化(Time Variant)的數(shù)據(jù)集合议忽,用于支持管理和決策懒闷。OLAP: On-Line Analytical Processing 使分析人員、管理人員能夠從多種角度對從原始數(shù)據(jù)中轉(zhuǎn)化出來的栈幸、能夠真正為用戶所理解的愤估、并真實(shí)反映數(shù)據(jù)維特性的信息,進(jìn)行快速速址、一致玩焰、交互地訪問,從而獲得對數(shù)據(jù)的更深入了解的一類軟件技術(shù)芍锚。 (OLAP委員會的定義)昔园。Data Mining是通過數(shù)學(xué)模型發(fā)現(xiàn)隱藏的、潛在的規(guī)律并炮,以輔助決策默刚。
傳統(tǒng)BI和數(shù)據(jù)倉庫大約是98-99年從國外進(jìn)入中國,經(jīng)過十幾年的發(fā)展逃魄,更多的是做企業(yè)級的數(shù)據(jù)中心荤西,主要應(yīng)用在電信業(yè)和銀行業(yè),需求更多的是做報表和進(jìn)行一些分析等等伍俘。傳統(tǒng)的BI主要想實(shí)現(xiàn)從宏觀到微觀邪锌、從廣度到深度、從定量到定性各種層次的決策分析癌瘾。
大數(shù)據(jù)是什么秃流?通俗的講,就是體量特別大的數(shù)據(jù)集柳弄,這個數(shù)據(jù)集大到無法用傳統(tǒng)的數(shù)據(jù)庫工具或者分析工具進(jìn)行處理舶胀。大數(shù)據(jù)主要有三個特點(diǎn):
第一概说,數(shù)據(jù)體量巨大。從TB級別嚣伐,躍升到PB級別糖赔。
第二,數(shù)據(jù)類型繁多轩端,例如網(wǎng)絡(luò)日志放典、視頻、圖片基茵、地理位置信息等等各種結(jié)構(gòu)化非結(jié)構(gòu)化的數(shù)據(jù)奋构。
第三,處理速度快拱层。1秒定律弥臼。最后這一點(diǎn)也是和傳統(tǒng)的數(shù)據(jù)挖掘技術(shù)有著本質(zhì)的不同。
一般的大數(shù)據(jù)平臺都有幾個過程:數(shù)據(jù)采集根灯、數(shù)據(jù)存儲径缅、數(shù)據(jù)處理和數(shù)據(jù)展現(xiàn),當(dāng)然處理的數(shù)據(jù)也提供做分析和挖掘烙肺。
大數(shù)據(jù)在08年的時候還沒有很多人提及纳猪,但是隨著互聯(lián)網(wǎng)的快速發(fā)展,技術(shù)的變革桃笙,大數(shù)據(jù)越來越流行氏堤,現(xiàn)在也是逢技術(shù)論壇,必談大數(shù)據(jù)搏明。
大數(shù)據(jù)同傳統(tǒng)BI比較鼠锈,多了一個專門的數(shù)據(jù)采集階段,主要是因?yàn)閿?shù)據(jù)種類多熏瞄,數(shù)量大脚祟,從結(jié)構(gòu)化的數(shù)據(jù)到非結(jié)構(gòu)化的數(shù)據(jù)谬以。但是其存儲强饮、處理及可視化的思想等都和傳統(tǒng)BI如出一轍。
總結(jié)一下为黎,大數(shù)據(jù)是從BI中發(fā)展來的邮丰,但現(xiàn)在BI也借助著互聯(lián)網(wǎng)和大數(shù)據(jù)的快速發(fā)展,有了第二春铭乾,因?yàn)闊o論數(shù)據(jù)方面剪廉,還是技術(shù)方面,大數(shù)據(jù)都給BI提供了翔實(shí)的基礎(chǔ)。
以上是拋磚引玉的給大家介紹一下BI和大數(shù)據(jù),具體的我就不展開了锌仅,有興趣的同學(xué)可以自己去多了解一下役首。下面我來介紹一下我們卷皮的BI體系备禀。
** 卷皮的BI**
首先介紹一下我們卷皮BI的數(shù)據(jù)體系上岗,分為四層:
第一層是基礎(chǔ)平臺層剪侮,包括BI所有的數(shù)據(jù)的接入需了,加工等等跷究;
第二層是數(shù)據(jù)服務(wù)層姓迅,主要給業(yè)務(wù)部門提供報表和OLAP分析系統(tǒng)、給分析師提供自助取數(shù)平臺等等俊马;
第三層是智慧運(yùn)營層丁存,主要是把數(shù)據(jù)以數(shù)據(jù)產(chǎn)品的方式滲透到業(yè)務(wù)部門的日常工作中,例如精細(xì)化的運(yùn)營柴我,針對不同的區(qū)域或者人群進(jìn)行不同的運(yùn)營策略解寝;
第四層是決策支持。當(dāng)然決策支持可以說是在數(shù)據(jù)服務(wù)層和智慧運(yùn)營層都在做屯换,因?yàn)橐彩且詳?shù)據(jù)支撐每一個具體的業(yè)務(wù)決策编丘。但是這里講的第四層的決策更多是以重大決策為主。舉個例子:公司選擇區(qū)域擴(kuò)張策略彤悔,或者倉庫選址嘉抓,還有新業(yè)務(wù)模式探索等等方向性的決策。
目前我們BI團(tuán)隊處于第三層階段晕窑,正在推進(jìn)各項智慧運(yùn)營數(shù)據(jù)產(chǎn)品的建設(shè)抑片。
接下來介紹一下我們卷皮BI的架構(gòu)體系。我們主要有五大基礎(chǔ)平臺:
一杨赤、數(shù)據(jù)采集同步平臺:負(fù)責(zé)接入所有的數(shù)據(jù)源敞斋,用戶行為的數(shù)據(jù)是通過埋點(diǎn)直接生產(chǎn)到kafka,數(shù)據(jù)庫之間的抽取用的阿里開源的datax疾牲,實(shí)時庫的同步用也是阿里開源的otter植捎,然后競品數(shù)據(jù)是用爬蟲平臺采集來的。
二阳柔、實(shí)時計算平臺:我們直接上的Spark Streaming焰枢,它直接去消費(fèi)kafka中的數(shù)據(jù)。雖然Spark Streaming不是真正的流計算舌剂,而是高頻率的批處理济锄,沒有storm的實(shí)時性好,但是目前秒級的延遲我們還是接受的霍转,因?yàn)镾cala語言開發(fā)起來更加簡潔荐绝,而且Spark后續(xù)可以支撐更多,例如我們的挖掘就直接用的SparkR避消。其中還涉及一些內(nèi)存計算我們用的是memcached和redis低滩,實(shí)時數(shù)據(jù)計算的數(shù)據(jù)一般直接存儲到hbase或者es里面召夹,便于更快的檢索。
三恕沫、離線計算平臺:主要用的hadoop平臺戳鹅,Mysql里面有極少量的存儲過程,當(dāng)前DW全部都在HDFS上昏兆,Mysql更多存儲的是為報表展示的數(shù)據(jù)集市類的表枫虏。
四、數(shù)據(jù)服務(wù)平臺:主要是對外的平臺爬虱,報表系統(tǒng)隶债,即席查詢,OLAP分析系統(tǒng)跑筝,數(shù)據(jù)分析和挖掘等死讹,然后BI也會給公司其他業(yè)務(wù)研發(fā)團(tuán)隊提供各種數(shù)據(jù)支撐,統(tǒng)一都是走BI自己搭建的數(shù)據(jù)服務(wù)層曲梗。
五赞警、運(yùn)維監(jiān)控平臺:調(diào)度系統(tǒng)用的阿里開源的Zeus,然后針對我們自己的需求進(jìn)行很多二次開發(fā)虏两;日志收集分析用的ELK愧旦;監(jiān)控平臺負(fù)責(zé)BI這邊所有的硬件軟件還有數(shù)據(jù)質(zhì)量等等監(jiān)控;當(dāng)然這里還要做BI的元數(shù)據(jù)管理定罢。
這五大技術(shù)平臺是BI的物質(zhì)基礎(chǔ)笤虫,基于這些物質(zhì)基礎(chǔ),才能繼續(xù)產(chǎn)出我們的上層建筑:數(shù)據(jù)產(chǎn)品祖凫。
我們BI的產(chǎn)品體系主要有兩條線琼蚯,也就是兩只腳走路。
先說一下數(shù)據(jù)服務(wù)線的數(shù)據(jù)產(chǎn)品惠况,這部分產(chǎn)品主要是支撐公司內(nèi)所有的數(shù)據(jù)需求遭庶,滿足不同層次的人看數(shù)據(jù)的需要。因?yàn)檫@個也是BI的基礎(chǔ)稠屠,基本的數(shù)據(jù)服務(wù)你滿足峦睡,后面業(yè)務(wù)部門才能配合一起做其他智慧運(yùn)營的數(shù)據(jù)產(chǎn)品。智慧運(yùn)營線主要想將數(shù)據(jù)滲透到公司業(yè)務(wù)部門人員工作的每一個環(huán)節(jié)中完箩,輔助業(yè)務(wù)部門人員能夠更加好的做好運(yùn)營工作赐俗。具體的應(yīng)用有精準(zhǔn)化營銷系統(tǒng)拉队、個性化的推薦系統(tǒng)弊知、鷹眼的反欺詐系統(tǒng)和智能選品系統(tǒng)等。
以上就是我們卷皮BI的數(shù)據(jù)粱快、架構(gòu)和產(chǎn)品的體系秩彤。
卷皮的三個數(shù)據(jù)產(chǎn)品
第一是用戶畫像叔扼。卷皮是電商平臺,我們必須要充分的了解我們的用戶漫雷,所以卷皮BI也基于自有的用戶消費(fèi)數(shù)據(jù)瓜富、行為數(shù)據(jù),進(jìn)行相應(yīng)的算法模型去挖掘用戶的特征降盹,給用戶打上各種標(biāo)簽与柑。當(dāng)然也接入一些外部的數(shù)據(jù)來驗(yàn)證我們的標(biāo)簽。目前的用戶標(biāo)簽,主要分為四個方面:自然屬性蓄坏,興趣偏好价捧,消費(fèi)特征,生命周期涡戳。
然后基于用戶畫像结蟋,我們團(tuán)隊的精準(zhǔn)化小組,就在做以下三個方面的事情:
- 精準(zhǔn)的營銷:通過精準(zhǔn)的push提升用戶到達(dá)率渔彰;針對不同群體用戶做專題活動嵌屎;對于瀕危用戶進(jìn)行挽留等等。
- 個性化的推薦:業(yè)內(nèi)所說的千人千面恍涂,每個人專屬的商品的排序宝惰;其他的推薦場景,例如猜你喜歡和熱門推薦再沧。但是對于第一次來的用戶掌测,沒有任何行為信息,更多以熱門推薦為主产园。目前我們也在做基于用戶實(shí)時的瀏覽行為汞斧,進(jìn)行實(shí)時的商品推薦。
3.精準(zhǔn)的服務(wù):對于不同會員的等級進(jìn)行差異化的服務(wù)什燕,例如信用好的用戶如果選擇退貨粘勒,那么我們可以先退錢后收貨,但是對于信用等級不夠高的用戶屎即,那么我們會收到貨以后再退錢等庙睡;優(yōu)化客服的服務(wù),對于接入的客戶技俐,更加了解客戶的信息乘陪,便于提高服務(wù)質(zhì)量。
第二個雕擂,就是我們的鷹眼系統(tǒng)啡邑,也就是反欺詐系統(tǒng)。目前定位是主要是實(shí)時的甄別異常訂單井赌。鷹眼系統(tǒng)主要做兩方面的事情谤逼,識別壞人和識別壞事贵扰。目前我們的鷹眼系統(tǒng)一共有4個子系統(tǒng):鷹眼馬甲系統(tǒng)、鷹眼售后系統(tǒng)流部、鷹眼訂單甄別戚绕、鷹眼誠信系統(tǒng)。
鷹眼系統(tǒng)的核心模塊是BRMS(業(yè)務(wù)規(guī)則管理系統(tǒng))枝冀,基于規(guī)則引擎(Drools)舞丛。工作人員可通過Web UI制定規(guī)則,形成規(guī)則庫果漾,每個規(guī)則都有個閾值瓷马。實(shí)時的數(shù)據(jù)結(jié)合數(shù)據(jù)集市的歷史數(shù)據(jù),在規(guī)則引擎里面進(jìn)行判斷跨晴,如果超出的規(guī)則的閾值欧聘,則進(jìn)行相應(yīng)的操作,如告警端盆,轉(zhuǎn)人工審核等怀骤。
鷹眼的WebUI是我們自己開發(fā)的界面,便于我們的業(yè)務(wù)運(yùn)營人員焕妙,基于一些現(xiàn)有的指標(biāo)來配置規(guī)則蒋伦,調(diào)整閾值。JP-drools是在drools 我們在外面封裝了一層焚鹊,主要是為了做到分布式部署痕届、歷史庫共享和規(guī)則的熱部署。
最后這個產(chǎn)品是OLAP分析系統(tǒng)末患,圖片是一個截圖研叫,左邊這邊有維度和度量,通過拖拽到中間的行或者列進(jìn)行生成相應(yīng)的表格璧针,右邊可以把表格的數(shù)據(jù)變成各種圖形嚷炉。業(yè)內(nèi)這種類型的分析工具其實(shí)比較多,例如Microstrategy探橱,Tableau等申屹。但這些都是商業(yè)的,我們更多還是基于開源來做隧膏。
我們主要用了如下幾個開源的項目:
Saiku提供了一個多維分析的用戶操作界面哗讥,可以通過簡單拖拉拽的方式迅速生成報表,它的主要工作是根據(jù)事先配置好的schema胞枕,將用戶的操作轉(zhuǎn)化成MDX語句提供給Mondrian引擎執(zhí)行杆煞。
Mondrian是一個OLAP分析的引擎,主要工作是根據(jù)事先配置好的schema,將輸入的多維分析語句 MDX (Multidimensional Expressions )翻譯成目標(biāo)數(shù)據(jù)庫/數(shù)據(jù)引擎的執(zhí)行語言(比如SQL)索绪。
Presto是一個分布式SQL查詢引擎, 它被設(shè)計為用來專門進(jìn)行高速贫悄、實(shí)時的數(shù)據(jù)分析瑞驱。它支持標(biāo)準(zhǔn)的ANSI SQL,包括復(fù)雜查詢窄坦、聚合(aggregation)唤反、連接(join)和窗口函數(shù)(window functions)。
當(dāng)前這個架構(gòu)是我們第三個版本的架構(gòu)鸭津。
第一個版本我們是直接用的Mondrian+Mysql彤侍,但是我們發(fā)現(xiàn)Mondrian的界面太丑了,所以在第二版加入了Saiku逆趋。但是隨著業(yè)務(wù)數(shù)據(jù)量的增加盏阶,Mysql的查詢性能很快就到瓶頸了,所以在第三個版本用Presto替代了Mysql闻书。
在這套架構(gòu)里面Saiku提供了界面的支持名斟,Mondrain提供了schema到MDX的轉(zhuǎn)換,并構(gòu)建SQL語句魄眉,向Prestodb查詢數(shù)據(jù)砰盐,Prestodb執(zhí)行查詢?nèi)蝿?wù),返回其結(jié)果坑律,Saiku顯示結(jié)果岩梳,輸出報表。整個OLAP系統(tǒng)我們需要關(guān)注Saiku的二次開發(fā)晃择,Mondrain schema.xml生成及其讀取數(shù)據(jù)和維表方面的優(yōu)化冀值。
但是當(dāng)前這個架構(gòu)目前也逐漸遇到瓶頸,對于像具體到每一個用戶成單路徑的數(shù)據(jù)的分析時候查詢還是需要比較久的時間宫屠,所以我們現(xiàn)在依然在調(diào)整池摧,希望把kylin加入進(jìn)來。
kylin是apache軟件基金會的頂級項目激况,一個開源的分布式多維分析工具作彤。Kylin通過預(yù)計算所有合理的維度組合下各個指標(biāo)的值并把計算結(jié)果存儲到HBASE中的方式,大大提高分布式多維分析的查詢效率乌逐。Kylin接收sql查詢語句作為輸入竭讳,以查詢結(jié)果作為輸出。對于可以離線分析的業(yè)務(wù)數(shù)據(jù)浙踢,可以用kylin的框架绢慢,而對于實(shí)時分析的業(yè)務(wù)數(shù)據(jù)還是可以用來Presto支持。
以上就是我們卷皮BI的一些經(jīng)驗(yàn)的分享。最后送給大家一句話:數(shù)據(jù)本身不是最終價值胰舆,帶有分析的數(shù)據(jù)骚露,滲透到業(yè)務(wù)中,影響到?jīng)Q策才產(chǎn)生價值缚窿。
Q&A
Q1:查詢HBase中的數(shù)據(jù)有沒有用什么SQL引擎呢棘幸?有的話用的是什么SQL查詢引擎?
A1:我們沒有用什么SQL引擎倦零,我們主要是靠row-key的設(shè)計误续。
Q2:hadoop平臺的部署是通過? ambari這些嗎扫茅?
A2:我們使用cloudera的版本的蹋嵌。
Q3:老師好,能否大概講解一下怎么根據(jù)用戶畫像做推薦葫隙,這里面用到什么技術(shù)點(diǎn)栽烂。
A3:主要還是數(shù)據(jù)挖掘的算法,有聚類恋脚,協(xié)同過濾愕鼓,商品相似度之類的算法,不過針對不同的業(yè)務(wù)場景使用的算法不一樣慧起。技術(shù)上菇晃,我們是用的sparkR。
Q4:我們現(xiàn)在olap目前正在使用apache kylin,saiku和kykin結(jié)合怎么樣蚓挤,有過調(diào)研沒磺送?
A4:Saiku直接+kylin我們還沒有用過,不過應(yīng)該是OK的灿意,因?yàn)閟aiku主要是界面展現(xiàn)估灿。
Q5:BI挖掘的用戶畫像和鷹眼系統(tǒng),有什么離線指標(biāo)來評價相關(guān)的數(shù)據(jù)質(zhì)量缤剧?
A5:類似用戶畫像的性別馅袁,主要看兩個方面,覆蓋率和準(zhǔn)確率荒辕,覆蓋率提升了汗销,也許準(zhǔn)確率就會下降,后續(xù)我們可以持續(xù)跟蹤用戶的行為抵窒,或者進(jìn)行一些實(shí)際的回訪弛针,來驗(yàn)證并優(yōu)化我們的數(shù)據(jù)模型。鷹眼更多的是基于規(guī)則引擎做的李皇。
Q6:數(shù)據(jù)meta管理是怎么做的削茁?
A6:業(yè)務(wù)上我們對所有的數(shù)據(jù)指標(biāo)口徑進(jìn)行統(tǒng)一,所有展示數(shù)據(jù)的地方都是一致的,然后對于變更等等流程都有一定的管理茧跋。