hadoop倒排索引实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

大数据技术概论实验报告

姓名:郭利强

专业:工程管理专业

学号: 2015E8009064028

目录

1.实验要求 (3)

2.环境说明 (4)

2.1系统硬件 (4)

2.2系统软件 (4)

2.3集群配置 (4)

3.实验设计 (4)

3.1第一部分设计 (4)

3.2第二部分设计 (6)

4.程序代码 (11)

4.1第一部分代码 (11)

4.2第二部分代码 (17)

5.实验输入和结果 (21)

实验输入输出结果见压缩包中对应目录 (21)

1.实验要求

第一部分:采用辅助排序的设计方法,对于输入的N个IP网络流量文件,计算得到文件中的各个源IP地址连接的不同目的IP地址个数,即对各个源IP地址连接的目的IP地址去重并计数

举例如下:

第二部分:输入N个文件,生成带详细信息的倒排索引

举例如下,有4个输入文件:

– d1.txt: cat dog cat fox

– d2.txt: cat bear cat cat fox

– d3.txt: fox wolf dog

– d4.txt: wolf hen rabbit cat sheep

要求建立如下格式的倒排索引:

– cat —>3: 4: {(d1.txt,2,4),(d2.txt,3,5),(d4.txt,1,5)}–单词—>出现该单词的文件个数:总文件个数: {(出现该单词的文件名,单词在该文件中的出现次数,该文件的总单词数),……}

2.环境说明

2.1系统硬件

处理器:Intel Core i3-2350M CPU@2.3GHz×4 内存:2GB

磁盘:60GB

2.2系统软件

操作系统:Ubuntu 14.04 LTS

操作系统类型:32位

Java版本:1.7.0_85

Eclipse版本:3.8

Hadoop插件:hadoop-eclipse-plugin-2.6.0.jar Hadoop:2.6.1

2.3集群配置

集群配置为伪分布模式,节点数量一个

3.实验设计

3.1第一部分设计

利用两个Map/Reduce过程,在第一个MR中,读取记录并去除重复记录,第二个MR按照辅助排序设计方法,根据源地址进行分组,统计目的地址数量。

第一个MR设计:

自定义StringPair{源地址,目的地址}类型,实现WritableComparable,在map过程读取文件,输出

,reduce过程去除重复记录输出

在第二个MR设计:

1.在Map过程读取第一个MR的输出,对value值进行拆分,并以拆分得到的源地址和目的地址初始化StringPair对象作为输出键,输出值为1。

public void map(Object key, Text value, Context context)

throws IOException, InterruptedException {

String[] records = value.toString().split("\t");

String sourceip = records[0];

String desip=records[1];

context.write(new StringPair(sourceip,desip),one);

}

2.定义GroupComparator类,继承WritableComparator类,并重载compare方法,对Map过程输出按照StringPair.first排序,完成按照源地址分组。

public static class GroupComparator extends WritableComparator {

protected GroupComparator() {

super(StringPair.class, true);

}

@Override

public int compare(WritableComparable w1,WritableComparable w2) {

StringPair ip1=(StringPair)w1;

StringPair ip2=(StringPair)w2;

return ip1.getFirst().compareTo(ip2.getFirst());

}

}

3.在Reduce过程统计分组中的所有值,得到源地址连接不同目的地址数量。

public void reduce( StringPair key, Iterable values, Context context)

throws IOException, InterruptedException {

int sum = 0;

for (IntWritable val:values) {

sum += val.get();

}

statistic.set(sum);

context.write(key.getFirst(), statistic);

}

}

3.2第二部分设计

利用两个Map/Reduce过程,第一个MR统计各个文件中的所有单词的出现次数,以及各个文件单词总数,第二个MR根据统计结果处理加工得到单词倒排索引。

第一个MR设计:

相关文档
最新文档