阿里妹導讀:優(yōu)酷一天的日志量會達到千億級別,面對如此大的數(shù)據(jù)樣本,2017年5月,優(yōu)酷完成了從Hadoop遷移到阿里云MaxCompute,實現(xiàn)計算消耗和儲存的消耗呈下降趨勢,得到了非常大的收益。今天,阿里數(shù)據(jù)技術(shù)專家門德亮給大家做個分享,從為什么要用MaxCompute,到優(yōu)酷的業(yè)務場景下典型的方案及應用分析,聊聊遷移后對業(yè)務及平臺的具體價值。本文內(nèi)容根據(jù)演講視頻以及PPT整理而成,希望對你有所助益。 大家好,我是門德亮,很榮幸,我正好見證了優(yōu)酷從沒有MaxCompute到有的,這樣一個歷程,我們正好是在快到5年的時候,做了從Hadoop到MaxCompute的這樣一個升級。 2016年5月到2019年5月優(yōu)酷的發(fā)展歷程。整個用戶數(shù),還有表的數(shù)據(jù),實際上是呈指數(shù)式增長的。但是在2017年5月,當優(yōu)酷完成了整個Hadoop遷移MaxCompute后,優(yōu)酷的計算消耗,還有儲存的消耗實際上是呈下降趨勢的,整個遷移得到了非常大的收益。 下面說一下優(yōu)酷的業(yè)務特點。 第一個特點是大數(shù)據(jù)平臺整個的用戶復雜度,不止是數(shù)據(jù)的同學和技術(shù)的同學在使用,還會包括一些BI同學,測試同學,甚至產(chǎn)品運營都可能去使用這個大數(shù)據(jù)的平臺。 第二個特點就是業(yè)務復雜,優(yōu)酷是一個視頻網(wǎng)站,它有非常復雜的業(yè)務場景,從日志分類上,除了像頁面瀏覽,還會有一些播放相關(guān)的數(shù)據(jù)、性能相關(guān)的數(shù)據(jù)。從整個的業(yè)務模式上,有直播、有會員、有廣告、有大屏等這樣一些非常不一樣的場景。 第三個特點,就是數(shù)據(jù)量非常巨大,一天的日志量會達到千億級別,這是一個非常龐大的數(shù)據(jù)量,而且會做非常復雜的計算。 第四個比較有意思,不管是小公司、大公司,對成本的意識是非常高的。優(yōu)酷也是有非常嚴格的預算,包括在阿里集團內(nèi)是有非常嚴格的預算系統(tǒng)的,但是我們也經(jīng)常會去做一些重要的戰(zhàn)役,像雙十一戰(zhàn)役,像我們暑期的世界杯戰(zhàn)役,還有春節(jié)也會搞各種戰(zhàn)役。這其實對計算資源的彈性要求是非常高的。 基于上面的優(yōu)酷的業(yè)務特點,我整理了MaxCompute可以完美的支持我們業(yè)務的幾個特點。
第一個特點,簡單易用。MaxCompute有一個非常完整的鏈路,不管是從數(shù)據(jù)開發(fā),還是數(shù)據(jù)運維,包括數(shù)據(jù)集成,數(shù)據(jù)質(zhì)量的管控,還有整個數(shù)據(jù)地圖,數(shù)據(jù)安全。當年優(yōu)酷從Hadoop遷到MaxCompute之后,我們最大的體會是不用經(jīng)常自己半夜起來去維護集群了,不用去跑任務了,之前別人提一個需求過來,我可能要排幾周,現(xiàn)在我可以告訴他,我給你馬上跑一下,就可以出來了。包括之前像分析師BI還要登錄客戶端,寫腳本,自己寫調(diào)度,經(jīng)常會說我的數(shù)據(jù)今天為什么沒出來?包括高層看的數(shù)據(jù),可能要到12點鐘才能出來。而現(xiàn)在基本上所有重要的數(shù)據(jù)都會在7點鐘產(chǎn)出,包括一些基本的業(yè)務需求,其實分析師或者產(chǎn)品,他們自己都可以實現(xiàn)了,不需要所有需求都提到數(shù)據(jù)這邊。 第二個特點,完整的生態(tài)。優(yōu)酷在2017年之前是完全基于Hadoop的生態(tài),遷到MaxCompute之后,是基于阿里云提供的Serverless大數(shù)據(jù)服務的生態(tài)。大家可以在開源上看到的組件,在整個的MaxCompute上都是有的,而且比開源的要更好用、更簡單。從架構(gòu)圖上可以看到,我們中間是MaxCompute,左側(cè)依賴的Mysql、Hbase、ES、Redis這些都是由同步中心去做一個雙向的同步。右側(cè)會有資源管理、資源監(jiān)控、數(shù)據(jù)監(jiān)控,包括數(shù)據(jù)資產(chǎn),還有一些數(shù)據(jù)規(guī)范。我們下層的數(shù)據(jù)輸入,包括一些集團的采集工具,再往上邊,有提供給開發(fā)人員用的DataWorks,包括一些命令行的工具,有提供給BI人員用的QuickBI及數(shù)據(jù)服務。 第三個特點,強悍的性能,MaxCompute支撐了優(yōu)酷EB級的數(shù)據(jù)存儲,千億級的數(shù)據(jù)樣本分析,包括千億級的數(shù)據(jù)報表,10W級實例的并發(fā)、任務。這些在之前維護Hadoop的時候,是想都不敢想的。 第四個特點,資源使用的彈性。我們在2016年遷移之前,其實優(yōu)酷的Hadoop集群規(guī)模已經(jīng)達到了一千多臺,這個當時還是一個比較大的規(guī)模。當時我們遇到了很多問題,包括像NameNode 這種內(nèi)存的問題,機房沒有辦法再擴容的問題,當時是非常痛苦的,包括一些運維管理上面的問題。我們不斷地去問運維要資源,運維說你們已經(jīng)花了資源,多少錢。我們面臨的問題是計算資源如何按需使用,夜里的作業(yè)很多,到了午后,整個集群都空下來了,沒有人用,造成了浪費。其實MaxCompute完美地解決了這個問題。 第一個,它是按用量計費的,不是說給你多少臺機器,就收你多少錢,是你用了多少資源收多少錢的,在成本上來說,比自己去維護集群,可能是一個砍半(降50%)的收益。 第二個,實際上MaxCompue計算資源是可以分時的,比如說生產(chǎn)隊列,凌晨的時候會調(diào)高一些,保證報表能夠盡快出來。到白天時候,讓開發(fā)的計算資源高一些,可以讓分析師、開發(fā)去臨時跑一些數(shù)據(jù),會更順暢一些。 第三個,MaxCompute快速的擴容能力,比如說突然有一個比較強的業(yè)務需求,發(fā)現(xiàn)數(shù)據(jù)跑不動了,計算資源不夠,所有的隊列都堵死了,這個時候其實可以直接跟運維說一聲,幫忙一鍵擴容,兩秒鐘敲一個命令就搞定了。這樣,所有的資源可以迅速地消化下去。 這張圖實際上是優(yōu)酷,包括可能現(xiàn)在阿里集團內(nèi)部一些非常典型的技術(shù)架構(gòu)圖。中間可以看到,MaxCompute在中間核心的位置,左側(cè)主要是一個輸入,右側(cè)是一個輸出的趨向,綠色的線是一個實時的鏈路,包括現(xiàn)在我們從整個的數(shù)據(jù)源上,比如DB也好或者服務器的本地日志Log也好,我們通過TT&Datahub存儲到MaxCompute上面做分析。當然現(xiàn)在非?;鸬腇link實時計算,其實是作為一個實時處理的鏈路。 包括DB的同步,除了實時的鏈路,DB也會去通過按天/按小時,把數(shù)據(jù)同步到MaxCompute,數(shù)據(jù)計算結(jié)果也可以同步到Hbase、Mysql這種DB上面。再通過統(tǒng)一的服務層對應用提供服務。下面這個是機器學習Pai做的一些算法訓練,再把訓練的結(jié)果通過OSS傳到一個算法的應用上面去。 這張圖可能也是業(yè)界比較流行的一個數(shù)倉分層的圖,因為我們這邊是數(shù)據(jù)中臺,所有的數(shù)據(jù)都是統(tǒng)一從ods層cdm層,然后ads層,去一層一層地往上去做精細,再到最上面,通過接口服務、文件服務、SQL服務,去提供多樣化的服務。再往上面,提供對內(nèi)的一些數(shù)據(jù)產(chǎn)品,對高管、對小二,可能還有一些對外的,比如說像優(yōu)酷的播放數(shù),包括熱度這些對應用的數(shù)據(jù)。 這張圖其實就是我們從Hadoop遷到MaxCompute平臺上以來,兩個非常經(jīng)典的案例。我們通過數(shù)據(jù)中臺對不同場景的用戶打通,來去賦能到兩個不同的場景,提升業(yè)務價值。 第二個,可能是內(nèi)部的,我們通過優(yōu)酷,還有集團內(nèi)部的一些BU去做換量,我們通過統(tǒng)一的標簽去做樣本放大,把優(yōu)酷的量導給其它的BU,把其它BU的量導給優(yōu)酷,這樣去達到一個共贏的效果。 這張圖是大部分互聯(lián)網(wǎng)公司不太會涉及到的,就是關(guān)于反作弊的問題。這個是我們在MaxCompute做的一個反作弊的架構(gòu),通過原始的數(shù)據(jù)去提取它的特征,然后再通過算法模型,包括機器學習、深度學習、圖模型去支持流量反作弊、渠道反作弊等等。再通過業(yè)務場景上反作弊的監(jiān)控工具,把監(jiān)控到的作弊信息去打一個黑白樣本,再把這個黑白樣本跟特征一起來不斷地迭代優(yōu)化算法模型。同時針對算法模型,做一個模型的評價,不斷來完善反作弊體系。 最后一點,其實還是跟成本相關(guān),在日常使用中,一定是有小白用戶或者一些新來的用戶去錯誤地使用或者不在乎地使用一些資源,比如經(jīng)常會有一些實習生或者是非技術(shù)的同學,如分析師,一個SQL消費比較高,這個其實是非常浪費資源,而且可能他一個任務,讓其他所有人的任務都在這兒等著排隊,實際上我們會去對整個的資源做一個治理。 從節(jié)點的粒度上,通過大數(shù)據(jù)來治理大數(shù)據(jù),我們可以算出哪些表產(chǎn)出來之后,多少天沒有被讀取的,包括它的訪問跨度可能沒有那么大的,我們會去做下線或者去做治理,有一些業(yè)務場景可能并不是非常的重要或者它的時間要求沒有那么高,比如一些算法訓練,可以去做一些錯峰的調(diào)度,保證水位不要太高。從MaxCompute任務的角度,可以算出哪些任務有數(shù)據(jù)傾斜、哪些數(shù)據(jù)可能會有相似計算,哪些任務需要去做MapJoin,哪些任務需要去做一些裁剪,然后來節(jié)省它的IO。還有哪些任務會去做暴力掃描,掃一個月、掃一年的數(shù)據(jù),哪些數(shù)據(jù)可能會有這樣一個數(shù)據(jù)膨脹,比如說它做了CUBE之類的這種復雜計算,一些算法模型的迭代;我們通過數(shù)據(jù)計算出來的這些跡象,去反推用戶,來去提高它的這樣一個數(shù)據(jù)的質(zhì)量分,來去達到我們降低整個計算資源的目的。 在計算平臺的角度,我們也持續(xù)地在使用MaxCompute推出的一些非常高級的用法,比如我們這邊的HBO、Hash Cluster、Aliorc; 第一個,HBO就是我們基于一個歷史的優(yōu)化,這樣避免了用戶不知道怎么調(diào)參,我可能為了自己任務快一點,就調(diào)一個特別大的參數(shù),這樣的話,對集成的資源是非常浪費的。通過這個功能,用戶就不用去調(diào)參數(shù),集群自動調(diào)好,用戶就寫好自己業(yè)務邏輯就好了。 第二個,可能就是最近兩年推出的Hash Cluster,當時在使用Hadoop的時候經(jīng)常會出現(xiàn),兩個大表Join的時候計算不出來,這個Hash Cluster其實是一個優(yōu)化的利器。大表跟小表Join,可以做一些分發(fā),做一些優(yōu)化。大表跟大表就涉及到一個排序的問題。這個Hash Cluster,實際上就是提前把數(shù)據(jù)排好,中間省掉很多計算環(huán)節(jié),來達到效率提升的目的。 第三個,Aliorc,在一些固定的場景上面,可以穩(wěn)定的提升20%的計算效率。 第四個,Session。對一些比較小的數(shù)據(jù),直接就放到SSD或緩存里面,一個節(jié)點下游有100個葉子場景,是非常友好的,因為低延遲秒出結(jié)果。同時,優(yōu)酷也在使用Lightning解決計算加速,這個是在一個計算架構(gòu)方案上的優(yōu)化,它是一個MPP的架構(gòu)。 最后一頁是存儲的優(yōu)化,因為像一些關(guān)鍵的原始數(shù)據(jù)或者是需要審計的數(shù)據(jù)是不能刪的,永久不能刪的。實際上就會造成我們數(shù)據(jù)存儲的趨勢是一直往上不減的,計算會在某一個時間點達到一個平衡。當前用這么多的計算資源,再往后,其實應該也不會再大漲了,比如說舊的業(yè)務邏輯下掉了,會換新的業(yè)務邏輯,這樣會保持在一個相對平穩(wěn)的波動上面。 但是儲存,因為它有一些歷史的數(shù)據(jù)是永遠不能刪的,可能會出現(xiàn)一直在增長,而且是指數(shù)級的。所以我們也會持續(xù)關(guān)注存儲的情況,還是通過大數(shù)據(jù)來治大數(shù)據(jù),去看哪些表的訪問跨度比較小,來去做生命周期的優(yōu)化,來去控制它的增速。還有剛才提到的Aliorc,實際上也是做壓縮的。我們會去做一些大字段的拆分,來提高壓縮的比例。 作者:阿里技術(shù) |
|