一篇文章告訴你優酷背後的大數據祕密!!「大數據開發實戰技術」

在本文中優酷數據中臺的數據技術專家門德亮分享了優酷從Hadoop遷移到阿里雲MaxCompute後對業務及平臺的價值。

本文內容根據演講視頻以及PPT整理而成。

大家好,我是門德亮,現在在優酷數據中臺做數據相關的事情。很榮幸,我正好見證了優酷從沒有MaxCompute到有的這樣一個歷程,因爲剛剛好我就是入職優酷差不多5年的時間,我們正好是在快到5年的時候,去做了從Hadoop到MaxCompute的這樣一個升級。這個是2016年5月到2019年現在的5月優酷的發展歷程,上面是計算資源,下面是儲存資源。大家可以看到整個用戶數,還有表的數據,實際上是在呈一個指數式增長的。但是在2017年5月,當優酷完成了整個Hadoop遷移MaxCompute後,優酷的計算消耗,還有儲存的消耗實際上是呈下降趨勢的,整個遷移得到了一個非常大的收益。

一篇文章告訴你優酷背後的大數據祕密!!「大數據開發實戰技術」



下面說一下優酷的業務特點。

【大數據開發學習資料領取方式】:加入大數據技術學習交流扣扣羣957205962,點擊加入羣聊,私信管理員即可免費領取

第一個特點從大數據平臺整個的用戶複雜度上面,不止是數據的同學和技術的同學在使用,還會包括一些BI同學,測試同學,甚至產品運營都可能去使用這個大數據的平臺。

第二個特點就是業務複雜,優酷是一個視頻網站,它有非常複雜的業務場景,從日誌分類上,除了像頁面瀏覽,還會有一些播放相關的數據、性能相關的數據。從整個的業務模式上,有直播、有會員、有廣告、有大屏等這樣一些非常不一樣的場景。

第三個特點,就是數據量是非常巨大的,一天的日誌量會達到千億級別,這是一個非常旁大的數據量,而且會做非常複雜的計算。

第四個是比較有意思的,不管是小公司、大公司,對成本的意識是非常高的。優酷也是有非常嚴格的預算,包括在阿里集團內是有非常嚴格的預算系統的,但是我們也經常會去做一些重要的戰役,像雙十一戰役,像我們暑期的世界盃戰役,還有春節也會搞各種戰役。這樣的話,其實對計算資源的彈性要求是非常高的。

基於上面的優酷的業務特點,我整理了MaxCompute可以完美的支持我們業務的幾個特點。

一篇文章告訴你優酷背後的大數據祕密!!「大數據開發實戰技術」



第一個,簡單易用。

第二個,完善的生態。

第三個,性能非常強悍。

第四個,資源使用非常彈性。

第一個特點,簡單易用。MaxCompute有一個非常完整的鏈路,不管是從數據開發,還是數據運維,包括數據集成,數據質量的管控,還有整個數據地圖,數據安全。當年優酷從Hadoop遷到MaxCompute之後,我們最大的體會是自己不用半夜經常起來去維護集羣了,不用去跑任務了,寫一個任務,別人之前提一個需求過來,我可能要給他排幾周,而現在我可以告訴他,我給你馬上跑一下,就可以出來了。包括之前像分析師BI還要登錄客戶端,寫腳本,自己寫調度,經常會說我的數今天爲什麼沒出來?包括高層看的數,可能要到12點鐘才能出來。而現在基本上所有重要的數據都會在7點鐘產出,包括一些基本的業務需求,其實分析師或者產品,他們自己都可以實現了,不需要所有需求都提到數據這邊。

一篇文章告訴你優酷背後的大數據祕密!!「大數據開發實戰技術」



第二個特點,完整的生態。優酷在2017年之前是完全基於Hadoop的生態,遷到MaxCompute之後,是基於阿里雲提供的Serverless大數據服務的生態。大家可以在開源上看到的組件,在整個的MaxCompute上都是有的,而且比開源的要更好用、更簡單。從架構圖上可以看到,我們中間是MaxCompute,左側依賴的Mysql、Hbase、ES、Redis這些都是由同步中心去做一個雙向的同步。右側會有資源管理、資源監控、數據監控,包括數據資產,還有一些數據規範。我們下層的數據輸入,包括一些集團的採集工具,再往上邊,有提供給開發人員用的DataWorks,包括一些命令行的工具;有提供給BI人員用的QuickBI及數據服務。

一篇文章告訴你優酷背後的大數據祕密!!「大數據開發實戰技術」



第三個特點,強悍的性能,MaxCompute支撐了優酷EB級的數據存儲,千億級的數據樣本分析,包括千億級的數據報表,10W級實例的併發、任務。這些在之前維護Hadoop的時候,是想都不敢想的。

一篇文章告訴你優酷背後的大數據祕密!!「大數據開發實戰技術」



第四個特點,資源使用的彈性。我們在2016年遷移之前,其實優酷的Hadoop集羣規模已經達到了一千多臺,這個當時還是一個比較大的規模。當時我們遇到了很多問題,包括像NameNode 這種內存的問題,機房沒有辦法再擴容的問題,當時是非常痛苦的,包括一些運維管理上面的問題。我們不斷的去問運維要資源,運維告訴說,說你們已經花了多少多少資源,花了多少多少錢。我們面臨的問題是計算資源如何按需使用,夜裏的時候作業很多,到了下午之後,我的整個集羣都空下來了,沒有人用,造成了浪費。其實MaxCompute完美的解決了這個問題。

一篇文章告訴你優酷背後的大數據祕密!!「大數據開發實戰技術」



第一個,它是按用量計費的,不是說給你多少臺機器,然後就收你多少錢的,真的是你用了多少資源收多少錢的,這個在成本上來說,比自己去維護集羣,可能是一個砍半(降50%)這樣的收益。

第二個,實際上MaxCompue計算資源是可以分時的,比如說生產隊列,凌晨的時候會調高一些,保證報表能夠盡快出來。到白天時候,讓開發的計算資源高一些,可以讓分析師、開發去臨時跑一些數據,會更順暢一些。

第三個,MaxCompute快速的擴容能力,比如說突然有一個比較強的業務需求,發現數據跑不動了,計算資源不夠,所有的隊列都堵死了,這個時候其實可以直接跟運維說一聲,幫忙一鍵擴容,他兩秒鐘敲一個命令就搞定了。這樣的話,所有的資源可以迅速的消化下去。

一篇文章告訴你優酷背後的大數據祕密!!「大數據開發實戰技術」



上面是優酷爲什麼採用MaxCompute,下面是在優酷的業務場景下,我們一些典型的方案、應用。這張圖實際上是優酷,包括可能現在阿里集團內部一些非常典型的技術架構圖。中間可以看到,MaxCompute在中間核心的位置,左側主要是一個輸入,右側是一個輸出的趨向,綠色的線是一個實時的鏈路,包括現在我們從整個的數據源上,比如DB也好或者服務器的本地日誌Log也好,我們通過TT&Datahub存儲到MaxCompute上面做分析。當然現在非常火的Flink實時計算,其實是作爲一個實時處理的鏈路。

包括DB的同步,除了實時的鏈路,DB也會去通過按天/按小時,把數據同步到MaxCompute,數據計算結果也可以同步到Hbase、Mysql這種DB上面。再通過統一的服務層對應用提供服務。下面這個是機器學習Pai做的一些算法訓練,再把訓練的結果通過OSS傳到一個算法的應用上面去。

一篇文章告訴你優酷背後的大數據祕密!!「大數據開發實戰技術」



這張圖可能也是業界比較流行的一個數倉分層的圖,因爲我們這邊是數據中臺,所有的數據都是統一從ods層cdm層,然後ads層,去一層一層的往上去做精細,再到最上面,通過接口服務、文件服務、SQL服務,去提供多樣化的服務。再往上面,提供對內的一些數據產品,對高管、對小二,可能還有一些對外的,比如說像優酷的播放數,包括熱度這些對應用的數據。

一篇文章告訴你優酷背後的大數據祕密!!「大數據開發實戰技術」



這張圖其實就是我們從Hadoop遷到MaxCompute平臺上以來,兩個非常經典的案例。我們通過數據中臺對不同場景的用戶打通,來去賦能到兩個不同的場景,提升業務價值。

第二個,可能是內部的,我們通過優酷,還有集團內部的一些BU去做換量,我們通過統一的標籤去做樣本放大,把優酷的量導給其它的BU,把其它BU的量導給優酷,這樣去達到一個共贏的效果。

一篇文章告訴你優酷背後的大數據祕密!!「大數據開發實戰技術」



這張圖大部分互聯網公司不太會涉及到,就是關於反作弊的問題。這個是我們在MaxCompute做的一個反作弊的架構,通過原始的數據去提取它的特徵,然後再通過算法模型,包括機器學習、深度學習、圖模型去支持流量反作弊、渠道反作弊等等。再通過業務場景上反作弊的監控工具,把監控到的作弊信息去打一個黑白樣本,再把這個黑白樣本跟特徵一起來不斷的迭代優化算法模型。同時針對算法模型,做一個模型的評價,不斷來完善反作弊體系。

最後一點,其實還是跟成本相關,在日常使用中,一定是有小白用戶或者一些新來的用戶去錯誤的使用或者不在乎的使用一些資源,比如經常會有一些實習生或者是非技術的同學,如分析師,一個SQL消費比較高,這個其實是非常浪費資源,而且可能他一個任務,讓其他所有人的任務都在這兒等着排隊,實際上我們會去對整個的資源做一個治理。

從節點的粒度上,通過大數據來治理大數據,我們可以算出哪些表產出來之後,多少天沒有被讀取的,包括它的訪問跨度可能沒有那麼大的,我們會去做下線或者去做治理,有一些業務場景可能並不是非常的重要或者它的時間要求沒有那麼高,比如一些算法訓練,可以去做一些錯峯的調度,保證水位不要太高。從MaxCompute任務的角度,可以算出哪些任務有數據傾斜、哪些數據可能會有相似計算,哪些任務需要去做MapJoin,哪些任務需要去做一些裁剪,然後來節省它的IO。還有哪些任務會去做暴力掃描,掃一個月、掃一年的數據,哪些數據可能會有這樣一個數據膨脹,比如說它做了CUBE之類的這種複雜計算,一些算法模型的迭代;我們通過數據計算出來的這些跡象,去反推用戶,來去提高它的這樣一個數據的質量分,來去達到我們降低整個計算資源的目的。

在計算平臺的角度,我們也持續的在使用MaxCompute推出的一些非常高級的用法,比如我們這邊的HBO、Hash Cluster、Aliorc;

一篇文章告訴你優酷背後的大數據祕密!!「大數據開發實戰技術」



第一個,HBO就是我們基於一個歷史的優化,這樣避免了用戶不知道怎麼調參,我可能爲了自己任務快一點,就調一個特別大的參數,這樣的話,對集成的資源是非常浪費的。通過這個功能,用戶就不用去調參數,集羣自動調好,用戶就寫好自己業務邏輯就好了。

第二個,可能就是最近兩年推出的Hash Cluster,當時在使用Hadoop的時候經常會出現,兩個大表Join的時候計算不出來,這個Hash Cluster其實是一個優化的利器。大表跟小表Join,可以做一些分發,做一些優化。大表跟大表就涉及到一個排序的問題。這個Hash Cluster,實際上就是提前把數據排好,中間省掉很多計算環節,來達到效率提升的目的。

第三個,Aliorc,在一些固定的場景上面,可以穩定的提升20%的計算效率。

第四個,Session。對一些比較小的數據,直接就放到SSD或緩存裏面,一個節點下游有100個葉子場景,是非常友好的,因爲低延遲秒出結果。同時,優酷也在使用Lightning解決計算加速,這個是在一個計算架構方案上的優化,它是一個MPP的架構。

一篇文章告訴你優酷背後的大數據祕密!!「大數據開發實戰技術」



最後一頁是存儲的優化,因爲像一些關鍵的原始數據或者是需要審計的數據是不能刪的,永久不能刪的。實際上就會造成我們數據存儲的趨勢是一直往上不減的,計算會在某一個時間點達到一個平衡。當前用這麼多的計算資源,再往後,其實應該也不會再大漲了,比如說舊的業務邏輯下掉了,會換新的業務邏輯,這樣會保持在一個相對平穩的波動上面。但是儲存,因爲它有一些歷史的數據是永遠不能刪的,可能會出現一直在增長,而且是指數級的。所以我們也會持續關注存儲的情況,還是通過大數據來治大數據,去看哪些表的訪問跨度比較小,來去做生命週期的優化,來去控制它的增速。還有剛纔提到的Aliorc,實際上也是做壓縮的。我們會去做一些大字段的拆分,來提高壓縮的比例。


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