您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > hadoop倒排索引实验报告
大数据技术概论实验报告作业三姓名:郭利强专业:工程管理专业学号:2015E8009064028目录1.实验要求................................................................................................................................................32.环境说明................................................................................................................................................42.1系统硬件........................................................................................................................................42.2系统软件........................................................................................................................................42.3集群配置........................................................................................................................................43.实验设计................................................................................................................................................43.1第一部分设计................................................................................................................................43.2第二部分设计................................................................................................................................64.程序代码..............................................................................................................................................114.1第一部分代码..............................................................................................................................114.2第二部分代码..............................................................................................................................175.实验输入和结果..................................................................................................................................21实验输入输出结果见压缩包中对应目录.............................................................................................211.实验要求第一部分:采用辅助排序的设计方法,对于输入的N个IP网络流量文件,计算得到文件中的各个源IP地址连接的不同目的IP地址个数,即对各个源IP地址连接的目的IP地址去重并计数举例如下:第二部分:输入N个文件,生成带详细信息的倒排索引举例如下,有4个输入文件:–d1.txt:catdogcatfox–d2.txt:catbearcatcatfox–d3.txt:foxwolfdog–d4.txt:wolfhenrabbitcatsheep要求建立如下格式的倒排索引:–cat—3:4:{(d1.txt,2,4),(d2.txt,3,5),(d4.txt,1,5)}–单词—出现该单词的文件个数:总文件个数:{(出现该单词的文件名,单词在该文件中的出现次数,该文件的总单词数),……}2.环境说明2.1系统硬件处理器:IntelCorei3-2350MCPU@2.3GHz×4内存:2GB磁盘:60GB2.2系统软件操作系统:Ubuntu14.04LTS操作系统类型:32位Java版本:1.7.0_85Eclipse版本:3.8Hadoop插件:hadoop-eclipse-plugin-2.6.0.jarHadoop:2.6.12.3集群配置集群配置为伪分布模式,节点数量一个3.实验设计3.1第一部分设计利用两个Map/Reduce过程,在第一个MR中,读取记录并去除重复记录,第二个MR按照辅助排序设计方法,根据源地址进行分组,统计目的地址数量。第一个MR设计:自定义StringPair{源地址,目的地址}类型,实现WritableComparable,在map过程读取文件,输出StringPair,NullWritable,reduce过程去除重复记录输出StringPair.toString,NullWritable。在第二个MR设计:1.在Map过程读取第一个MR的输出,对value值进行拆分,并以拆分得到的源地址和目的地址初始化StringPair对象作为输出键,输出值为1。publicvoidmap(Objectkey,Textvalue,Contextcontext)throwsIOException,InterruptedException{String[]records=value.toString().split(\t);Stringsourceip=records[0];Stringdesip=records[1];context.write(newStringPair(sourceip,desip),one);}2.定义GroupComparator类,继承WritableComparator类,并重载compare方法,对Map过程输出按照StringPair.first排序,完成按照源地址分组。publicstaticclassGroupComparatorextendsWritableComparator{protectedGroupComparator(){super(StringPair.class,true);}@Overridepublicintcompare(WritableComparablew1,WritableComparablew2){StringPairip1=(StringPair)w1;StringPairip2=(StringPair)w2;returnip1.getFirst().compareTo(ip2.getFirst());}}3.在Reduce过程统计分组中的所有值,得到源地址连接不同目的地址数量。publicvoidreduce(StringPairkey,IterableIntWritablevalues,Contextcontext)throwsIOException,InterruptedException{intsum=0;for(IntWritableval:values){sum+=val.get();}statistic.set(sum);context.write(key.getFirst(),statistic);}}3.2第二部分设计利用两个Map/Reduce过程,第一个MR统计各个文件中的所有单词的出现次数,以及各个文件单词总数,第二个MR根据统计结果处理加工得到单词倒排索引。第一个MR设计:1.在Map过程中,重写map类,利用StringTokenizer类,将map方法中的value值中存储的文本,拆分成一个个的单词,并获取文件名,以两种格式进行输出filename+word,1或者filename,1。publicvoidmap(Objectkey,Textvalue,Contextcontext)throwsIOException,InterruptedException{//获取文件名FileSplitfileSplit=(FileSplit)context.getInputSplit();StringfileName=fileSplit.getPath().getName();//获取单词在单个文件中出现次数,及文件单词总数StringTokenizeritr=newStringTokenizer(value.toString());for(;itr.hasMoreTokens();){Stringword=removeNonLetters(itr.nextToken().toLowerCase());StringfileWord=fileName+\001+word;if(!word.equals()){context.write(newText(fileWord),newIntWritable(1));context.write(newText(fileName),newIntWritable(1));}}}2.在Reduce过程中,统计得到每个文件中每个单词的出现次数,以及每个文件的单词总数,输出key,count。publicvoidreduce(Textkey,IterableIntWritablevalues,Contextcontext)throwsIOException,InterruptedException{intsum=0;for(IntWritableval:values){sum+=val.get();}context.write(key,newIntWritable(sum));}}第二个MR设计:1.Map过程读取第一个MR的输出,对value值进行拆分,重新组合后输出键为固定Text类型值index,值为filename+word+count或者filename+count。publicvoidmap(Objectkey,Textvalue,Contextcontext)throwsIOException,InterruptedException{StringvalStr=value.toString();String[]records=valStr.split(\t);context.write(newText(index),newText(records[0]+\001+records[1]));}}2.Reduce过程中定义四个HashMap,MapString,Integerwordinfilescount,key为单词+文件名,v
本文标题:hadoop倒排索引实验报告
链接地址:https://www.777doc.com/doc-6164373 .html