2014-10-29 23 views
0

我正在使用Hadoop。目標是檢測網絡流量(網絡數據包)中的某些關鍵字。我正在使用4個節點的Hadoop集羣。我希望每個節點都對不同類型的數據包(例如TCP,SMTP)執行操作。我如何分發數據包?Hadoop在節點上自定義輸入分佈

回答

1

爲了根據TCP-IP協議識別數據包則可以使用具有功能PcapPacket.hasHeader(協議實例)PCAP庫(jnetpcap)
其中協議對象應該調用hasHeader功能
例如之前被實例化 Tcp tcp = new Tcp();
Udp udp = new Udp();
PcapPacket包= //從某處
得到如果(packet.hasHeader(TCP){
        //分組是TCP
       鍵= TCP
}
否則如果(包.hasHeader(UDP)){
        //分組是UDP
       鍵= UDP
}

這種方式可以設置密鑰爲協議和值作爲數據包的數據(鍵,值)對要給予的hadoop的MapReduce的減速器。
然後具有相同密鑰的所有(密鑰,值)對將會到一個縮減器。