視頻網站的Big Data解決之道
概述
優酷作為一家大型視頻網站,擁有海量播放流暢的視頻。我們秉承注重用戶體驗這一產品技術理念,將絕大部分存儲用在視頻資源上。通過建設專用的視頻CDN,建立了可自由擴展、性能優異的架構,在提供更好用戶體驗的同時優化了存儲資源。在除視頻資源外的其他方面,我們也累積了海量數據:僅運營數據,每天收集到的網站各類訪問日志總量已經達到TB級,經分析及壓縮處理后留存下來的歷史運營數據已達數百TB,很快將會達到 PB級,5年后數據量將會達到幾十PB級。
如何更好地處理和分析這些海量數據,以挖掘出其中的價值?
挖掘數據中的價值
對企業來說,尤其是對于為用戶提供服務的行業,僅提供基礎服務已經越來越難應付日趨細化的商業模式。如何為用戶提供差異化的優質服務成為這類企業必須解決的問題。而數據好比燈塔,能為企業指引前進的方向。互聯網、電信、金融等行業都在加大數據的探索及應用力度,這為企業創造了可觀的經濟效益。
對優酷而言,通過用戶的每次播放流程,我們都對頁面瀏覽、評論收藏、視頻播放以及播放時的各種操作進行了記錄。經處理后的分析結果會反饋給不同的業務模塊,對包括產品、內容運營、用戶的個性化推薦及廣告投放等方面的提升,都起到了關鍵作用。
網站頁面、客戶端的UI/UE的設計及效果,都需要數據進行支持。通過A/B測試系統,我們收集到用戶對不同UI下的操作反饋,進而評估UI的改變對用戶的影響。
內容方面,通過對用戶網絡情況的統計:每次播放是否發生了緩沖,平均下載速度是多少等,進行實時的統計和計算,獲取每個地區每個運營商下用戶的加載表現,以此來決定CDN節點的分布和分配策略,為不同地區、不同運營商的用戶提供清晰流暢的視頻服務。
在推薦方面,通過對大量視頻播放行為的分析,歸納不同時長、不同類型、不同內容的視頻之間的相互關聯,挖掘不同人群用戶的同質化觀看習慣,對每次用戶的觀看進行有針對性的后續推薦,并借助后續數據的分析,迭代地改善現有服務,為用戶提供量身定制的推送服務。
數據對于優酷的廣告精準投放也起到了重要作用。優酷的廣告系統支持對不同地域、頻道、標簽及人群等條件的定向投放。在投放策略上,我們本著盡可能不影響用戶體驗的原則,對于廣告長度及投放頻次都進行了限制。雖然這給投放造成了較大難度,但通過對各種細粒度的定向條件組合歷史數據進行的分析,我們在廣告投放方面已經相當準確。在投放階段,我們實時分析用戶屬性、訪問情況及當前廣告投放量,對每次投放動態調整。
技術架構
下面以優酷的運營數據為例介紹我們的海量數據解決之道。我們的運營數據包括播放、用戶交互、搜索、廣告等,目前總計達數百TB,它們存儲在數百臺服務器上。我們主要使用的是內部專門開發的輕量級的分布式存儲及數據分析框架,應用于一百臺左右的服務器集群,目前仍在使用。另外我們搭建了一個1000個 Slot的Hadoop集群,并還在繼續擴展。考慮到維護成本及擴展性,未來我們會將全部業務遷移到Hadoop平臺上,以降低維護成本。另外基于 Hadoop及其上層的HBase、Hive等數據存儲產品,我們會開發出一套數據處理框架,應用于整個數據處理系統。
圖1 運營數據處理技術架構
如圖1所示,根據業務類型的不同,我們收集到日志之后,按照不同時間策略先對數據進行清洗。不失真的原始日志,按規定的格式直接以文件的形式存儲在Hadoop上,數據清洗轉換后的中間結果,會存儲在Hive數據倉庫上;而一些粗粒度的匯總數據,則寫到MySQL、HBase等數據庫中。
每天優酷的日常數據處理任務多達數百個,對時效性要求不同,任務的執行策略也不同。需要準實時查詢的,我們可以提供延遲10分鐘的數據;其他任務也根據優先級及緊急程度安排調度,而執行中的資源的分配由系統動態調整。
NoSQL探索之路
層出不窮的NoSQL技術,無疑是現在極其熱門的領域,依托高可用性、高水平擴展性、高效存取及支持MapReduce等特性使其在應對Web2.0網站時比關系型數據庫更加得心應手。
目前優酷大量數據依然存儲在MySQL等平臺上,這是考慮到關系型數據庫大都經歷了長時間的實踐檢驗,比較成熟,遵循相同標準,能獲得較好的支持。而且,主流關系型數據庫也都積極嘗試從海量數據等方面改進產品。此外,NoSQL分Key-Value、document、column、圖等多種類型,特性各不相同,這種總稱屏蔽了彼此之間的差異;而且各NoSQL產品還在不斷變化,甚至API也有所更改,這在技術掌握上及維護上成本較高,畢竟找一個懂 MySQL及SQL的開發工程師比找一個MongoDB專家要容易得多。
盡管如此,仍阻擋不住我們對NoSQL產品進行嘗試的熱情:一方面對不同業務應用適合的產品,另一方面對同類產品也在做評估對比。目前優酷的在線評論業務已部分遷移到MongoDB,運營數據分析及挖掘處理我們在使用Hadoop/HBase;在Key-Value產品方面,我們也在尋找更優的 Memcache替代品,如Redis,相對于Memcache,除了對Value的存儲支持三種不同的數據結構外,同一個Key的Value進行部分更新也會更適合一些對Value頻繁修改的在線業務;同時我們在搜索產品中應用了Tokyo Tyrant;對于Cassandra等產品我們也進行過研究。可以說,我們會一直持續關注NoSQL技術,未來可能會根據需要選擇合適的產品應用到實際業務中。
目前NoSQL技術依然處于發展階段,只有少數蘊涵優秀的技術,并最終幸免淘汰,與其他數據解決方案一起生存下來,未來也許會有新的NoSQL產品出現。開發人員,尤其是各大公司的技術團隊在使用NoSQL項目的同時,根據使用經驗,會對一些針對特定使用場景的特性及服務加以抽象并實現,形成類似于基于Hadoop平臺的Pig這類衍生項目。在這方面未來的發展潛力是巨大的,比如在BI領域,目前的NoSQL產品與現有BI產品幾乎沒有交集。將來一些NoSQL產品應該能夠通過現有主流BI產品直接訪問,或者提供自己的BI模塊。類似的功能也許會形成新的標準,顛覆現有開發模式。
機遇大于挑戰
海量數據時代對企業的影響,并非直接來自數據,而在于社會的飛速進步及不斷涌現的商業模式。2007年,微軟CEO鮑爾默說,Google公司現在幾乎是每年翻一番。優酷從起步,到刷新5年多來美國IPO最大漲幅紀錄,只用了短短4年時間。而隨著變革速度不斷加快,各企業掉隊落伍的可能性已明顯增大。從海量數據中挖掘潛在價值,分析行業趨勢,在短時間內更新業務模式,優化產品和服務,提升核心競爭力,將是企業需要持續解決的課題。
隨著數據量越來越大,并行計算得到了越來越普遍的應用,新技術的產生使得技術選擇多元化,學習成本有所提高;同時,在學習之后的應用階段,開發、測試及維護成本都大大降低,數據分析、挖掘及BI領域依舊會得到成型軟件的支持。因此,海量數據時代的技術人員,機遇反而大于挑戰:一方面需要從關注開發細節,轉而關注各種新技術的特性;另一方面應該具備更深的業務抽象能力。只有具備這樣的綜合能力,才能讓技術發揮更大的價值。
展望
目前,企業所掌握的數據,還遠沒有達到最細的粒度,隨著技術的發展和設備的廉價化,未來企業能夠收集到的數據還將呈非線性增長。能夠為運營提供支持的新維度、新指標也會被繼續發掘出來。分析的難度隨著維度和指標的增多不斷加大,傳統的數據挖掘及BI產品將越來越難滿足需求。
在應對海量數據的計算模型方面,目前MapReduce成為主流,大多數平臺和產品都在應用MapReduce。而未來,也許會有更好的或者針對特定領域更好的計算模型出現。目前Google在圖處理方面,已在使用Pregel模型;Yahoo!也在開發新一代的MapReduce模型,以期從可靠性、可用性、可擴展性、向后兼容、延遲及集群利用等方面,對現有模型進行改進。這類改進會進一步提高海量數據的計算效率。
并行計算及分布式系統未來的產品線應會不斷豐富。風靡一時的Hadoop并非完美,高吞吐量造成的高延遲、處理時的資源浪費等,也都會是使用者需要考慮的問題。會不會有替代品出現,讓我們拭目以待。
對于具體企業,不同企業可能選用不同的解決方案。一些中小企業,通過購買SaaS服務,將數據提供給第三方服務商處理。服務商通過對多家同行企業的數據分析,尋找共性,再反饋給企業為其創造更大價值,實現了平臺提供者和使用者的雙贏。另外一些企業會通過租用PaaS及IaaS服務的方式,將相對不敏感的數據放到公有云上處理,以節約設備采購及維護成本。對于企業的敏感數據,會通過建立私有數據中心,搭建私有云來處理,而同時也會考慮用公有云平臺進行互補。最終結果,數據會向一些大的節點集中,而大的節點也更有能力從掌握的海量數據中挖掘有用信息。這些信息通用性強的部分會被共享出來,服務于社會。
對于優酷來說,仍處于飛速發展階段,已經在考慮未來自建數據中心,提高數據處理能力,從網站的運營中發掘出更多信息,為用戶提供更好的視頻服務。
【編輯推薦】