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