姚俊伍 江蘇省廣播電視總臺新媒體事業(yè)部
基于Hadoop的IPTV大數(shù)據(jù)解決方案
姚俊伍 江蘇省廣播電視總臺新媒體事業(yè)部
Hapdoop是目前大數(shù)據(jù)領(lǐng)域最為通用的技術(shù)平臺。本文對Hadoop的技術(shù)架構(gòu)和特點進(jìn)行了綜述,重點介紹了HDFS和MapReduce實現(xiàn)原理,并結(jié)合工作實際,提出了一種基于Hadoop的IPTV大數(shù)據(jù)的解決方案。
大數(shù)據(jù) Hadoop HDFS MapReduce 解決方案
據(jù)統(tǒng)計,2016年全國IPTV用戶已達(dá)到7800萬戶左右,2017年將有可能突破一億戶,IPTV成為了近年來廣電發(fā)展最為迅速的業(yè)務(wù)之一。在業(yè)務(wù)迅速發(fā)展的背后,大數(shù)據(jù)起到了不可忽視的作用。通過大數(shù)據(jù)分析,能夠主動性的適應(yīng)用戶收視的要求,摸準(zhǔn)用戶的使用習(xí)慣,挖掘用戶潛在需求,盡可能的提升業(yè)務(wù)的ARPU值,推動IPTV業(yè)務(wù)的持續(xù)發(fā)展。
IPTV的大數(shù)據(jù)分析,主要是對IPTV用戶行為進(jìn)行分析。每個用戶每天有近幾十次的行為發(fā)生,在這些行為中包括直播、點播、時移、回看等相關(guān)的行為,每天有近60%的用戶在線,每天用戶行為的發(fā)生主要密集在晚間時段,在用戶行為的高峰期有近千萬的用戶行為在線。在這樣的用戶行為的背景下,以300萬IPTV用戶規(guī)模來說,每天有近三千萬條的用戶行為數(shù)據(jù)記錄,產(chǎn)生近3G的log行為數(shù)據(jù)日志。
對于這么大的數(shù)據(jù)進(jìn)行統(tǒng)計與分析,在用戶可接收的時間內(nèi)反饋結(jié)果,對于系統(tǒng)的計算、存儲和查詢提出了前所未有的要求,傳統(tǒng)方式的系統(tǒng)結(jié)構(gòu)和數(shù)據(jù)處理方式已不能滿足需求。
Hadoop是Apache軟件基金會旗下的一個開源分布式計算平臺。Hadoop基于Java開發(fā),為應(yīng)用程序提供一組穩(wěn)定可靠的API接口,它具有高可用性、高容錯性和高可擴(kuò)展性等優(yōu)點。用戶可以在完全不了解底層實現(xiàn)細(xì)節(jié)的情形下,開發(fā)適合自身應(yīng)用的分布式程序。
Hadoop由HDFS、MapReduce、HBase、Hive和ZooKeeper等組成,其中HDFS(Hadoop Distributed File System)和MapReduce引擎為最基礎(chǔ)、最重要的兩個組成元素,
Hadoop比較適合解決大數(shù)據(jù)問題,很大程度上也是依賴HDFS和MapReduce引擎。
(1)分布式文件系統(tǒng)(HDFS)
分布式文件系統(tǒng)(HDFS)為底層用于存儲集群中所有存儲節(jié)點文件的文件系統(tǒng),它可以構(gòu)建從幾臺到幾千臺由常規(guī)服務(wù)器組成的集群,并提供高聚合輸入輸出的文件讀寫訪問。
圖1 分布式文件系統(tǒng)體系架構(gòu)圖
如圖1所示,Namenode是一個中心服務(wù)器,負(fù)責(zé)管理文件系統(tǒng)的namespace和客戶端對文件的訪問;Datanode在集群中會有多個,一般是一個節(jié)點存在一個,負(fù)責(zé)管理其自身節(jié)點上它們附帶的存儲。在內(nèi)部,一個大文件分成一個或多個block,這些block存儲在Datanode集合里。Namenode執(zhí)行文件系統(tǒng)的namespace相關(guān)操作,例如打開、關(guān)閉、重命名文件和目錄,同時決定了block 到具體 Datanode 節(jié)點的映射 。 Datanode 在Na-menode的指揮下進(jìn)行block的創(chuàng)建、刪除和復(fù)制。單一節(jié)點的Namenode大大簡化了系統(tǒng)的架構(gòu)。Namenode負(fù)責(zé)保管和管理所有的HDFS元數(shù)據(jù),因而在請求Namenode得到文件的位置后就不需要通過Namenode參與而直接從Datanode進(jìn)行。為了提高Namenode的性能,所有文件的names-pace數(shù)據(jù)都在內(nèi)存中維護(hù),所以就天生存在了由于內(nèi)存大小的限制導(dǎo)致一個HDFS集群的提供服務(wù)的文件數(shù)量的上限。
(2)MapReduce引擎
MapReduce引擎是一個軟件框架,基于該框架能夠容易地編寫應(yīng)用程序,這些應(yīng)用程序能夠運行在由上千個商用機(jī)器組成的大集群上,并以一種可靠的、具有容錯能力的方式并行地處理上TB級別的海量數(shù)據(jù)集。
MapReduce采用“分而治之”的思想對大數(shù)據(jù)進(jìn)行分析。Mapper負(fù)責(zé)“分”,即把復(fù)雜的任務(wù)分解為若干個“簡單的任務(wù)”來處理。“簡單的任務(wù)”包含三層含義:一是數(shù)據(jù)或計算的規(guī)模相對原任務(wù)要大大縮??;二是就近計算原則,即任務(wù)會分配到存放著所需數(shù)據(jù)的節(jié)點上進(jìn)行計算;三是這些小任務(wù)可以并行計算,彼此間幾乎沒有依賴關(guān)系。Reducer負(fù)責(zé)對Map階段的結(jié)果進(jìn)行匯總。
MapReduce的整個工作流程主要分為四個步驟,首先由客戶端來提交MapReduce作業(yè);接下來通過jobtracker來協(xié)調(diào)作業(yè)的運行;然后由tasktracker來處理作業(yè)劃分后的任務(wù);最后通過HDFS在其它實體間共享作業(yè)文件。
圖2 MapReduce調(diào)用實例
如圖2所示,是MapReduce的一個過程,實例任務(wù)是計算某個文件中指定單詞出現(xiàn)的次數(shù),從圖中我們可以看出這個任務(wù)被分裂成三個子任務(wù)后映射到集群中JobTracker指定的TaskTracker上運行子任務(wù),每個子任務(wù)都可以在指定的TaskTracker上運行,把運行的結(jié)果保存在當(dāng)?shù)?,然后Reduce程序被調(diào)用。最后進(jìn)行的是結(jié)果的整合,整合完畢后得到最終的結(jié)果。
(1)MPP并行關(guān)系型方案
多個獨立的關(guān)系數(shù)據(jù)庫服務(wù)器,訪問共享的存儲資源池。
優(yōu)勢:采用多個關(guān)系數(shù)據(jù)庫服務(wù)器、多個存儲,與原有的架構(gòu)相比擴(kuò)展了存儲和計算的能力。
劣勢:計算與存儲分離,數(shù)據(jù)訪問存在競爭和帶寬瓶頸;支持的關(guān)系數(shù)據(jù)庫服務(wù)器數(shù)量有限;只能向上擴(kuò)展不能橫向擴(kuò)展。
(2)Hadoop分布式方案
有大量獨立的服務(wù)器通過網(wǎng)絡(luò)互連形成集群,每臺服務(wù)器有獨立的存儲。
優(yōu)勢:計算與存儲融合,支持橫向擴(kuò)展,有更好的擴(kuò)展性;
劣勢:解決數(shù)據(jù)沖突時,需要節(jié)點間協(xié)作。MPP與Hadoop的方案對比如下表所示:
表1 軟件架構(gòu)(擴(kuò)展性)
表2 數(shù)據(jù)模型
表3 分析方式
根據(jù)Hadoop的特點,采用“分層設(shè)計”的思想,設(shè)計了一種IPTV大數(shù)據(jù)系統(tǒng)的軟件邏輯架構(gòu)。如圖3所示,從下到上為數(shù)據(jù)源接口層、計算層、存儲查詢層和產(chǎn)品層。
圖3 IPTV大數(shù)據(jù)系統(tǒng)的軟件邏輯架構(gòu)
(1)數(shù)據(jù)源接口層 獲取采集系統(tǒng)收集的數(shù)據(jù),對數(shù)據(jù)進(jìn)行清理,并對數(shù)據(jù)進(jìn)行任務(wù)分擔(dān),分給不同的計算服務(wù)設(shè)備。
(2)計算層 完成計算任務(wù),形成結(jié)果,存儲系統(tǒng)的中間過程數(shù)據(jù),系統(tǒng)支持新增設(shè)備的平滑增加和任務(wù)的負(fù)載均衡。
(3)存儲層和查詢層 負(fù)責(zé)存儲計算層形成的結(jié)果數(shù)據(jù),并響應(yīng)產(chǎn)品層的查詢請求。無論是結(jié)構(gòu)化數(shù)據(jù)還是非結(jié)構(gòu)化數(shù)據(jù)以及數(shù)據(jù)流形式的數(shù)據(jù)都會存儲在此層。
(4)產(chǎn)品層 根據(jù)用戶需要對相關(guān)數(shù)據(jù)結(jié)果進(jìn)行綜合呈現(xiàn),提供可視化實時的結(jié)果進(jìn)行業(yè)務(wù)關(guān)聯(lián)。
這種分層的結(jié)構(gòu),從功能對業(yè)務(wù)進(jìn)行了分塊,同時對每一塊功能的要求進(jìn)行了分?jǐn)?,以滿足當(dāng)前各種業(yè)務(wù)的需要。為保證對于海量用戶行為數(shù)據(jù)的處理能力的要求,和根據(jù)多年數(shù)據(jù)分析挖掘的經(jīng)驗,我們在基礎(chǔ)平臺引入了云數(shù)據(jù)處理平臺。
根據(jù)系統(tǒng)的邏輯分構(gòu),系統(tǒng)的業(yè)務(wù)流程如圖4所示。在業(yè)務(wù)層面上,系統(tǒng)分為應(yīng)用層、計算層和接口任務(wù)層。系統(tǒng)數(shù)據(jù)的存儲分布在計算服務(wù)器中,以滿足系統(tǒng)對海量數(shù)據(jù)處理的要求。
(1)系統(tǒng)從網(wǎng)絡(luò)獲得原始數(shù)據(jù),通過系統(tǒng)接口存入Hadoop的Master服務(wù)器中。
(2)Hadoop平臺通過Mapreduce等操作來對數(shù)據(jù)進(jìn)行處理,Hadoop由HDFS、MapReduce、HBase、Hive和ZooKeeper等成員組成,其中最基礎(chǔ)最重要的兩種組成元素為底層用于存儲集群中所有存儲節(jié)點文件的文件系統(tǒng)HDFS(Hadoop Distributed File System)和上層用來執(zhí)行MapReduce程序的MapReduce引擎。
圖4 IPTV大數(shù)據(jù)系統(tǒng)業(yè)務(wù)流程
(3)Hadoop將運算結(jié)果輸出到結(jié)果呈現(xiàn)平臺,在Oracle數(shù)據(jù)庫中存儲結(jié)果數(shù)據(jù),并向外提供查詢接口。
(4)WEB展示頁面負(fù)責(zé)數(shù)據(jù)的呈現(xiàn)與結(jié)果查詢
江蘇廣電總臺IPTV大數(shù)據(jù)系統(tǒng)根據(jù)以上設(shè)計思路得以實現(xiàn)。該系統(tǒng)應(yīng)用Hadoop分布式架構(gòu),能夠?qū)Υ罅繑?shù)據(jù)進(jìn)行分布式處理,并能維護(hù)多個工作數(shù)據(jù)副本,確保能針對失敗的節(jié)點重新分布處理;能通過并行的方式工作,加快處理速度,處理PB級數(shù)據(jù);能夠自動檢測和補(bǔ)償任何服務(wù)器上出現(xiàn)的硬件或系統(tǒng)問題,可以隨時添加或刪除平臺群集中的計算服務(wù)器;采用HDFS分布式存儲,運用了shell文本計算方式,可根據(jù)系統(tǒng)運行經(jīng)驗和清洗規(guī)則的變化對系統(tǒng)算法作出方便、靈活的修改;它本身是沒有License限制的,能以較低成本實現(xiàn)硬件擴(kuò)充。該大數(shù)據(jù)系統(tǒng)目前運行穩(wěn)定,實現(xiàn)了對江蘇地區(qū)IPTV用戶行為數(shù)據(jù)的統(tǒng)計分析,可以按照直播、點播、回看、訂購等多個緯度進(jìn)行系統(tǒng)性分析,按周、月等自動生成報表,為節(jié)目采購、編排,市場運營提供了科學(xué)的指導(dǎo)。
經(jīng)快速發(fā)展,Hadoop成為了目前大數(shù)據(jù)分析領(lǐng)域中應(yīng)用最廣泛的一種分布式架構(gòu)。Hadoop提供了強(qiáng)大的計算能力,覆蓋各行各業(yè),幾乎任何垂直領(lǐng)域。
從行業(yè)整體的發(fā)展來看,目前只是剛剛意識到了大數(shù)據(jù)的重要性,聚焦點還在于數(shù)據(jù)的統(tǒng)計和分析,而大數(shù)據(jù)更大的價值在于預(yù)測。伴隨著需求的進(jìn)一步升級,大數(shù)據(jù)解決所依賴的Hadoop技術(shù)的發(fā)展和完善將是剛剛開始,未來仍舊不可估量。