一種基于Hadoop平臺和分布式處理編程模型的TCP流重組方法【專利摘要】本發(fā)明公開了一種基于Hadoop平臺和分布式處理編程模型的TCP流重組方法,Map的輸入鍵值對為<偏移量,二進制數(shù)據(jù)包>,輸出鍵值對為<五元組,時間戳+序列號+數(shù)據(jù)包有效凈荷>?!?”操作表示將時間戳、序列號,數(shù)據(jù)包有效凈荷部分拼成一個大的字節(jié)數(shù)組,并最終將“時間戳+序列號+數(shù)據(jù)包有效凈荷”保存為Hadoop自帶的BytesWritable數(shù)據(jù)類型。Map的輸出經(jīng)過Shuffle中間過程,完成對輸出鍵值對的分區(qū)、排序、合并等過程。將Map輸出中相同五元組的“時間戳+序列號+數(shù)據(jù)包有效凈荷”聚集在一起形成鍵值對<五元組,list(時間戳+序列號+數(shù)據(jù)包有效凈荷)>作為Reduce的輸入。最終Reduce的輸出鍵值對為<五元組,重組數(shù)據(jù)>。本發(fā)明提高了運行效率,減少了開銷。【專利說明】—種基于Hadoop平臺和分布式處理編程模型的TCP流重組方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及網(wǎng)絡(luò)大數(shù)據(jù)流量分析領(lǐng)域。具體在于一種基于Hadoop平臺和分布式處理編程模型的TCP流重組方法?!?br>背景技術(shù):
】[0002]TCP是面向連接的、可靠的傳輸層協(xié)議,在互聯(lián)網(wǎng)以及對傳輸可靠性要求較高的網(wǎng)絡(luò)中得到了廣泛的應(yīng)用。由于互聯(lián)網(wǎng)協(xié)議棧層次復(fù)雜、單個數(shù)據(jù)包的長度有限,應(yīng)用層數(shù)據(jù)很有可能被切分為多個片段,由多個數(shù)據(jù)包負責(zé)傳輸。因此在對應(yīng)用層的數(shù)據(jù)進行分析之前,重組TCP會話是必要的前提。[0003]傳統(tǒng)的TCP重組技術(shù)應(yīng)用鏈表、哈希表等數(shù)據(jù)結(jié)構(gòu),結(jié)合TCP的五元組、確認號、序列號、各個標識位(SYN,ACK,RST,F(xiàn)IN)等信息經(jīng)過相關(guān)的運算來實現(xiàn)。[0004]隨著大數(shù)據(jù)時代的到來,帶來了一系列的現(xiàn)實問題,如存儲成本高、分析難度大、處理效率低等。有相關(guān)研究表明,2012年,全球互聯(lián)網(wǎng)用戶約為23億,截至2013年全球有一萬億臺設(shè)備接入互聯(lián)網(wǎng),整個互聯(lián)網(wǎng)流量為56EB(1EB=10億GB),更有甚者預(yù)計2020年全球互聯(lián)網(wǎng)流量將達到驚人的350億TB(1TB=1024GB),這一數(shù)字已經(jīng)完全超越了傳統(tǒng)TCP會話重組方法的承載能力。目前還缺乏在Hadoop平臺實現(xiàn)TCP流重組的算法。[0005]基于以上問題本發(fā)明提出了一種基于Hadoop的重組TCP流的MapReduce設(shè)計,Hadoop是目前應(yīng)用最為廣泛的分布式平臺,尤其適合大數(shù)據(jù)的處理任務(wù),由于開源、穩(wěn)定、容錯性高、可擴展等特性,深受各大企業(yè)的歡迎。HDFS(分布式存儲系統(tǒng))和MapReduce(分布式處理編程模型)是它最為關(guān)鍵的技術(shù)。Hadoop的優(yōu)勢在于可以利用HDFS,穩(wěn)定、可靠、均勻且低成本的將數(shù)據(jù)復(fù)制到集群中的各個節(jié)點,根據(jù)項目需要靈活的編寫MapReduce程序,以鍵值對的形式對數(shù)據(jù)進行并行處理,通過增加結(jié)點來滿足更高要求的任務(wù)。與此同時,Hadoop還支持對數(shù)據(jù)的壓縮、排序、聚合、銜接傳統(tǒng)關(guān)系數(shù)據(jù)庫等功能?!?br/>發(fā)明內(nèi)容】[0006]針對以上現(xiàn)有技術(shù)中的不足,本發(fā)明的目的在于提供一種提高運行效率,減少開銷的基于Hadoop平臺和分布式處理編程模型的TCP流重組方法。本發(fā)明的技術(shù)方案如下:一種基于Hadoop平臺和分布式處理編程模型的TCP流重組方法,將分布式處理編程模型MapReduce分為Map階段和Reduce階段,其中數(shù)據(jù)以block的形式存儲在分布式存儲系統(tǒng)HDFS中,Map階段的步驟為:[0007]步驟Al、將數(shù)據(jù)包映射到鍵值對,形成輸入鍵值對〈偏移量,二進制數(shù)據(jù)包>;[0008]步驟A2、提取數(shù)據(jù)包的五元組,包括源IP,目的IP,源端口,目的端口,傳輸層協(xié)議類型;[0009]步驟A3、判斷傳輸層協(xié)議是否為TCP協(xié)議,若該傳輸層協(xié)議不是TCP協(xié)議,則讀取下一個鍵值對;若該傳輸層協(xié)議是TCP協(xié)議,則提取數(shù)據(jù)包的序列號、時間戳,有效凈荷,并判斷該有效凈荷的長度,若有效凈荷長度為零,則忽略該數(shù)據(jù)包,讀取下一個鍵值對,否則跳轉(zhuǎn)到步驟A4;[0010]步驟A4、輸出鍵值對〈五元組,時間戳+序列號+數(shù)據(jù)包有效凈荷>,“+”操作表示將時間戳、序列號,數(shù)據(jù)包有效凈荷部分拼成一個大的字節(jié)數(shù)組,并最終將“時間戳+序列號+數(shù)據(jù)包有效凈荷”保存;[0011]Reduce階段的步驟為:[0012]步驟B1、Reduce之前平臺Hadoop將Map階段輸出中相同五元組的“時間戳+序列號+數(shù)據(jù)包有效凈荷”聚集在一起形成鍵值對〈五元組,list(時間戳+序列號+數(shù)據(jù)包有效凈荷)>作為Reduce的輸入;[0013]步驟B2、依據(jù)時間戳,按照時間先后的順序?qū)ist進行排序,所述list包括時間戳+序列號+數(shù)據(jù)包有效凈荷;[0014]步驟B3、刪除經(jīng)過排序后的list中TCP序列號相同的多余記錄;[0015]步驟B4、將經(jīng)過排序后list中每個記錄的時間戳、序列號去掉,形成只包含數(shù)據(jù)包有效凈荷的list;[0016]步驟B5:按照順序合并只包含數(shù)據(jù)包有效凈荷的list中的每個記錄,完成重組;[0017]步驟B6:輸出鍵值對〈五元組,重組數(shù)據(jù)>,完成TCP流的重組。[0018]進一步的,Map階段的步驟中Al步驟中通過修改InputFormat完成分片到鍵值對的映射。[0019]進一步的,步驟A4中的輸出鍵值對〈五元組,時間戳+序列號+數(shù)據(jù)包有效凈荷>保存為Hadoop自帶的BytesWritable數(shù)據(jù)類型。[0020]本發(fā)明的優(yōu)點及有益效果如下:[0021]本發(fā)明利用Hadoop并行處理大數(shù)據(jù)的的優(yōu)勢和Reduce的數(shù)據(jù)匯總功能,將同一個TCP流的所有數(shù)據(jù)包的有效凈荷匯總到一起排序、去重,合并來達到重組目的,無需鏈表或者哈希表之類的復(fù)雜數(shù)據(jù)結(jié)構(gòu),提高運行效率,減少開銷。【專利附圖】【附圖說明】[0022]圖1所示為本發(fā)明優(yōu)選實施例的MapReduce流程圖;[0023]圖2=Map階段流程圖;[0024]圖3:Reduce階段流程圖。【具體實施方式】[0025]下面結(jié)合附圖給出一個非限定的實施例對本發(fā)明作進一步的闡述。但是應(yīng)該理解,這些描述只是示例的,而并非要限制本發(fā)明的范圍。此外,在以下說明中,省略了對公知結(jié)構(gòu)和技術(shù)的描述,以避免不必要地混淆本發(fā)明的概念。[0026]如圖1所示,本發(fā)明需要一個MapReduce任務(wù),海量數(shù)據(jù)全部以block(默認64MB)的形式存儲在HDFS中,修改InputFormat完成分片到鍵值對的映射,Map的輸入鍵值對為<偏移量,二進制數(shù)據(jù)包>,輸出鍵值對為〈五元組,時間戳+序列號+數(shù)據(jù)包有效凈荷>。Map的輸出經(jīng)過Shuffle中間過程,完成對輸出鍵值對的分區(qū)、排序、合并等過程。將Map輸出中相同五元組的“時間戳+序列號+數(shù)據(jù)包有效凈荷”聚集在一起形成鍵值對〈五元組,list(時間戳+序列號+數(shù)據(jù)包有效凈荷)>作為Reduce的輸入。最終Reduce的輸出鍵值對為〈五元組,重組數(shù)據(jù)〉。[0027]如圖2所示,Map階段具體過程如下:[0028]步驟1:完成數(shù)據(jù)包到鍵值對的映射,形成輸入鍵值對〈偏移量,二進制數(shù)據(jù)包>。[0029]步驟2:提取數(shù)據(jù)包的五元組(源IP,目的IP,源端口,目的端口,傳輸層協(xié)議類型)。[0030]步驟3:判斷傳輸層協(xié)議是否為TCP協(xié)議,若是則提取數(shù)據(jù)包的序列號、時間戳,有效凈荷,若有效凈荷長度為零,則忽略該數(shù)據(jù)包。[0031]步驟4:輸出鍵值對〈五元組,時間戳+序列號+數(shù)據(jù)包有效凈荷>?!?”操作表示將時間戳、序列號,數(shù)據(jù)包有效凈荷部分拼成一個大的字節(jié)數(shù)組,并最終將“時間戳+序列號+數(shù)據(jù)包有效凈荷”保存為Hadoop自帶的BytesWritable數(shù)據(jù)類型。[0032]如圖3所示,Reduce階段具體過程如下:[0033]步驟1:ReduCe之前Hadoop將Map輸出中相同五元組的“時間戳+序列號+數(shù)據(jù)包有效凈荷”聚集在一起形成鍵值對〈五元組,list(時間戳+序列號+數(shù)據(jù)包有效凈荷)>作為Reduce的輸入。[0034]步驟2:依據(jù)時間戳,按照時間先后的順序?qū)ist(時間戳+序列號+數(shù)據(jù)包有效凈荷)進行排序。[0035]步驟3:刪除經(jīng)過排序后的list(時間戳+序列號+數(shù)據(jù)包有效凈荷)中TCP序列號相同的多余記錄。[0036]步驟4:將經(jīng)過排序后list(時間戳+序列號+數(shù)據(jù)包有效凈荷)中每個記錄的時間戳、序列號去掉,形成list(數(shù)據(jù)包有效凈荷)。[0037]步驟5:按照順序合并list(數(shù)據(jù)包有效凈荷)中的每個記錄,完成重組。[0038]步驟6:輸出鍵值對〈五元組,重組數(shù)據(jù)>。[0039]本發(fā)明利用Hadoop并行處理大數(shù)據(jù)的的優(yōu)勢和Reduce的數(shù)據(jù)匯總功能,將同一個TCP流的所有數(shù)據(jù)包的有效凈荷匯總到一起排序、去重,合并來達到重組目的,無需鏈表或者哈希表之類的復(fù)雜數(shù)據(jù)結(jié)構(gòu),提高運行效率,減少開銷。[0040]以上這些實施例應(yīng)理解為僅用于說明本發(fā)明而不用于限制本發(fā)明的保護范圍。在閱讀了本發(fā)明的記載的內(nèi)容之后,技術(shù)人員可以對本發(fā)明作各種改動或修改,這些等效變化和修飾同樣落入本發(fā)明方法權(quán)利要求所限定的范圍?!緳?quán)利要求】1.一種基于Hadoop平臺和分布式處理編程模型的TCP流重組方法,其特征在于:分布式處理編程模型MapReduce分為Map階段和Reduce階段,其中數(shù)據(jù)以block的形式存儲在分布式存儲系統(tǒng)HDFS中,Map階段的步驟為:步驟Al、將數(shù)據(jù)包映射到鍵值對,形成輸入鍵值對〈偏移量,二進制數(shù)據(jù)包>;步驟A2、提取數(shù)據(jù)包的五元組,包括源IP,目的IP,源端口,目的端口,傳輸層協(xié)議類型;步驟A3、判斷傳輸層協(xié)議是否為TCP協(xié)議,若該傳輸層協(xié)議不是TCP協(xié)議,則讀取下一個鍵值對;若該傳輸層協(xié)議是TCP協(xié)議,則提取數(shù)據(jù)包的序列號、時間戳,有效凈荷,并判斷該有效凈荷的長度,若有效凈荷長度為零,則忽略該數(shù)據(jù)包,讀取下一個鍵值對,否則跳轉(zhuǎn)到步驟A4;步驟A4、輸出鍵值對〈五元組,時間戳+序列號+數(shù)據(jù)包有效凈荷>,“+”操作表示將時間戳、序列號,數(shù)據(jù)包有效凈荷部分拼成一個大的字節(jié)數(shù)組,并最終將“時間戳+序列號+數(shù)據(jù)包有效凈荷”保存;Reduce階段的步驟為:步驟BUReduce之前平臺Hadoop將Map階段輸出中相同五元組的“時間戳+序列號+數(shù)據(jù)包有效凈荷”聚集在一起形成鍵值對〈五元組,list(時間戳+序列號+數(shù)據(jù)包有效凈荷)>作為Reduce的輸入;步驟B2、依據(jù)時間戳,按照時間先后的順序?qū)ist進行排序,所述list包括時間戳+序列號+數(shù)據(jù)包有效凈荷;步驟B3、刪除經(jīng)過排序后的list中TCP序列號相同的多余記錄;步驟B4、將經(jīng)過排序后list中每個記錄的時間戳、序列號去掉,形成只包含數(shù)據(jù)包有效凈荷的list;步驟B5:按照順序合并只包含數(shù)據(jù)包有效凈荷的list中的每個記錄,完成重組;步驟B6:輸出鍵值對〈五元組,重組數(shù)據(jù)>,完成TCP流的重組。2.根據(jù)權(quán)利要求1所述的基于Hadoop平臺和分布式處理編程模型的TCP流重組方法,其特征在于:Map階段的步驟中Al步驟中通過修改InputFormat完成分片到鍵值對的映射。3.根據(jù)權(quán)利要求1所述的基于Hadoop平臺和分布式處理編程模型的TCP流重組方法,其特征在于:步驟A4中的輸出鍵值對〈五元組,時間戳+序列號+數(shù)據(jù)包有效凈荷>保存為Hadoop自帶的BytesWritable數(shù)據(jù)類型?!疚臋n編號】H04L1/16GK104253863SQ201410468903【公開日】2014年12月31日申請日期:2014年9月15日優(yōu)先權(quán)日:2014年9月15日【發(fā)明者】雒江濤,高偉,楊軍超,王小平,鄧生雄,申健,劉勇申請人:重慶郵電大學(xué)