我正在开发hadoop。目标是在网络流量(网络数据包)中检测某些关键词。我使用的是一个由4个节点组成的hadoop集群。我希望每个节点对不同类型的数据包(如tcp、smtp)执行操作。如何分发数据包?
prdp8dxp1#
要根据tcp ip协议识别数据包,可以使用pcap库(jnetpcap),它具有函数pcappacket.hasheader(协议示例)在调用hasheader函数之前应该示例化协议对象的位置e、 g.tcp=new tcp();udp=新建udp();pcappacket packet=//从某处得到if(packet.hasheader(tcp){ //数据包是tcp 密钥=tcp}else if(packet.hasheader(udp)){ //数据包是udp 密钥=udp}通过这种方式,您可以将密钥设置为协议,将值设置为(key,value)对的数据包数据,以提供给hadoop的mapreduce的reducer。然后所有具有相同键的(键,值)对将转到一个减速机。
1条答案
按热度按时间prdp8dxp1#
要根据tcp ip协议识别数据包,可以使用pcap库(jnetpcap),它具有函数pcappacket.hasheader(协议示例)
在调用hasheader函数之前应该示例化协议对象的位置
e、 g.tcp=new tcp();
udp=新建udp();
pcappacket packet=//从某处得到
if(packet.hasheader(tcp){
//数据包是tcp
密钥=tcp
}
else if(packet.hasheader(udp)){
//数据包是udp
密钥=udp
}
通过这种方式,您可以将密钥设置为协议,将值设置为(key,value)对的数据包数据,以提供给hadoop的mapreduce的reducer。
然后所有具有相同键的(键,值)对将转到一个减速机。