GIAC | 大数据分析系统在游戏领域的迭代与实践
?
導(dǎo)語:6月23日,騰訊游戲數(shù)據(jù)分析系統(tǒng)負(fù)責(zé)人周東祥在?"GIAC全球互聯(lián)網(wǎng)架構(gòu)大會"?的分享了主題為《大數(shù)據(jù)分析系統(tǒng)在游戲領(lǐng)域的迭代與實踐》的內(nèi)容,具體的分享視頻和PPT可以在大會官網(wǎng)下載和觀看。這里主要以陳述的角度把個人的分享的主要觀點和概要內(nèi)容分享給大家,歡迎大家來交流,指正。
給大家說下,我今天分享主要內(nèi)容,分為三個主要內(nèi)容:
1. 分析系統(tǒng)在游戲分析的背景和要解決的問題
2.?大數(shù)據(jù)分析引擎 在游戲領(lǐng)域的迭代與實踐
3. 分享的總結(jié)和未來規(guī)劃
以數(shù)據(jù)分析角度來講,這個是當(dāng)時大數(shù)據(jù)技術(shù)最原始的技術(shù)驅(qū)動力。
在業(yè)界來講,不同的行業(yè)不同技術(shù)環(huán)境,數(shù)據(jù)分析的碰到的問題、所要解決的問題,都有些“共性”和“差異”的方面。
以作為業(yè)界最大的游戲運營方的騰訊游戲的數(shù)據(jù)分析 來講,我們也會碰到“共性”和“差異”問題。
“共性”問題:
數(shù)據(jù)量大、增量快。騰訊游戲日新增的玩家行為、游戲運行、安全等日志記錄數(shù)據(jù)來講:日新增 300TB ?2W億條;
“差異”問題:
在互聯(lián)網(wǎng)行業(yè)的運營的APP或者產(chǎn)品來講,數(shù)據(jù)維度相對比較固定。因為,產(chǎn)品上的用戶行為相對變化小。
但是,區(qū)別單一運營的APP,騰訊游戲來講,一個游戲就是一個APP,一個復(fù)雜的、大信息量的APP。
海量玩家同時在線,產(chǎn)生了跟游戲內(nèi)容相關(guān)的獨有的、海量的維度。比如:射擊游戲、對戰(zhàn)游戲、棋牌游戲等,都是由獨立、特有的數(shù)據(jù)維度和數(shù)據(jù)空間。一個游戲一個世界,數(shù)據(jù)模型復(fù)雜度高。
我們通常曾經(jīng)一個大型MMOG PC游戲有1300張表;一個王者榮耀的5V5對戰(zhàn)表具有430個字段,上百的獨立維度和度量,
如果維度組合膨脹將更加可怕,給到 大數(shù)據(jù)分析場景中 帶來的多維分析 也是非常有挑戰(zhàn)的。
那么,如何利用大數(shù)據(jù)分析技術(shù) 幫助解決游戲業(yè)務(wù)“共性”和“差異”性問題,使得游戲產(chǎn)品快速、有效的 實現(xiàn)游戲精細(xì)化運營。
具體來講,我們通過構(gòu)建 騰訊游戲數(shù)據(jù)分析服務(wù)產(chǎn)品iData 來踐行游戲場景的大數(shù)據(jù)分析系統(tǒng)。
大數(shù)據(jù)分析系統(tǒng),在業(yè)界經(jīng)典的構(gòu)建的來講,現(xiàn)在已經(jīng)認(rèn)知從 BI 到 ABI,進(jìn)一步提升到 ABI + Science Platform.
那么,iData游戲數(shù)據(jù)分析產(chǎn)品和平臺,我們也提出自己平臺的大數(shù)據(jù)分析能力模型。
核心的理念就是從分析的思路、效率以及專業(yè)的層層遞進(jìn)的方式來構(gòu)建。
具體來講分析思路提供能力是:
數(shù)據(jù)可視化:信息整合、描述性分析?
數(shù)據(jù)分析引擎:診斷性、交互性分析
數(shù)據(jù)科學(xué)實驗室:預(yù)測性、探索性分析
具體的分析思路,我這就不詳細(xì)講了。這次,我主要給大家分享iData的
數(shù)據(jù)分析引擎:診斷性、交互性分析
主要以技術(shù)的角度,給大家分享iData的核心自研構(gòu)建的分析引擎能力,總結(jié)一些自我實踐的經(jīng)驗,給到大家一些分享。希望對大家有些幫助。
我開始這次分享主要核心內(nèi)容, 大數(shù)據(jù)分析引擎的迭代與實踐介紹。
以 iData大數(shù)據(jù)分析能力組成來講,我們構(gòu)建了4個核心的分析場景。
離線多維分析
畫像分析
跟蹤分析
實時多維分析
離線多維分析:用戶分群、多維提取、交叉分析、自定義指標(biāo)能力等。當(dāng)然,傳統(tǒng)意義來講的OLAP來講,更多的是指的多維聚合計算也是支持的。因為對于用戶來講,用戶更多希望 診斷性、交互性分析,是有一個分析流程,而不是簡單一個多維聚合形成一個統(tǒng)計圖表就結(jié)束了。這里就沒有特別列出,我更愿意把它劃分為信息整合、描述性分析里。個人觀點,僅供參考。
畫像分析:從用戶畫像描述、下鉆分析、漏斗分析、透視分析。下鉆分析相對業(yè)界比較統(tǒng)一認(rèn)知。但是透視分析來講,是我們獨有的定義,其實目前更多以類似 “熱力圖”方式來表現(xiàn)。
跟蹤分析:用戶往往希望把每天、常例的分析路徑、分析指標(biāo)等作為每日、每小時來跟蹤實現(xiàn)。來代替?zhèn)鹘y(tǒng)意義上,人每天點擊同樣的路徑的交互分析。同時,我們在分析并發(fā)內(nèi)容上,進(jìn)行擴(kuò)展,可以同時擴(kuò)展近800個指標(biāo)同時跟蹤。
實時多維分析:這個部分更多是以把“離線多維分析”中多維聚合統(tǒng)計+? “跟蹤分析” 更加實時化。但隨著我們進(jìn)一步和業(yè)務(wù)的使用中發(fā)現(xiàn),也希望具備“實時探針”、“實時預(yù)測” 能力。把當(dāng)前實時數(shù)據(jù)進(jìn)一步從“實時監(jiān)測” 升級成為 “實時預(yù)測” 能力。
進(jìn)一步講,如何把離線多維分析、畫像分析、跟蹤分析、實時多維分析 構(gòu)建出完整的數(shù)據(jù)分析的鏈路。
直接幫助游戲產(chǎn)品自助化、交互式的完成? 全鏈路 的診斷性分析。
具體iData游戲數(shù)據(jù)的分析應(yīng)用場景視圖如下:
第一步:我們首先會利用數(shù)據(jù)分析師們構(gòu)建大量用戶的 多維特征? 多維指標(biāo) 等,以多維篩選、聚合、來實現(xiàn)“用戶分群”提取、“明細(xì)數(shù)據(jù)”提取。
第二步:選擇用戶分群群體,可以有兩個方向,一個方向,直接選取跟蹤分析的用戶指標(biāo)、特征等。進(jìn)行常例化的跟蹤分析。
當(dāng)然,可以進(jìn)行“離線”+“實時”的同時跟蹤,這樣做的主要目的,就是可以對比用戶分群+總體用戶的特征、指標(biāo)等主要差異。
另外一個方向,直接進(jìn)入畫像分析流程,主要進(jìn)行交互性、診斷性的自助分析,不斷以各個數(shù)據(jù)內(nèi)容維度進(jìn)行下鉆、透視分析。
最終,探究預(yù)期的分析結(jié)論。
第三步:可以提取用戶對象的多維明細(xì)數(shù)據(jù),進(jìn)行與跨團(tuán)隊的數(shù)據(jù)應(yīng)用,類似我上面圖所講的DataMore,DataMining,推薦系統(tǒng)進(jìn)行關(guān)聯(lián)規(guī)則投放。同時,投放的數(shù)據(jù)分析跟蹤效果,可以以跟蹤分析的方式進(jìn)行數(shù)據(jù)分析效果回饋。
當(dāng)然,是不是就“固化”死了整個分析場景;其實并不是,這里面的分析引擎,你可以自由組合。
比如:
多維跟蹤分析到可視化圖表
下鉆分析到多維提取
透視分析到多維提取
.........
只要數(shù)據(jù)對象的分析輸入輸出可以對接,就可以進(jìn)行自助化的交互性、診斷性分析。
大家可以看到,整個分析路徑里就會用到大數(shù)據(jù)分析引擎,主要用到了三個引擎
離線多維分析引擎 - TGMars
在線畫像分析引擎 - TGFace
實時多維分析引擎 - TGDruid
那么為什么是這三個引擎劃分?三個引擎怎么樣在數(shù)據(jù)流向上配合的呢?
根據(jù)上面的分類,我經(jīng)過多年的實踐經(jīng)驗,自我總結(jié)了,現(xiàn)在業(yè)界大數(shù)據(jù)分析引擎的一些分類方法。以便能夠在實際場景中,用合適的技術(shù)解決實際問題。而不是拿來即用。
大數(shù)據(jù)分析,尤其現(xiàn)在特別指OLAP來講,一般都是以時間維度+空間維度來做區(qū)分。
以時間軸+維度軸來看:
離線多維分析 ? ? -? 高維度+遠(yuǎn)時間
在線多維分析 ? ? -? 低維度+遠(yuǎn)時間(因為是不斷下鉆的過程)
實時多維分析 ? ? -? 高維度+Now+近時間
這就是這三個引擎劃分的理論依據(jù)。
那么,我們進(jìn)一步看三個引擎怎么樣在數(shù)據(jù)流向上配合的呢?
具體來講,?三個引擎怎么樣在數(shù)據(jù)流向上配合。
大家看下面的圖就一目了然。
業(yè)界數(shù)據(jù)來源對接大數(shù)據(jù)分析引擎來講,基本分兩類
實時數(shù)據(jù)流(kafka以及各種MQ為主,只要實時流動即可)
離線塊數(shù)據(jù)(以HDFS、RDS、文件等)
后面
離線多維分析引擎 - TGMars
在線畫像分析引擎 - TGFace
實時多維分析引擎 - TGDruid
三個引擎如何配合,數(shù)據(jù)流轉(zhuǎn)方向上一些視圖,這里就不一一細(xì)講了。大家自己看圖很容易理解。
緊接著,我們進(jìn)入主要技術(shù)刨析環(huán)節(jié)。給到我們多年的技術(shù)優(yōu)化的經(jīng)驗,希望大家有所收獲。
首先,介紹下,
離線多維分析引擎 - TGMars
講這個引擎的具體技術(shù)時候,一定有一個具體技術(shù)背景 或者 叫解決技術(shù)問題的出發(fā)點。
在游戲數(shù)據(jù)分析領(lǐng)域,我們面臨的是每天每個游戲“億級”海量用戶數(shù)據(jù)。通常來講,游戲策劃和產(chǎn)品需要進(jìn)行大量“多維分析計算”,尤其以多維提取+多維跟蹤分析為主。往往這些,采用業(yè)界通用的HADOOP也好,還是Kylin、Clickhouse等流行的OLAP引擎,都無法解決。
jion 操作現(xiàn)在流行的OLAP都不支持。
采用Hadoop MR計算即使支持,也是分鐘,小時級別,無法實現(xiàn)“秒級”在線多維分析。
因此,我們研發(fā)了離線多維分析引擎 - TGMars 來解決這兩痛點。
首先,我們要實現(xiàn)億級數(shù)據(jù) 在線秒級 多維提取分析。
如果以傳統(tǒng)的MR計算方式,我們要經(jīng)歷:
從數(shù)據(jù)加載、Map過濾、內(nèi)容多維聚合、再shuffling、再Map過濾聚合、Reduce的最終去重。
一個漫長的數(shù)據(jù)處理過程,根本無法實現(xiàn)秒級。當(dāng)時我們就思考,如何減少整個流程環(huán)節(jié),縮短處理流程。同時,另外一個場景也來了。
如果,我們的用戶自己把區(qū)分好的用戶,進(jìn)行“多維交叉”的跟蹤分析。如果是MR來計算需要做的工作流程將更加繁瑣,具體如下:
加載提交用戶分群數(shù)據(jù)、跟所有的以及億級數(shù)據(jù)全集進(jìn)行join的walkthrough的全遍歷、再才會進(jìn)行正常MR流程、Map過濾、內(nèi)容多維聚合、再shuffling、再Map過濾聚合、最后再Map聚合去重結(jié)果。
整個“漫長”過程會做了大量無用計算:
大小數(shù)據(jù)集的冗余全遍歷
過濾聚合經(jīng)過大量的shuffing
多次的聚合去重
我們根據(jù)這兩個場景,思考如何解決鏈條過長問題?如何解決多次shuffling計算問題?
這里面,我分享下,我們解決問題的2個經(jīng)驗。
經(jīng)驗1:
預(yù)處理機(jī)制
內(nèi)容分片存儲與計算綁定機(jī)制
預(yù)處理機(jī)制:我們把一個游戲的所有億級用戶,做成排序集合,然后按照一定Hash數(shù)據(jù)切片;例如,我們切分20個分片。
那么每個分片內(nèi)部也是有序的。同時,用戶的多維標(biāo)簽信息也都會綁定和用戶存儲一起切分到20個分片上。
這樣做的好處:
不會再有shuffing過程,
也不會有Map的聚合過程(Group By的過程);
join操作,也不會全遍歷O(N)空間復(fù)雜度。
最后Reduce操作也不會有去重。
具體優(yōu)化策略的好處,我就不一一累述,各位看圖。
經(jīng)驗2:
位圖索引加速
物化視圖
可以這么說,經(jīng)驗一是空間上的優(yōu)化。雖然有“計算”+“存儲”的綁定與分離的業(yè)界之爭論,我覺得要看實際技術(shù)解決場景而論。
位圖技術(shù),應(yīng)該是大數(shù)據(jù)計算的常用技術(shù),我們采用它也是主要為了加速計算
位操作、計算快速性
更新位圖的速度要比內(nèi)容更新塊得多
同時,針對無法進(jìn)行位圖存儲的度量操作,更多以位圖索引+內(nèi)容文件方式,做到“動態(tài)按需加載計算”。具體看圖~ 就不一一說明了。
物化視圖,應(yīng)該是現(xiàn)在數(shù)據(jù)庫技術(shù)中的常用方案。
其實OLAP大量的維度聚合、度量統(tǒng)計,都是可以利用物化視圖,解決內(nèi)容大范圍加載,數(shù)據(jù)重復(fù)高頻率計算。算是OLAP緩存一個思路。
具體,我們的做法是:
時間維度聚合指標(biāo)值。比如:雖然按天計算維度,可以進(jìn)一步聚合出每周,月,年的度量計算值。
空間維度規(guī)則聚合。比如:是否消費,是否連續(xù)消費,最近8天消費等等。減少到日級別位圖+內(nèi)容中進(jìn)行檢索查看,位圖直接命中計算即可。
最終,實現(xiàn)效果如下圖:
多維提取、多維跟蹤分析都實現(xiàn)了秒級別。
總結(jié)經(jīng)驗如下:
大家看圖,不做累述。
第二個部分,我給大家分享?
在線畫像分析 - TGFace
同樣,首先介紹下,需要解決的背景問題。
在線交互式 下鉆分析
在線交互式 透視分析
首先,我們來看下鉆分析,其實,這個部門各個公司、業(yè)界都有不同種實現(xiàn)方案。說簡單點就是再維度上,不斷的做篩選和聚合。那么,我們做的經(jīng)驗分享給到大家。
這里講到,下鉆分析,是否可以“減少冗余數(shù)據(jù)加載”?
這里構(gòu)建了基于多維數(shù)據(jù)的分布式計算畫像分析引擎TGFace。
這里分享下,我們的實踐經(jīng)驗:
逃不掉的“列示存儲”,減少行數(shù)據(jù)的冗余加載,提升計算效率
還是那個百試百靈的“位圖索引”
但是,下鉆需要緩存,我們構(gòu)建了緩存的"動態(tài)位圖索引",進(jìn)一步減少內(nèi)存加載冗余數(shù)據(jù)
再次,我們看什么叫做在線交互式透視分析,以及實踐經(jīng)驗。
在線交互式 下鉆分析
在線交互式 透視分析
前面的下鉆分析,是"維度深度下鉆問題"?
這里透視分析,是"維度廣度并發(fā)問題"
對付這個問題,我們唯有一招,快速計算,還是要快。
經(jīng)驗1
兩次MR計算(本地優(yōu)先計算+最后Reduce聚合)
JIT編譯SQL加速,字節(jié)碼執(zhí)行
最終,我們實現(xiàn)了:
1億數(shù)據(jù)6維度1.25秒下鉆分析
1億數(shù)據(jù)10維度3.4秒透視分析
實現(xiàn)了真正的在線交互
最后一個,我們講下:
實時多維分析 - TGDruid
這個是我們iData 實時多維分析的結(jié)果頁面。
希望提供給游戲業(yè)務(wù) “更快、更實時的觀測分析數(shù)據(jù)”。
正如我們前面所述,我們希望把當(dāng)前實時數(shù)據(jù)進(jìn)一步從“實時監(jiān)測” 升級成為 “實時預(yù)測” 能力。
因此,我們最近基于FaceBook Prophet 實時預(yù)測引擎做實時預(yù)測能力。
后面有機(jī)會給大家分享iData在實時預(yù)測方面的進(jìn)展,歡迎大家一起交流!
我們在實時多維引擎-TGDruid的實踐經(jīng)驗來看,最主要的就是在開源的druid的實時多維分析計算引擎上進(jìn)行整合優(yōu)化。
具體優(yōu)化經(jīng)驗如下:
數(shù)據(jù)分片數(shù)優(yōu)化
近似UV的統(tǒng)計框架(精確也可)
數(shù)據(jù)結(jié)果自動化索引
大維度計算錯誤檢測
數(shù)據(jù)自助補錄(數(shù)據(jù)回放)
實時數(shù)據(jù)跟蹤分析能力
基于Prophet實時預(yù)測
最后,給大家,把這次分享內(nèi)容小結(jié)下。
我這次分享的是 iData大數(shù)據(jù)分析引擎的實踐內(nèi)容,我們還有iDataCharts、iDataLab等內(nèi)容。后續(xù)有機(jī)會再細(xì)化給大家分享。
分享的三個主要的大數(shù)據(jù)分析引擎:
離線多維分析引擎 - TGMars
在線畫像分析引擎 - TGFace
實時多維分析引擎 - TGDruid
未來規(guī)劃,三個引擎會做升級
大數(shù)據(jù)生態(tài)化、體系化改造,以支持可以開放能力
開源協(xié)同,騰訊內(nèi)外都會,預(yù)計下半年在騰訊內(nèi)
分析引擎可以加科學(xué)化、預(yù)測可以引導(dǎo)形成決策化
今天就分享這么多,感謝大家!歡迎大家隨時找iData和asher交流!
總結(jié)
以上是生活随笔為你收集整理的GIAC | 大数据分析系统在游戏领域的迭代与实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 卡牌特效: svg不规则倒计时动效
- 下一篇: 直播马上开始|不要怂,一起上!关于黑客攻