国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種面向hdfs的網(wǎng)絡(luò)報文并行讀取方法

      文檔序號:10660758閱讀:442來源:國知局
      一種面向hdfs的網(wǎng)絡(luò)報文并行讀取方法【專利摘要】本發(fā)明提供一種面向HDFS的網(wǎng)絡(luò)報文并行讀取方法,包括網(wǎng)絡(luò)數(shù)據(jù)捕獲與pcap報文解析兩個階段。本方法依托Hadoop平臺的分布式框架MapReduce與分布式文件系統(tǒng)HDFS,將捕獲的網(wǎng)絡(luò)數(shù)據(jù)包寫入HDFS,并通過本發(fā)明實現(xiàn)的二進制pcap流解析方法將pcap報文并行的解析出來,形成key?value對然后交由MapReduce框架進行分析處理。通過本發(fā)明中的方法大大提高了HDFS下pcap格式文件的并行讀取能力,進而提高了后續(xù)網(wǎng)絡(luò)數(shù)據(jù)包的并行分析與處理效率?!緦@f明】一種面向HDFS的網(wǎng)絡(luò)報文并行讀取方法
      技術(shù)領(lǐng)域
      [0001]本發(fā)明涉及互聯(lián)網(wǎng)
      技術(shù)領(lǐng)域
      ,具體而言涉及一種面向HDFS的網(wǎng)絡(luò)報文并行讀取方法?!?br>背景技術(shù)
      】[0002]隨著互聯(lián)網(wǎng)信息交換的爆發(fā)式增長以及網(wǎng)絡(luò)設(shè)備性能的大幅提升,網(wǎng)絡(luò)設(shè)備之間的流量管理與分析工作正面臨著巨大挑戰(zhàn)。[0003]傳統(tǒng)的網(wǎng)絡(luò)流量管理與分析軟件都是在單臺服務(wù)器上通過部署網(wǎng)絡(luò)管理軟件進行分析監(jiān)控的,例如:Sn〇rt、CiSC〇NetFl〇W等商業(yè)軟件。移動互聯(lián)網(wǎng)的到來,使互聯(lián)網(wǎng)信息交換呈爆發(fā)式增長,動輒上PB級別的網(wǎng)絡(luò)流量。管理和分析如此龐大的網(wǎng)絡(luò)數(shù)據(jù)集需要巨大的存儲空間與高性能的計算能力,而傳統(tǒng)網(wǎng)絡(luò)管理軟件并不適合處理大規(guī)模的高速網(wǎng)絡(luò)數(shù)據(jù),再加上單一服務(wù)器上有限的計算與存儲資源,傳統(tǒng)運行在單一服務(wù)器上的網(wǎng)絡(luò)管理軟件已經(jīng)無法滿足對海量網(wǎng)絡(luò)數(shù)據(jù)包的快速分析與處理的需求。[00〇4]HDFS是一種分布式文件系統(tǒng),大文件被分割成若干固定大小的block存放于分布式集群當中,網(wǎng)絡(luò)流量數(shù)據(jù)一般以二進制的pcap格式進行存儲,每個pcap報文由16字節(jié)pcap報文頭(參加附圖1:依次為4字節(jié)秒級時間戳、4字節(jié)微秒級時間戳、4字節(jié)捕獲報文長度、4字節(jié)原始報文長度)和若干字節(jié)報文內(nèi)容組成。由于pcap報文之間沒有任何邊界分隔符,一個pcap報文完全有可能被分割到兩個block分別存儲,這就導致無法知道每個block前多少字節(jié)是從上一個block中分割過來的,只能通過有序的方式來串行讀取,否則Map操作無法并行的讀取到正確的pcap報文,這樣的讀取效率是非常低下的。【
      發(fā)明內(nèi)容】[0005]本發(fā)明目的在于提供一種面向HDFS的網(wǎng)絡(luò)報文并行讀取方法,解決了海量網(wǎng)絡(luò)數(shù)據(jù)包的分布式并行處理問題。[0006]為達成上述目的,本發(fā)明提出一種面向HDFS的網(wǎng)絡(luò)報文并行讀取方法,包括下列步驟:[0007]1)網(wǎng)絡(luò)數(shù)據(jù)捕獲階段[0008]la)pcap報文采集器從交換機或路由設(shè)備實時捕獲網(wǎng)絡(luò)數(shù)據(jù)包;[0009]lb)通過HDFS流寫入模塊將數(shù)據(jù)包以二進制pcap格式寫入HDFS;[〇〇1〇]lc)分割容量V大于HDFS默認block(64MB)的文件,使大文件以V/64MB或者V/64MB+1個數(shù)據(jù)塊(block)存儲于分布式文件系統(tǒng)當中;[0011]2)pcap報文解析階段:[0012]2a)通過給定規(guī)則探測出每個block中首個pcap報文的起始偏移量;[〇〇13]2b)跳過起始位置之前的所有字節(jié);[0〇14]2c)依次解析block中所有的pcap報文;[〇〇15]2d)將每次解析的pcap報文結(jié)果輸入Map操作;[0016]2e)結(jié)束。[0017]本發(fā)明的有益效果:本發(fā)明采用給定規(guī)則匹配方式,準確的定位到每個block中起始pcap報文的偏移量,從而很好的解決了存儲在HDFS分布式文件系統(tǒng)中的pcap數(shù)據(jù)包文件難以并行化正確讀取的問題,為后續(xù)基于MapReduce框架的海量數(shù)據(jù)分析過程提供了原始數(shù)據(jù)輸入,該輸入同樣也適用于其他基于HDFS的分布式數(shù)據(jù)處理框架,例如:Storm、Spark等,很好的解決了海量網(wǎng)絡(luò)數(shù)據(jù)包的分布式并行處理問題?!靖綀D說明】[0018]附圖不意在按比例繪制。在附圖中,在各個圖中示出的每個相同或近似相同的組成部分可以用相同的標號表示。為了清晰起見,在每個圖中,并非每個組成部分均被標記。現(xiàn)在,將通過例子并參考附圖來描述本發(fā)明的各個方面的實施例,其中:[0019]圖1是pcap報文格式以及其在HDFS中的存儲情況;[0020]圖2為本發(fā)明的面向HDFS的網(wǎng)絡(luò)報文并行讀取方法的方法流程圖;[0021]圖3為圖2中探測每個block中首個pcap報文的起始偏移量的方法流程圖。【具體實施方式】[〇〇22]為了更了解本發(fā)明的技術(shù)內(nèi)容,特舉具體實施例并配合所附圖式說明如下。[0〇23]如圖1中pcap報文結(jié)構(gòu)可知,pcap報文頭的第1-8字節(jié)為時間戳timestampl,9-12字節(jié)為捕獲報文長度caplenl,13-16字節(jié)為原始報文長度wiredlenl,根據(jù)caplenl可以得出下一個連續(xù)Pcap報文的起始偏移量,進而得到下一個連續(xù)pcap報文的時間戳timestamp2,捕獲報文長度caplen2以及原始報文長度wiredlen2。[0024]圖2為本發(fā)明的面向HDFS的網(wǎng)絡(luò)報文并行讀取方法的方法流程圖。如圖2所示,包括下列步驟:[0025]1)網(wǎng)絡(luò)數(shù)據(jù)捕獲階段[〇〇26]la)pcap報文采集器從交換機或路由設(shè)備實時捕獲網(wǎng)絡(luò)數(shù)據(jù)包;[〇〇27]lb)通過HDFS流寫入模塊將數(shù)據(jù)包以二進制pcap格式寫入HDFS;[0028]lc)分割容量V大于HDFS默認block(64MB)的文件,使大文件以V/64MB或者V/64MB+1個數(shù)據(jù)塊(block)存儲于分布式文件系統(tǒng)當中;[〇〇29]2)pcap報文解析階段:[0〇3〇]2a)通過給定規(guī)則探測出每個block中首個pcap報文的起始偏移量;[〇〇31]2b)跳過起始位置之前的所有字節(jié);[0〇32]2c)依次解析block中所有的pcap報文;[0〇33]2d)將每次解析的pcap報文結(jié)果輸入Map操作;[0034]2e)結(jié)束。[0035]圖3為圖2中探測每個block中首個pcap報文的起始偏移量的方法流程圖。具體說明如下:[〇〇36]步驟0為本發(fā)明的起始狀態(tài);[0037]步驟1定位到下一個字節(jié)偏移量的位置,初始時偏移量地址為block首字節(jié)地址;[0038]步驟2讀取偏移量位置后的連續(xù)16字節(jié)數(shù)據(jù),作為假定的pcap報文頭;[0039]步驟3將1-8字節(jié)的二進制數(shù)據(jù)轉(zhuǎn)換為時間戳格式,供后續(xù)進行比較;[0040]步驟4將步驟3中得到的時間戳與捕獲開始時的系統(tǒng)時間11以及當前系統(tǒng)時間t2進行比較,參照附圖2規(guī)則1。滿足則繼續(xù)下一步,不滿足則返回步驟1;[0041]步驟5將9-12字節(jié)的二進制數(shù)據(jù)轉(zhuǎn)換為捕獲報文長度,供后續(xù)比較;[0042]步驟6將步驟5中得到的捕獲報文長與最大pcap報文長進行比較,參照附圖2規(guī)則2。滿足則繼續(xù)下一步,不滿足則返回步驟1;[0043]步驟7將13-16字節(jié)的二進制數(shù)據(jù)轉(zhuǎn)換為原始報文長度,供后續(xù)比較;[0044]步驟8將步驟7中得到的原始報文長與最大pcap報文長進行比較,參照附圖2規(guī)則3。滿足則繼續(xù)下一步,不滿足則返回步驟1;[0045]步驟9用步驟7中得到的原始報文長減去步驟5中得到的捕獲報文長,得到二者差值,供后續(xù)比較;[0046]步驟10將步驟9中得到的差值與最大pcap報文長和0進行比較,參照附圖2規(guī)則4。滿足則繼續(xù)下一步,不滿足則返回步驟1;[0047]步驟11根據(jù)步驟5中得到的捕獲報文長,確定下一個連續(xù)報文的起始偏移位置;[〇〇48]步驟12是根據(jù)新的偏移位置重復步驟2至步驟10;[0049]步驟13是判斷步驟12中的所有規(guī)則匹配是否都滿足,若所有規(guī)則都滿足,則進行下一步驟,否則返回步驟1;[0050]步驟14是用步驟12中得到的第二個報文時間戳減去步驟3中得到的首個報文時間戳,得到二者差值,供后續(xù)比較;[0051]步驟15是將步驟14中得到的差值與系統(tǒng)預設(shè)的兩個連續(xù)報文的捕獲時間差閾值和0進行比較,參照附圖2規(guī)則5。若滿足則繼續(xù)下一步,否則返回步驟1;[0〇52]步驟16即得到了該block的首個pcap報文起始偏移位置;[〇〇53]步驟17是結(jié)束步驟。[0〇54]綜上所述,本方法依托Hadoop平臺的分布式框架MapReduce與分布式文件系統(tǒng)HDFS,將捕獲的網(wǎng)絡(luò)數(shù)據(jù)包寫入HDFS,并通過本發(fā)明實現(xiàn)的二進制pcap流解析方法將pcap報文并行的解析出來,形成key-value對然后交由MapReduce框架進行分析處理。通過本發(fā)明中的方法大大提高了HDFS下pcap格式文件的并行讀取能力,進而提高了后續(xù)網(wǎng)絡(luò)數(shù)據(jù)包的并行分析與處理效率。[0055]雖然本發(fā)明已以較佳實施例揭露如上,然其并非用以限定本發(fā)明。本發(fā)明所屬
      技術(shù)領(lǐng)域
      中具有通常知識者,在不脫離本發(fā)明的精神和范圍內(nèi),當可作各種的更動與潤飾。因此,本發(fā)明的保護范圍當視權(quán)利要求書所界定者為準?!局鳈?quán)項】1.一種面向HDFS的網(wǎng)絡(luò)報文并行讀取方法,其特征在于,包括網(wǎng)絡(luò)數(shù)據(jù)捕獲與pcap報文解析兩個階段,具體包括下列步驟:1)網(wǎng)絡(luò)數(shù)據(jù)捕獲階段la)pcap報文采集器從交換機或路由設(shè)備實時捕獲網(wǎng)絡(luò)數(shù)據(jù)包;1b)通過HDFS流寫入模塊將數(shù)據(jù)包以二進制pcap格式寫入HDFS;lc)分割容量V大于HDFS默認64MB的文件,使大文件以V/64MB或者V/64MB+1個block存儲于分布式文件系統(tǒng)當中;2)pcap報文解析階段:2a)通過給定規(guī)則探測出每個b1ock中首個pcap報文的起始偏移量;2b)跳過起始位置之前的所有字節(jié);2c)依次解析block中所有的pcap報文;2d)將每次解析的pcap報文結(jié)果輸入Map操作;2e)結(jié)束。2.根據(jù)權(quán)利要求1所述的面向HDFS的網(wǎng)絡(luò)報文并行讀取方法,其特征在于,上述步驟la)中pcap報文采集器是一個基于libpcap實現(xiàn)的網(wǎng)絡(luò)數(shù)據(jù)包收集器,用于獲取數(shù)據(jù)。3.根據(jù)權(quán)利要求1所述的面向HDFS的網(wǎng)絡(luò)報文并行讀取方法,其特征在于,上述步驟lb)中HDFS流寫入模塊指HDFSstreamwriter,用于保存la)中捕獲到的數(shù)據(jù)報到HDFS。4.根據(jù)權(quán)利要求1所述的面向HDFS的網(wǎng)絡(luò)報文并行讀取方法,其特征在于,上述步驟lc)中每個固定大小的block包含若干完整以及不完整的pcap報文段,以二進制pcap格式保存到一個存儲節(jié)點,同時復制到另外2個節(jié)點做數(shù)據(jù)容錯備份。5.根據(jù)權(quán)利要求1所述的面向HDFS的網(wǎng)絡(luò)報文并行讀取方法,其特征在于,上述步驟2a)中給定規(guī)則探測方法為:2a_i)假定當前block的起始字節(jié)就是完整pcap報文的起始字節(jié),即起始字節(jié)偏移量為〇;2a_ii)由pcap報文結(jié)構(gòu)可知,pcap報文頭的第1-8字節(jié)為時間戳timestampl,9_12字節(jié)為捕獲報文長度caplenl,13-16字節(jié)為原始報文長度wiredlenl,根據(jù)caplenl可以得出下一個連續(xù)pcap報文的起始偏移量,進而得到下一個連續(xù)pcap報文的時間戳timestamp2,捕獲報文長度caplen2以及原始報文長度wiredlen2;2a_iii)當假設(shè)2a_i)成立時,必須同時滿足以下5條規(guī)則:1)所有時間戳類型數(shù)據(jù)都必須滿足1:1〈=1:;[1]168〖311^〈=〖2,其中1:1表示捕獲開始運行時間,t2表示當前系統(tǒng)時間;2)所有捕獲報文長必須滿足caplen〈=max(packetlength),即捕獲報文長不能超過pcap報文最大報文長度;3)所有原始報文長必須滿足wiredlen〈=max(packetlength),即原始報文長不能超過pcap報文最大報文長度;4)0〈=wiredlen-caplen〈=max(packetlength),即原始報文長度必須不小于捕獲的報文長度,且二者的差不超過一個pcap報文內(nèi)容的最大長度;5)0〈timestamp2-timestampl〈At,即第一個數(shù)據(jù)報的捕獲時間必須早于第二個數(shù)據(jù)報的捕獲時間,且二者的間隔不能大于At;2a-1v)若條件2a-1ii)的規(guī)則都滿足,則說明已經(jīng)找到該block的首個pcap報文的起始偏移位置;若有任一規(guī)則不滿足,則2a_i)中假設(shè)的起始偏移位置向后移動一個字節(jié),重復運用2a_iii)中的規(guī)則進行匹配,直到找到滿足規(guī)則的起始偏移位置;2a_v)結(jié)束。6.根據(jù)權(quán)利要求1所述的面向HDFS的網(wǎng)絡(luò)報文并行讀取方法,其特征在于,上述步驟2c)中pcap報文的解析步驟如下:2c_i)讀取當前pcap報文起始偏移位置后面的第9-12字節(jié),得到4字節(jié)的捕獲報文長度L;2c_ii)若捕獲報文長度L小于等于block剩余字節(jié)數(shù),則連續(xù)讀取本block中當前pcap報文起始偏移位置后面的第17-17+L字節(jié),得到L字節(jié)的捕獲報文內(nèi)容;2c_iii)若捕獲報文長度L大于block剩余字節(jié)數(shù),讀取完本block剩余數(shù)據(jù)后,繼續(xù)在下一個連續(xù)的block中讀取剩余的字節(jié)數(shù),S卩兩個block共讀取L個字節(jié),得到L字節(jié)的捕獲報文內(nèi)容,一個block讀取完畢,直接跳至步驟2c-vi)結(jié)束;2c_iv)確定下一個pcap報文起始偏移位置;2c-v)重復步驟2c-1i)-2c-1v)直到所有pcap報文解析完畢;2c-vi)結(jié)束。7.根據(jù)權(quán)利要求1所述的面向HDFS的網(wǎng)絡(luò)報文并行讀取方法,其特征在于,上述步驟2d)中輸入Map操作的具體步驟如下:2d_i)步驟2c)中每個pcap報文解析后都會得到一個當前pcap報文的偏移量和該pcap報文的內(nèi)容部分;2d_ii)以當前pcap報文所在位置的字節(jié)偏移量為key,格式為LongWritable,二進制報文內(nèi)容部分為value,格式為BytesWritable,作為map函數(shù)的輸入;2d-1ii)結(jié)束。【文檔編號】H04L12/861GK106027414SQ201610353612【公開日】2016年10月12日【申請日】2016年5月25日【發(fā)明人】吳駿,劉勇,湯兆亮,高揚,吳和生,李寧【申請人】南京大學
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1