一種大數(shù)據(jù)中流計(jì)算平臺(tái)下的點(diǎn)對(duì)點(diǎn)流媒體實(shí)時(shí)監(jiān)測(cè)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明是給出一種基于分布式架構(gòu)的點(diǎn)對(duì)點(diǎn)流媒體進(jìn)行實(shí)時(shí)監(jiān)測(cè)的方法。分布式架構(gòu)為Hadoop系統(tǒng),點(diǎn)對(duì)點(diǎn)流媒體指的是Flash P2P數(shù)據(jù)。我們所提出的方法主要用于快速提取Flash P2P流量數(shù)據(jù),從中再提取出隱含的、未知的、潛在的和有用的信息,使分析出的數(shù)據(jù)更加具有時(shí)效性,屬于互聯(lián)網(wǎng)視頻領(lǐng)域。
【背景技術(shù)】
[0002]FLASH P2P技術(shù)是現(xiàn)在視頻網(wǎng)站用的比較成熟的技術(shù)。Flash P2P視頻點(diǎn)播系統(tǒng)使用Flash P2p技術(shù),以一種全新的方式分發(fā)點(diǎn)播視頻,在保證觀眾良好觀看體驗(yàn)的同時(shí)保證了最低的服務(wù)器負(fù)擔(dān)和帶寬使用,顯著提高視頻服務(wù)器的并發(fā)量和降低服務(wù)器和帶寬成本。目前國內(nèi)多家視頻門戶網(wǎng)站采用了Flash P2P技術(shù),例如優(yōu)酷、愛奇藝、搜狐等。
[0003]Hadoop是基于分布式技術(shù)、并行處理技術(shù)和網(wǎng)格計(jì)算技術(shù)發(fā)展的產(chǎn)物,是為了適應(yīng)用海量數(shù)據(jù)和大規(guī)模計(jì)算等新需求而發(fā)展出來的模型架構(gòu)。Hadoop也是一個(gè)分布式存儲(chǔ)和分布式計(jì)算的框架,可以高效的存儲(chǔ)海量數(shù)據(jù),而且可以運(yùn)行、編寫分布式應(yīng)用程序處理海量數(shù)據(jù)。一方面Hadoop在編寫和運(yùn)行大型分布式程序計(jì)算方面具有很大的優(yōu)勢(shì),主要是Hadoop具有的方便和簡捷的特性。另一方面,Hadoop具有健壯性和很好的擴(kuò)展性等特點(diǎn),這些特點(diǎn)使Hadoop在研究領(lǐng)域和應(yīng)用領(lǐng)域都受到了極大的歡迎,并且得到了廣泛的應(yīng)用。Hadoop的數(shù)據(jù)中心由連接在一起的千上萬的計(jì)算機(jī)構(gòu)成,用戶通過普通電腦接入就可以使用數(shù)據(jù)中心,根據(jù)自己的需求進(jìn)行存儲(chǔ)。HDFS是Hadoop的分布式文件系統(tǒng),具有高度的穩(wěn)定性和存儲(chǔ)效率。H D F S提供高效的數(shù)據(jù)存儲(chǔ),為用戶提供快速、穩(wěn)定的數(shù)據(jù)存儲(chǔ)服務(wù)。MapReduce模型是Hadoop用于計(jì)算數(shù)據(jù)的。用戶在使用MapReduce模型進(jìn)行大規(guī)模數(shù)據(jù)處理時(shí),可以將主要精力放在如何編寫Map和Reduce函數(shù)上,其它并行計(jì)算中的復(fù)雜問題諸如分布式文件系統(tǒng)、工作調(diào)度、容錯(cuò)、機(jī)器間通信等都交給MapReduce系統(tǒng)處理,在很大程度上降低了整個(gè)編程難度。
【發(fā)明內(nèi)容】
[0004]技術(shù)問題:本發(fā)明的目的是提供一種大數(shù)據(jù)中流計(jì)算平臺(tái)下的點(diǎn)對(duì)點(diǎn)流媒體實(shí)時(shí)監(jiān)測(cè)方法,來提高有關(guān)視頻的數(shù)據(jù)處理能力,更好的分析用戶行為(例如:某視頻播放次數(shù)、播放IP數(shù)、用戶地域占比),優(yōu)化網(wǎng)站內(nèi)容,更新地域的服務(wù)器占比,優(yōu)化播放內(nèi)容。
[0005]技術(shù)方案:本發(fā)明的一種大數(shù)據(jù)中流計(jì)算平臺(tái)下的點(diǎn)對(duì)點(diǎn)流媒體實(shí)時(shí)監(jiān)測(cè)方法為:工作服務(wù)器接收到作業(yè)后,將接收到的作業(yè)放在一個(gè)作業(yè)隊(duì)列里,等待作業(yè)調(diào)度器對(duì)該作業(yè)進(jìn)行調(diào)度,當(dāng)作業(yè)調(diào)度器根據(jù)自己的調(diào)度算法調(diào)度到該作業(yè)時(shí),會(huì)根據(jù)輸入劃分信息為每個(gè)劃分創(chuàng)建一個(gè)map任務(wù),并將map任務(wù)分配給任務(wù)服務(wù)器執(zhí)行;任務(wù)服務(wù)器根據(jù)主機(jī)核的數(shù)量和內(nèi)存的大小有固定數(shù)量的map槽和reduce槽為map與reduce分配任務(wù);其中,map是一種由接受一組數(shù)據(jù)并將其轉(zhuǎn)換為一個(gè)鍵/值對(duì)列表的函數(shù),reduce是一種將map函數(shù)產(chǎn)生結(jié)果合并的函數(shù);進(jìn)行map輸入時(shí),需要將數(shù)據(jù)按照規(guī)定的格式輸入;在map階段,通過篩選用戶數(shù)據(jù)報(bào)協(xié)議UDP數(shù)據(jù)報(bào),同時(shí)將篩選出后的結(jié)果進(jìn)行二次map;在map輸出階段,需要將數(shù)據(jù)結(jié)果放入至緩存區(qū);在reduce階段,通過reduce任務(wù)將所有結(jié)果進(jìn)行合并輸出。
[0006]其中:
[0007]在進(jìn)行輸入map時(shí),應(yīng)該對(duì)一個(gè)map任務(wù)應(yīng)指明輸入/輸出的位置即路徑,同時(shí)輸入目錄下的數(shù)據(jù)文件由于已經(jīng)按照每0.1s抓取所以并不需要切割,但必須將數(shù)據(jù)塊以鍵值對(duì)形式的格式讀入,這個(gè)階段的鍵值應(yīng)該為數(shù)據(jù)包類型,數(shù)據(jù)值為抓取的UDP數(shù)據(jù)包,同時(shí)map任務(wù)不是隨隨便便地分配給某個(gè)任務(wù)服務(wù)器的,這里有個(gè)概念叫:數(shù)據(jù)本地化,意思是:將map任務(wù)分配給含有該map處理的數(shù)據(jù)任務(wù)服務(wù)器上,同時(shí)將代碼程序包復(fù)制到該任務(wù)服務(wù)器上來運(yùn)行,其中作業(yè)調(diào)度器將周期性的向工作服務(wù)器發(fā)送心跳包,在心跳包中作業(yè)調(diào)度器告知工作服務(wù)器其已經(jīng)準(zhǔn)備運(yùn)行一個(gè)新的任務(wù),那么工作服務(wù)器會(huì)調(diào)動(dòng)map從Hadoop流計(jì)算平臺(tái)中獲取新的數(shù)據(jù)塊,并不需要重新獲取其他信息。
[0008]在map階段,通過map函數(shù)根據(jù)數(shù)據(jù)類型篩選出UDP數(shù)據(jù)包,生成中間鍵值對(duì),其中鍵值為UDP這個(gè)數(shù)據(jù)包類型,數(shù)據(jù)值為UDP數(shù)據(jù)包,其他數(shù)據(jù)包則被刪掉;由于需要將點(diǎn)對(duì)點(diǎn)視頻流量分離出來,需要做二次Map計(jì)算;將第一次Map中間輸出數(shù)據(jù)重新作為數(shù)據(jù),進(jìn)行二次Map,其鍵值對(duì)也會(huì)重新定義,其中鍵值為數(shù)據(jù)包的會(huì)話編碼,判斷會(huì)話編碼是否能被4整除,若可以則判斷出此包為RTMFP包,其中RTMFP為點(diǎn)對(duì)點(diǎn)視頻協(xié)議,即為點(diǎn)對(duì)點(diǎn)視頻流量數(shù)據(jù)包。
[0009]map輸出階段,輸出的結(jié)果會(huì)暫且放在一個(gè)環(huán)形內(nèi)存緩沖區(qū)中,當(dāng)該緩沖區(qū)快要溢出時(shí),會(huì)在本地文件系統(tǒng)中創(chuàng)建一個(gè)溢出文件,將該緩沖區(qū)中的數(shù)據(jù)寫入這個(gè)文件;當(dāng)緩沖區(qū)中數(shù)據(jù)的到達(dá)一定的大小,就會(huì)將數(shù)據(jù)開始寫入硬盤;在寫入硬盤之前,首先根據(jù)reduce任務(wù)的數(shù)目將數(shù)據(jù)劃分為相同數(shù)目的分區(qū),也就是一個(gè)reduce任務(wù)對(duì)應(yīng)一個(gè)分區(qū)的數(shù)據(jù);這樣做是為了避免有些reduce任務(wù)分配到大量數(shù)據(jù),而有些reduce任務(wù)卻分到很少數(shù)據(jù),甚至沒有分到數(shù)據(jù)的尷尬局面。
[0010]在Reduce階段,由于map任務(wù)一直與作業(yè)調(diào)度器保持聯(lián)系,而作業(yè)調(diào)度器又一直和工作服務(wù)器保持心跳,所以工作服務(wù)器中保存了整個(gè)集群中的宏觀信息,只要reduce任務(wù)向工作服務(wù)器獲取對(duì)應(yīng)的map輸出位置,就可以獲取輸出的map數(shù)據(jù),從而進(jìn)行reduce整合輸出。
[0011]有益效果:
[0012]1、改變了傳統(tǒng)的計(jì)算模式,縮短了計(jì)算時(shí)間,通過該系統(tǒng)能夠更加有效的監(jiān)測(cè)到用戶交互的實(shí)時(shí)數(shù)據(jù)。
[0013]2、通過該技術(shù)能夠快速分析視頻產(chǎn)生的龐大的數(shù)據(jù)量,迅速分離flash p2p流量。
[0014]3、可以在分離出的flash p2p流量中可以獲取用戶的潛藏的信息,進(jìn)行商用,為客戶創(chuàng)造更大的利益。
【附圖說明】
[0015]圖1是基于分布式架構(gòu)的點(diǎn)對(duì)點(diǎn)流媒體實(shí)時(shí)監(jiān)測(cè)框架圖,
[0016]圖2是基于分布式架構(gòu)的點(diǎn)對(duì)點(diǎn)流媒體實(shí)時(shí)監(jiān)測(cè)流程圖,
[0017]圖3是基于分布式架構(gòu)的點(diǎn)對(duì)點(diǎn)流媒體實(shí)時(shí)監(jiān)測(cè)時(shí)序圖。
【具體實(shí)施方式】
[0018]本發(fā)明旨在提出一種大數(shù)據(jù)中流計(jì)算平臺(tái)下的點(diǎn)對(duì)點(diǎn)流媒體實(shí)時(shí)監(jiān)測(cè)方法,組建基于HADOOP的實(shí)時(shí)監(jiān)測(cè)技術(shù),充分利用HADOOP的分布式的特性,將視頻實(shí)時(shí)監(jiān)測(cè)的需要巨大計(jì)算能力的數(shù)據(jù)的計(jì)算和存儲(chǔ)要求擴(kuò)展到HADOOP中的各個(gè)節(jié)點(diǎn)上,利用并行計(jì)算和存儲(chǔ)能力來進(jìn)行相關(guān)數(shù)據(jù)計(jì)算工作。系統(tǒng)通過接口獲取的數(shù)據(jù)被分割成小塊,使用HADOOP的節(jié)點(diǎn)來存儲(chǔ)、分析和處理每個(gè)小塊的數(shù)據(jù)量,處理完成后將分析好的數(shù)據(jù)反饋給服務(wù)器。
[0019]FLASH P2P協(xié)議采用的是RTMFP協(xié)議。實(shí)時(shí)媒體流協(xié)議(RTMFP)是Adobe公司開發(fā)的一種專有協(xié)議。RTMFP協(xié)議可以讓Adobe Flash Player所在的終端用戶之間實(shí)現(xiàn)直接點(diǎn)對(duì)點(diǎn),多播和任播等多種通信。其原理是節(jié)點(diǎn)之間通過DHT協(xié)議相互發(fā)現(xiàn)和連接,通過DHT((Distributed Hash Table,分布式哈希表)進(jìn)行資源的發(fā)現(xiàn)和查找,通信協(xié)議采用UDP,利用DH算法(Diffie-Hellman算法)進(jìn)行在建立連接階段進(jìn)行密鑰協(xié)商,采用AES128位在UDP層加密。在RTMFP協(xié)議中,通信時(shí),服務(wù)器將會(huì)分配給用戶一個(gè)會(huì)話編碼Sess1nid,每個(gè)用戶的Sess1nid是不同的。根據(jù)Sess1nid,可以判斷出該數(shù)據(jù)包是否為使用RTMFP協(xié)議通信的,并判斷這是否為FLASH P2P流量。
[0020]跟傳統(tǒng)的流量監(jiān)測(cè)技術(shù)相比,基于分布式架構(gòu)的點(diǎn)對(duì)點(diǎn)流媒體監(jiān)測(cè)技術(shù)有著更多的優(yōu)勢(shì)。例如,傳統(tǒng)的流量監(jiān)測(cè)技術(shù)監(jiān)測(cè)到的數(shù)據(jù)非常的龐大,人們將其運(yùn)算處理需要耗費(fèi)龐大的時(shí)間,這樣,將會(huì)錯(cuò)失最佳的時(shí)候來獲取這些信息。