正在加载图片...
第1期 邵秀丽,等:检测僵尸网络的贝叶斯算法的MapReduce并行化实现 ·31 进行训练,每个属性既要判断是否为僵尸网络又要 判断是否在阈值内,因此每个属性有4个判断条件。 P=P w1_out_normal; 因此,经过MapReduce22的处理,形成24个条件概 P2=P2 w1_out_unnormal; 率分别存储在24个成员变量里,这与MapReduce1 形成的2个成员变量存储的先验概率共同构成完整 /其他5个属性列检测过程同上。 的知识库,可用于检测僵尸网络。 Line++;/统计所在行数 2.3 MapReduce3设计 Context.write(Line,P:P2); Map3接收到的检测数据是被Hadoop处理形成 的(Key,Value〉对,形式为(该行起始位置相对于文 经过Map3把分块的每行信息都处理成以 件起始位置的偏移量,文本文件中的一行信息〉的 〈Key5,Value5)形式的等待整体处理的中间文件输 信息。MapReduce.3要对6列属性全部检测,需用到 出,MapReduce框架将每个Map3输出的中间文件 Value的6个属性列。所以Map3将每行Value数据 结果按照Ky值(数据所在行数)进行分组后发送 按空格分割成字符串数组,取出数组的第3~8项, 给Reduce3。 分别为T℃P数据流、时间间隔平均值、时间间隔变 Reduce3.接收到的信息为<Key5,Value5>。Re- 化、数据包字节数、数据包个数平均值、持续时间平 duce5的任务是逐行比较网络数据的P(bId)和 均值。判断6个属性列的值是否在各自阈值内,若 P(nld)的大小。若P(nld)>P(bld),判断该行 在阈值内,分别利用存储条件概率的成员变量wi_in 网络数据为正常网络数据:否则为僵尸网络数据。 nomal、wi_in_unnormal计算后验概率;若在阈值外, Reduce.3伪代码如下所示。 分别利用存储条件概率的成员变量wi_out_nomal、 输入:Text、Text。 wi_out_unnormal计算后验概率。并将每行网络数 输出:Text、Text。 据的正常网络后验概率P(nId)和僵尸网络后验 reduce(Key,Value) 概率P(bId)一起输出。输出结果(Key5,Values5) StringTokenizer itr new StringTokenizer(value. 对的形式为(数据所在行数,P(nId)P(bId)〉。 toString()); Map3过程伪代码如下。 String[temp=new String[2] 输入:Object、Text。 While(itr.hasMoreTokens()) 输出:Text、Texto {temp[]=itr.nextToken();/正常网络后 map(Key,Value) 验概率与僵尸网络后验概率 StringTokenizer itr new StringTokenizer(value. i++: toString()); String[temp=new String[9]; If(Float.parseFloat(temp[0])>Float.parseFloat While(itr.hasMoreTokens()) (temp[1]))/比较 {temp[i]=itr.nextToken()://属性字符串数组 Context..write(Key,“正常网络”):/判断 i++; Else Context.write(Key,“僵尸网络”)://判断 P =sum_yes_p;P2=sum_no_p; If Float.parsefloat temp [2])>140&&Float. 3实验结果与分析 parsefloat(temp[2])<150) 本文实验中的被测网络环境为某校园网中一个 P=P w1_in_nomal; 子网的流量,该子网内主机约200台,白天的网络流 P,=P,wl_in_unnormal; 量为150~200Mbps。实验采集了某天数据,为测试 本文提出并行化的算法性能,分别使用了2个不同 Else if(Float.parsefloat temp[2])<140 ll Float. 时间段的数据集D,和D2。D,解析后的文本文件 parsefloat(temp[2])>150) 1.6GB,TCP数据包个数23631638。D2解析后的进行训练,每个属性既要判断是否为僵尸网络又要 判断是否在阈值内,因此每个属性有 4 个判断条件。 因此,经过 MapReduce2 的处理,形成 24 个条件概 率分别存储在 24 个成员变量里,这与 MapReduce1 形成的 2 个成员变量存储的先验概率共同构成完整 的知识库,可用于检测僵尸网络。 2.3 MapReduce3 设计 Map3 接收到的检测数据是被 Hadoop 处理形成 的〈Key,Value〉对,形式为〈该行起始位置相对于文 件起始位置的偏移量, 文本文件中的一行信息〉的 信息。 MapReduce3 要对 6 列属性全部检测,需用到 Value 的 6 个属性列。 所以 Map3 将每行 Value 数据 按空格分割成字符串数组,取出数组的第 3 ~ 8 项, 分别为 TCP 数据流、时间间隔平均值、时间间隔变 化、数据包字节数、数据包个数平均值、持续时间平 均值。 判断 6 个属性列的值是否在各自阈值内,若 在阈值内,分别利用存储条件概率的成员变量 wi_in _nomal、wi_in_unnormal 计算后验概率;若在阈值外, 分别利用存储条件概率的成员变量 wi_out_nomal、 wi_out_unnormal 计算后验概率。 并将每行网络数 据的正常网络后验概率 P(n | d) 和僵尸网络后验 概率 P(b | d) 一起输出。 输出结果〈Key5,Value5〉 对的形式为〈数据所在行数, P(n | d) P(b | d) 〉。 Map3 过程伪代码如下。 输入:Object、Text。 输出:Text、Text。 map(Key,Value) {StringTokenizer itr = new StringTokenizer( value. toString()); String[] temp = new String[9]; While(itr.hasMoreTokens()) {temp[i] =itr.nextToken();/ / 属性字符串数组 i++; } P1 = sum_yes_p;P2 = sum_no_p; If ( Float. parsefloat ( temp [ 2 ]) > 140&&Float. parsefloat(temp[2])<150) { P1 =P1∗w1_in_nomal; P2 =P2∗w1_in_unnormal; } Else if(Float. parsefloat( temp[2]) <140‖Float. parsefloat(temp[2])>150) { P1 =P1∗w1_out_normal; P2 =P2∗w1_out_unnormal; } / / 其他 5 个属性列检测过程同上。 Line++; / / 统计所在行数 Context.write(Line,P1 P2 ); } 经过 Map3 把 分 块 的 每 行 信 息 都 处 理 成 以 〈Key5,Value5〉形式的等待整体处理的中间文件输 出,MapReduce 框架将每个 Map3 输出的中间文件 结果按照 Key 值(数据所在行数)进行分组后发送 给 Reduce3。 Reduce3 接收到的信息为<Key5,Value5>。 Re⁃ duce5 的任务是逐行比较网络数据的 P(b | d) 和 P(n | d) 的大小。 若 P(n | d) > P(b | d) ,判断该行 网络数据为正常网络数据;否则为僵尸网络数据。 Reduce3 伪代码如下所示。 输入:Text、Text。 输出:Text、Text。 reduce(Key,Value) {StringTokenizer itr = new StringTokenizer( value. toString()); String[] temp = new String[2]; While(itr.hasMoreTokens()) { temp[ i] = itr. nextToken( ); / / 正常网络后 验概率与僵尸网络后验概率 i++; } If(Float. parseFloat ( temp [ 0]) >Float. parseFloat (temp[1])) / / 比较 Context.write(Key,“正常网络”); / / 判断 Else Context.write(Key,“僵尸网络”); / / 判断 } 3 实验结果与分析 本文实验中的被测网络环境为某校园网中一个 子网的流量,该子网内主机约 200 台,白天的网络流 量为 150~200 Mbps。 实验采集了某天数据,为测试 本文提出并行化的算法性能,分别使用了 2 个不同 时间段的数据集 D1 和 D2 。 D1 解析后的文本文件 1.6 GB, TCP 数据包个数 23 631 638。 D2 解析后的 第 1 期 邵秀丽,等:检测僵尸网络的贝叶斯算法的 MapReduce 并行化实现 ·31·
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有