閱讀567 返回首頁    go 阿裏雲 go 技術社區[雲棲]


一場變美盛宴後麵的大數據故事

小紅唇和阿裏雲大數據平台的牽手要從20165月份說起。隨著小紅唇業務的發展,用戶量和內容量不斷增加,迫切需要推出個性化功能,增加用戶的使用時長和用戶粘度。對於一個沒有大數據/機器學習經驗和技術儲備,並且開發人員有限的年輕團隊,在業務快速發展的情況下,如何在非常有限的開發資源和不影響正常業務開發的前提下,快速建立起自己的推薦係統,成為擺在小紅唇技術團隊麵前一個不小的挑戰。

 

小紅唇的技術團隊在收到產品關於個性化推薦的需求後,開始了技術調研,其中包括了主流的開源技術棧和阿裏雲在2016年年初發布的數加平台。兩位毫無大數據技術背景和經驗的工程師並行化工作,都希望能快速切入到大數據的核心並快速產出。於是小紅唇和大數據的第一次邂逅就這樣不期的開始了,如同相親,在眾多的對象中,怎麼找到合適的那一位一定是故事裏精彩的部分。在這第一次邂逅的比賽中,調研阿裏雲數加平台的工程師隻用了一天時間,就利用阿裏雲數加平台的推薦引擎搭建起了推薦係統,該係統使用了業界流行的協同過濾算法,基於最新的用戶對短視頻的行為,計算出推薦列表。而另一位工程師還在熟悉陌生的大數據技術棧和編程語言。這第一次與阿裏雲大數據平台的邂逅堪稱完美,在對僅用一天時間就搭建起來的推薦係統稍作修改,並設計了如何嵌入到自身業務係統中後,個性化推薦就和其他普通業務需求一樣,在產品提出需求後的第一個發版中就快速上線了。整個推薦係統中數據采集,數據清洗,推薦計算以及結果獲取如下圖1所示。

 

3da218d241d597b8af04d463a72461a2ecfbcf4f

1. 推薦係統架構圖

 

在這個架構中,我們選擇了非常流行的開源 ETL 工具來對用戶行為,物品,用戶等推薦係統依賴的數據進行清洗,並按照推薦引擎要求的格式同步到大數據計算服務中。由持續集成工具 Jenkins 觸發數據的清洗和上傳到 MaxCompute

 

這個架構簡單清晰,但也有著很多不完美的地方,特別在數據的采集和清洗方麵,還顯得比較初級和脆弱,首先用戶行為數據完全依賴了在APP中的埋點,而埋點的最初的設計也存在了一些問題導致數據缺失。另外,推薦引擎沒有一個很好的觸發機製,通過外部的持續集成工具 Jenkins 的觸發,在初期有時會遇到推薦引擎係統不穩定的問題,導致離線計算失敗,用戶的推薦列表沒有得到及時的更新。

 

隨著推薦係統的上線,小紅唇也開啟了大數據之旅,得益於數加平台完整的大數據計算和應用設計,小紅唇的技術團隊在熟悉和上線推薦係統的過程中,也逐漸收獲了大數據的核心理念,對大數據完整技術棧也有了更深的認識。

 

2016年是小紅唇快速發展的一年,隨著業務的不斷增長,各種產品、市場運營活動的設計和決策也需要有各種各樣的數據作為支撐了。於是在快速上線了推薦係統之後,擺在小紅唇麵前的另一個大數據挑戰就是搭建自己的數據倉庫。

 

在推薦係統的建設中,小紅唇技術團隊也意識到阿裏雲數加平台在普惠大數據理念上的前瞻性,整個數加平台產品線的布局對於像小紅唇這樣的初創公司,在大數據實踐上是容易實現彎道超車的。

 

數據倉庫的重要性毋庸置疑,在雲計算和大數據時代,數據倉庫的建設也在不斷的進化中。開源生態中基於Hadoop/Hive搭建數據倉庫的成功案例不勝枚舉。數加平台基於MaxCompute(原ODPS,https://www.aliyun.com/product/odps)的強大計算能力,也正是對這一理念的完美詮釋。於是小紅唇技術團隊也在橫向對比之後,毅然決定在數加平台上進行數據倉庫的建設。

 

小紅唇基於數加平台的數據倉庫搭建分成了兩個階段。第一階段由於主要的業務服務器並沒有部署在阿裏雲上,使得數據的采集和清洗變得比較麻煩,跨網的數據傳輸和備份,各種周期任務比較複雜。如圖2所示。

 

2d36956138f76c8b858a4327664ffc0c7ee9f439

2. 第一階段數倉架構

 

在第一階段的數倉建設中我們已經在計劃業務服務器向阿裏雲搬遷了,所以把數據需求最緊要的數據做了向 ODPS 的同步(同步方式也有用 DataX ODPS tunnel),在數據開發IDE中對數據進行ETLOLAP,產出BI報表。 另外還有一些數據會應用到業務係統中,我們通過 RDS 進行存儲。

 

在數據倉庫第一階段的建設和使用中,我們已經在積極的籌備業務係統向阿裏雲的搬遷。隨著搬遷的完成,我們也迅速開始了第二階段的改造。同時更多的數加產品也在不斷的內測和發布中,借助於新的產品和上下遊的不斷打通,我們的架構也進行了演進,如圖3所示。

 

d30cc1499d6522346299c4dd936ee9713b2112ba

3. 第二階段數倉架構

 

第二階段與第一階段主要的區別就在於數據采集和清洗部分是否直接納入在數加平台內部,而對於數據倉庫的建設而言,這兩個環節又是非常重要的部分。在第二階段中,我們的業務數據庫已經在阿裏雲的RDS上了,通過DataIDE 就可以方便的把需要的數據同步到大數據開發平台中,這也是小紅唇目前的架構。在把數據采集,數據清洗,數據開發和數據應用形成完整閉環後,小紅唇在大數據領域的各種嚐試和產出得到了巨大的發展:

 

首先,我們基於數據倉庫的方法論在數加平台上建設的數據倉庫,通過簡單的命名規則就構建起各種層級和維度的數據,依賴MaxCompute(原ODPS,https://www.aliyun.com/product/odps)的強大計算能力,和簡單的SQL處理語言,小紅唇技術團隊隻有一名數據工程師就能快速生產出各種數據,以支撐各種BI報表。


第二,流計算的引入,提高了小紅唇業務的實時表達能力而又沒有增大開發成本。對某些業務還起到了異步,解耦和降級的作用,大大降低了對線上已有的複雜業務的影響,因而降低了開發和維護成本。

第三,與機器學習算法平台PAI的對接也幫助了小紅唇技術團隊在機器學習等高難度領域大數據應用的探索,比如我們嚐試了訓練回歸模型對用戶上傳視頻的打分,還有對文本的處理聚類等。

第四,基於統一的數據存儲和計算,我們通過對用戶的特征抽取,開發了自己的一套基於內容的推薦模型(通過用戶對內容的行為,在ODPS中通過SQL/MR的計算生成用戶特征,通過 DataX 存儲在 OTS 中,在實時的計算中獲取並對用戶進行基於興趣的內容推薦),和阿裏雲推薦引擎一起,為用戶提供個性化內容,也取得了不錯的效果。同時也在智能搜索方麵做了初步的嚐試。

 

當然,小紅唇在數加平台上的大數據實踐也並非一帆風順,期間也有對於產品理解和數加平台自身的一些問題,比如初期大量的數據搬運和同步工作掣肘了業務的快速開發,MaxCompute(原ODPS,https://www.aliyun.com/product/odps)提供的算子不太豐富,需要自行開發udfMaxCompute2.0將會有巨大的改進,同時更多的上下遊產品被打通),初期數加平台和其它上下遊產品打通不夠等等。但是數加平台強大的計算能力和完整的產品布局對小紅唇的業務擴展和決策支撐起到了關鍵的作用。

 

技術的不斷進化和升級需要匹配業務的水平和規模,對於小紅唇這樣的初創企業,背靠阿裏雲強大的平台,能夠快速應用新技術並得到價值的轉化,實現彎道超車,並不斷完善自身技術架構和能力,在不斷的創新中得到發展。

最後更新:2017-05-22 20:31:18

  上一篇:go  Java基本數據類型的裝換
  下一篇:go  我也說說Emacs吧(1) - Emacs和Vi我們都學