Hulu,因為尚未進入中國,知道它的人遠不如知道YouTube和優酷、土豆。而在美國,Hulu已經將Google Video擠出局成為全美排名第10的視頻網站。今天,來自Hulu,負責大數據團隊基礎架構開發的梁宇明老師,將為我們分享Hulu的Spark On YARN之路。
梁宇明, 2010年從清華大學自動化系畢業加入Hulu。在Hulu做過多個團隊的開發,最早是在搜索團隊,后來負責在Mobile和Media Room Device設備上的開發。之后負責了在Hulu的大數據構建工作。
梁宇明在51CTO舉辦WOT峰會,分享《Spark On YARN in Hulu》Hulu大數據平臺是research團隊構建算法,深度理解用戶需求的重要基礎。本講主要介紹Hulu大數據平臺架構,Spark On YARN在Hulu的應用,以及Hulu在Docker + YARN上的探索。
演講PPT官方下載地址:http://down.51cto.com/data/1634397
[[118648]]
Hulu高級研發主管 梁宇明
記者:我們也知道Hulu是個視頻網站,它其實更多的是面向美國的用戶,它在中國的研發團隊,在Hulu整個集團當中擔任什么樣的角色?
梁宇明:Hulu北京的研發團隊是Hulu***的研發團隊,Hulu一共有三個研發團隊,分別位于洛杉磯、西雅圖還有北京,其中北京是***的研發團隊,北京研發團隊以做一些research相關的工作為主,同時也做一些,為research提供一些基礎視頻架構,同時也會有一些其他的開發。

Hulu技術框架
記者:提到大數據,大數據現在很火,我們想知道在Hulu網站架構體系下,大數據整個技術應用大概分為幾部分?
梁宇明:我覺得可以從歷史上去看待這個問題,就是Hulu的歷史上,大數據的發展應該分為兩個階段,***階段主要是用做收集一些數據進行reporting,這個相對來說流程比較清晰一些,ingested一些數據,把這些數據在HDFS中生成出來導入到Hive中。然后在中間過程中我們會有自己的叫做Hulu in Spark,這是一條線。在這條線完成一定時間之后的話,我們注意到說為了更好地服務research方面的需要,特別是research希望通過一些機器學習的方法從數據中挖掘一些價值,那么已有的這些處理方法就不可行了。在這個基礎之上,我們發展出了大數據的第二條業務線,也就是我現在負責的團隊,它主要做的一件事情是說考慮到research體系的一個整個的生命周期,比如說以機器學習的方法解決一些用戶關心的問題大概分為幾大步驟,***個步驟是說獲取用戶的行為,在用戶的行為生成一些特性,延伸出一些模型,***被用作在線的一些服務中。我的團隊在第二階段做的主要的事情是說把離線的這部分和在線的這部分做起來,主要通過實現了一個Lamda的方式去做出來的。在這個基礎之上,我們有一些問題沒有解決就是research怎么樣獲取團隊和生成這個模型的過程,這個過程我們主要是通過基于Spark On YARN這樣的體系,然后一起以及上面構筑的library來實現的。
記者:你剛才也提到Spark,我們也知道在Hulu團隊當中是用的Docker + YARN的方式來做Spark方面的事情。
梁宇明:我可能想稍微修正一下,就是在Hulu內部Spark On YARN和Docker On YARN是分開的兩部分,然后我們在Spark方面的主要的應用有兩方面,***方面是Spark Streaming,這個主要是用作我們實時展現的一些基礎的部件,另外一部分主要是給research團隊去寫一些他們的算法,實現一些并行化算法更方便的,用來替代一些原本Mapreduce的程序,這是Spark On YARN這部分。Docker On YARN這部分是用來解決一個完全不同的問題的,我們之所以用Docker on YARN是因為在Hulu有一些research寫出來的程序,它們的環境依賴極其復雜,很難通過一個Mapreduce這樣的程序或者Spark程序表現出來。比如說就像有一些計算機視覺的色彩,依賴了很多外部類,有很多的C++或者是C的代碼,這樣的話,環境特別復雜,又很難用Mapreduce方式展現出來。我們可以做的一件事情就是說我們把這個程序以及它的環境整個通過Docker打包成一個Docker Image,這樣子的話就相當于一個小型的攝影機,所有的東西都在里面了。有了這個東西就我們相當于生成了一個超級可執行體,把這個執行體放在任何地方都可以執行的,至少我們就考慮到怎么樣把它并行化,在并行化的過程當中就怎么樣把Docker Image分化到不同的機器中去,特別是分化到一些含有公共資源的機器中去。然后怎么去解決這個問題呢?我們考慮到我們內部的話,已經把Mapreduce生成了很大的集群,然后我們希望說把Docker同樣放在這樣一個集群中去運行,這樣的話我們可以做到自由的利用,這是我們做Docker On YARN的原因。

Hulu的Doceker on Yarn
記者:你剛才也提到資源的優化,如果說是采用這種架構,有多大的改進?
梁宇明:具體的數字我很難描述,但是我可以具體說一件這樣的事情。比如說以前的話,做一些計算機視覺的東西和編程化處理的話就要提前部署十臺機器,這十臺機器大環境都已經部署好了,然后這十臺機器主要用作臉部視覺處理這一件事情,除了這件事情以外它平常都是空閑的,如果把它放在我們的集群中呢,就屬于如果你在不做這件事情的時候,你的計算機就會被其他的程序利用,這個就會好很多,這個可以避免說比申請一堆閑置的機器在那里,沒有特別好的資源利用率。我在51CTO的WOT峰會上,主要是分享在Spark On YARN的部署以及開發的過程當中遇到的一些問題,因為我們在最早的時候,把Spark On YARN的時候,就是因為我們用的Hadoop發行版本跟Spark其實不兼容的,然后我們做了一系列的處理。之后在Spark中,因為Spark現在的發展還有不如Mapreduce的地方,在整個的應用過程當中還會碰到一些各種各樣的問題,然后我就會去分享一下,在這個過程當中我們遇到什么樣的問題,以及怎么樣解決它,希望對大家有所幫助。
記者:那***有一個問題,Spark也是大家很看好的新興技術,你對于它未來,比如說今年或者明年Spark大概的展望或者希望。
梁宇明:我個人是非常看好Spark這項技術的,我覺得它在未來的體系當中將扮演更重要的角色,然后再逐步的替換掉一些Mapreduce以前所做的工作,我覺得這是一個大勢所趨。
【責任編輯:
彭凡 TEL:(010)68476606】