【友盟+】資料存量高達60PB,相當於A4紙正反面寫滿數字並裝滿15萬輛卡車;【友盟+】每天的資料計算需要近2萬個高效能CPU,每個CPU每1毫秒計算1億次,相當於200個地球上的100億人24小時不間斷的運算。
網際網路企業每天都會產生大量的業務資料,如何構建一個極速響應、穩定安全、低成本的資料儲存、加工、挖掘、應用的全流程體系,成為企業實現資料化的關鍵。
【友盟+】工程師首次揭祕,友盟+是如何對超級體量資料進行儲存與加工,為超過150萬款應用以及710萬家網站提供全域資料服務,並讓這些龐大的資料來源源不斷的實現秒級計算與應用。
我們將從三個部分展開:資料儲存、資料探勘、特徵加工。
一. 資料倉儲是如何運作的?
資料倉儲輸入、輸出的是什麼資料?資料倉儲是如何運作的?資料倉儲到底做了什麼?
我們先看一下資料倉儲,左邊是輸入資料,第一是資料採集,直接通過JS程式碼或者SDK採集裝置行為資料;第二是業務資料上傳;第三是營銷領域的問卷資料上傳、檔案資料上傳等。右邊是輸出資料。資料經過處理後主要以四種形式輸出,包括統計報表、資料超市、DMP、資料包告。
重點介紹中間的資料倉儲。【友盟+】資料存量高達60PB,如果用一張A4紙正反面寫滿數字,把A4紙疊起來可以裝15萬輛卡車。倉庫裡面有多少張表呢?大概是上萬張。我們每年計算/儲存成本非常高。
大資料的挖掘、分析和運算就是我們的CPU,我們每天的運算量需要2萬個CPU,相當於200個地球上的100億人24小時不間斷的運算。
資料處理。這麼龐大的資料量在資料倉儲內是如何運作的?資料倉儲元件分為四類:儲存框架、開發工具、資料保障和資料管理。
第一, 儲存框架。包含(阿里雲)ODPS、HDFS、Oracle、HBASE等。
第二,開發工具。分為開發平臺和排程器。排程器代表對這個關係的依賴,讓這個任務完成之後進行下一個任務的通知和執行。
第三,資料保障機制,通過資料監控去做保障,監控任務、資料異常並報警,通過任務排程管理保障資料任務的優先順序和資料質量。之前說我們資料倉儲裡有上萬張表,對每一個生產表打標籤,快速定位到我們想要的表就是資料地圖。資料健康,如果1TB資料執行一個小時,就代表很慢,就可以通過資料優化判斷出你的任務,你的資料表可能不夠健康,你的健康分會被降低,健康分降低了優先順序就會降低。
第四,資料管理,比如開發規範、資料空間管理、後設資料管理。
1)開發規範。這麼大的資料量為避免資料重複開發和浪費,我們會對程式碼和命名進行有效規範。還可以通過方法論,比如資料分層、統一語言,索引條件優先等級劃分,都需要記錄在開發規範中。
2)資料空間,就是我們有這麼一個平臺能看到各個BU、各個平臺、各個部門現在的資料狀況。比如,有些同學可能SQL寫的有問題,出現傾斜之類的,我們能夠快速的發現並通知,及時修復和優化。
3)源資料管理,就是在這麼大的一個資料管理裡面快速查詢到資料表是什麼情況,這個資料是不是做了壓縮,包括任務是誰提交的,提交時間等。同時還有每個資料公司對自己的資料資產有一個盤點,有一個清晰的認識。當前我們到底有什麼資料,這樣的一個資料洞察的體系。
二. 資料探勘,如何讓雜亂資料統一、分層解耦?
資料處理之後,是資料探勘。資料探勘一般分為6個步驟:資料探勘、資料ETL,第三個是對資料進行分析,然後提取出特徵工程,從而進行模擬訓練,然後再進行模型評估。
今天我們重點講兩塊,一個是資料的ETL,一個是特徵工程。
1)ETL是什麼呢?就是清洗、加工和載入。
第一是控制處理;
第二是資料格式化,比如說時間格式,有些是秒,有些是毫秒,有些直接採用的就是年月日時分秒,用的時候肯定要統一,讓下游很方便的應用;
第三是資料的驗證。在我們已有的知識體系、業務邏輯、常識中,對資料的邏輯性進行一個判別,如果不符合邏輯的話,我們把這個資料進行達標和分割儲存;
第四是資料補充。就是手機都會採集裝置上的經緯度,是一個負點數,我們並不能直接理解,需要對資料進行分割化,圈出一塊區域,對資料做POI關聯,把經緯度做轉化;
第五是公共層。以前的資料庫講的是泛式關係,大資料更多是OLTP、OLAP的概念。我們更多的以事實行為去做事實寬表。比如說維度表以及資料的立方體。這裡面提到了資料達標和資料分割,一般會遵守的準則是所有的資料進到了資料倉儲,哪怕這個資料是無用的、是空的,我們也不會剔除。
有很多資料需要做資料分層,比方說今天重新建了一張表,這個業務發生變化了。現在網際網路的狀態就是擁抱變化,每週都會不停的在開發新表,如何用2分鐘就把這個表變了。分層業界裡面都會分為三層:資料接入層ODS、資料公共層CDM、資料應用層ADS。我們針對明細資料做分析,比如說廣州市是廣東省的這樣一個對應關係。公共聚合層就是資料立方體,資料應用層就是針對不同的業務去劃分獨特的一塊區域,通過分層可以做到業務解耦。
資料加工中的一個拉鍊表,左邊這張表記錄了小明每年的學籍,小明在2012-2013年之間都是小學,我們記錄開始時間和結束時間。左邊這個資料到右邊這個資料很頻繁,只記錄狀態的變化就可以了。這個場景可能會應用於哪些行業呢?比如電商系統,這個商品今天做促銷,明天促銷就取消了,對商品價格打一個快照。
這個表主要就是為了節省儲存空間,讓運算速度更快。剛剛提到了資料立方體,做資料分析的同學會經常接觸,也就是QB。
簡單的畫了一個圖,橫座標是一個季度的維度,縱座標是品類的維度,還有地區維度,構成三維立方體。現實中的維度遠遠不止三個,它會變成9塊,每個這樣的組合至少有9種組合關係,現實中這個關係有可能是10個、20個。當擴大到20的時候資料量非常龐大。怎麼處理呢?維度的組合關係,一般還會有一級分類、二級分類,一級分類必然是和二級分類有關係。比如江蘇省,另一個維度是城市,南京市必然是江蘇省,把這些維度做一些關聯,我們一般叫關聯維度的結合。
資料立方體的鑽取。就是對某一個維度進行下鑽,對月份進行下鑽,就是對維度進行細分。我們來看一個季度的分佈,上卷就看到一、二、三季度的分佈。我們鎖定了品類的維度叫電子產品,去看季度、地區的情況,這叫切片。切塊很簡單,多個維度就變成了切塊。以季度和地區去看品類的情況,做立體三維空間的反轉,就是資料立方體。
三. 特徵加工,如何提取有價值的特徵?
如何在這麼多資料中提取跟使用者相關、跟裝置相關的特徵?通常將特徵分為四大類,第一是基本特徵,比如空降的種類、數量、金額、重量、長度等;還有時間上的時長、次數、購買次數;還有比例上的,比如男女比例,平均比例等;還有複雜特徵,就是將基本特徵和統計特徵做一個組合;還有自然特徵,比如聲音、影像等。
對這個特徵進行分析,大概會分為這幾個步驟,特徵分析、特徵選取、特徵評估。比如對使用者的換機的判斷。第一步先要去想特徵,比如性別、年齡、收入水平、財富水平,興趣偏好等。
第二塊就是從現有的資料裡提取出來,能夠採集到APP資料,使用者喜歡哪個APP,是玩遊戲還是購物。特徵的評估是針對這個資料做分析,比如這個資料是不是可靠。
簡述特徵處理的3種方式
1)二值化:將一個特徵轉換成用0/1表示的多個特徵
解決兩個特徵的差沒有意義的情況,尤其針對列舉值;
例如:性別男和女,或者年齡段,比如20、30相加相減都是沒有意義的。所以我們處理特徵,第一位1表示男,第2位1表示女。
2)權重和平滑處理
使用者特徵往往無法拿到具體值,比如品牌特徵,使用者往往並不是只對某一品牌感興趣,而是對多個品牌感興趣,只是感興趣的程度不一樣。例如:[lily:0.5, Loft Shine:0.2, J.crew:0.15];時間衰減,歷史資料進行權重處理,如果沒有新增,資料更平滑。
3)合理化:異常值發現
根據常識或知識體系,剔除不合理資料,避免對特徵的影響。
比如,一個使用者的定位資料,100條記錄都在北京,其中有1條在廣州且時間與其他記錄相差幾分鐘,可以對該資料進行標註。
活動推薦:《超級使用者時代,資料增值新思維》
2018【友盟+】U-time巡迴沙龍
北京站3.14 、上海站3.17、杭州站3.21、深圳站3.24
沙龍議程
資料解讀-如何定義超級使用者?
資料運營-如何持續經營超級使用者?
資料營銷-如何精準獲取超級使用者?
TOP APP分享超級使用者的運營祕籍