58數據倉庫的演化

導讀:早在多年以前在Hadoop系列分佈式計算與存儲、消息中間件還沒有成熟的時候,數據倉庫主要基於Oracle的數倉建設。但隨着時間的推移,傳統數據倉庫的數據計算與存儲,已經無法很好地支持海量數據的計算與存儲,這樣大數據 ( 分佈式 ) 技術開始火熱起來。本文將爲大家介紹58數據倉庫團隊使用Hadoop開源技術軟件從0-1以及1-N數倉的建設和演進過程。主要內容包括:

  • 商業數倉介紹

  • 商業數倉1.0

  • 商業數倉2.0

  • 商業數倉3.0

0158商業數倉介紹

1. 58數倉規模

隨着數據量的不斷增加,現在58數據倉庫每天數據增量在25TB+;在調度系統上,數據倉庫的整體作業爲2000多個;資源使用情況佔用大數據平臺整體資源的1/3左右;數倉團隊人員規模爲15+。

2. 商業數倉架構

58商業數倉架構分爲四層:

  • ODS ( 貼源層 ):其中包括埋點的數據採集、傳輸,離線、實時、多維分析所使用數據的源頭;

  • DWD ( 明細數據層 ):涵蓋了業務數據倉庫、客戶數據倉庫、廣告數據倉庫、全站用戶行爲數據倉庫等等;

  • DWA ( 彙總層 ):集中建設通用性的維度和指標,降低業務開發需求成本;

  • APP層 ( 應用層 ):主要涵蓋了業務場景、分析主題、OLAP多維分析引擎幾方面,包括了智慧數、商家參謀、監控平臺、效果數據、特徵挖掘等應用。

02商業數倉1.0

1. 業務背景

① 處於業務初創時期,缺少數據

起步階段,業務比較單一,所以造成缺少數據的情況。

② 擁有的數據呈爆發式增長

隨着技術的發展以及企業和用戶的需求,數據呈現爆發式的增長,數據量環比上月增加100%左右。在處理數據方面,主要圍繞準確性、及時性、穩定性來做,保證數據倉庫有準確的數據,並且可以及時看到數據。

2. 技術狀況

當時數據傳輸使用的是5年前的技術——rsync ( 凌晨定時把文件put搭配HDFS文件系統上面,但是存在嚴重的及時性問題,在調度作業前需要把所有文件到傳輸到HDFS上面去 );

調度方面——dsap ( 類似crontab定時器,可以在指定的時間調度起來作業,但是作業之間沒有依賴,穩定性得不到保障 );

研發方面——MapReduce ( 倉庫整體都是使用MR代碼來實現各項功能,其中開發的效率比較低 )。

3. 調度升級

針對58倉庫1.0的問題,首先是需要解決的問題是穩定性問題,因爲dsap是屬於定時調度,存在超時問題,所以針對調度,短期採用文件依賴的方法,經過不斷迭代,最終形成了的58DP工具平臺。

4. 代碼升級

由於底層ODS、DWD的數據格式多樣,數據處理邏輯複雜,依舊沿用MapReduce,到了DWA、APP層,逐漸改用Hive SQL來處理。

5. 傳輸升級

解決及時性問題上,rsync換成了Apache Flume + Kafka來解決時性問題。

6. 代碼優化

針對ODS、DWD層的MR進行setup優化、DistibutedCache優化,在APP層採用通用的Hive優化方法進行性了一些優化。

7. 指標標準定義

在數據應用層發佈了統一的數據標準,計算標準,指標邏輯含義清晰定義等。

8. 監控

增加了一系列的監控,比如說這個表的數據在某個時間點可以給提供下游,關鍵指標的監控、作業完成時間的監控、指標波動監控等。

9. 流量來源的劃分

對於來源劃分,採用SPM等參數的方式來區分;對於SEO等無法通過參數方式來區分的場景,58這邊採用的是通過Nginx日誌獲取一跳URL,然後再根據相關邏輯進行流量來源劃分。

10. 小結

在商業數倉第一階段主要建設數據穩定性、準確性和及時性。其中2、3、4小節主要用來提升穩定性,5、6小節提升及時性,7、8、9小節用來提高準確性。

03商業數倉2.0

1. 背景

在商業數據倉庫1.0中,存在兩方面的問題:

  • 其數據內容不夠豐富 ( 不能讓數據很好的實現商業變現 ),所以在數倉2.0中進行了迭代升級;

  • 企業對於實時性的要求不斷升級 ( 在數倉底層使用的Flume+Kafka組件已經可以支持實時的要求 ),實時和離線多維分析場景支持不夠。

2. 全站行爲數據建設

PC/M端:根據用戶的一次展現,通過ID傳到列表頁/詳情頁/行爲頁,這一套採用的是標準參數傳遞的方式進行傳輸。

APP端:採用sidDict參數傳遞的方式進行數據傳輸。

主要問題:

  • 參數傳遞涉及到的流程多,保證所有流程、步驟都正確傳遞的成本極高

  • 受業務線迭代影響極大,出現問題排查成本極高

  • 用戶行爲串連匹配率不高,並且已經到達了瓶頸

所以,我們採用狀態機的方式,通過用戶標識 ( Cookieid、imei ) 進行數據的串聯。

效果:

  • 串聯比例大幅度提升、匹配率95%+;

  • 開發成本減低、可維護性高;

  • 擴展性強

3. 息壤

在實時方面進行提升,可以從不同維度、不同粒度看到各個項的實時數據,以供企業、用戶及時修正。

實時的技術架構採用的是 Kafka + Sparkstreaming + Druid;目前最新採用的是Flink技術。

04商業數倉3.0

1. 系統性

在數倉3.0階段,對DWD層每個煙囪獨立倉庫進行整合,即開發數據中臺,提高數據的複用性,把數據的能力進一步提升。

把相似的內容進行模型化建設,將異構的數據進行統一化的處理流程。

以LEGO廣告系統流程爲核心,對標到數據處理的流程上,制定標準ODS層數據格式,其餘老系統數據映射到對應標準ODS 層,再以數據漏斗形式,進行串聯全流程數據,產出DWD層表。

2. 產品化

客戶:

  • 效果數據:客戶推廣效果數據展示、分析

  • 商家參謀:針對供需指數,投放相應數據量的廣告

分析決策:智慧樹 ( Dashboard、監控平臺 )

技術分析:實時ab測、洞察平臺 ( 實時效果,實時監控 )。

05總結58商業數倉目前經歷了3個階段,在商業數倉第一階段主要建設數據穩定性、準確性和及時性;第二階段主要圍繞數據豐富度進行建設;第三階段主要是圍數倉的體系化、產品化的建設。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章