




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Mapreduce程序设计报告姓名: 学号: 题目: Wiki网页PageRank算法 1、 实验环境联想pc机虚拟机:VM 10.0操作系统:Centos 6.4Hadoop版本:hadoop 1.2.1Jdk版本:jdk-7u25Eclipse版本:eclipse-SDK-4.2.2-linux-gtk-x86_642、 实验设计及源程序2.1实验说明PageRank是Google的专有算法,用于衡量特定网页相对于搜索引擎索引中的其他网页而言的重要程度。PageRank实现了将链接价值概念作为排名因素。PageRank是一种由搜索引擎根据网页之间相互的超链接计算的网页排名技术,是Google用于用来标识网页的等级或重要性的一种方法。其级别从1到10级,PR值越高说明该网页越受欢迎、越重要。本次程序根据各网页之间的超链接关系和初始PR值,最终得到各网页的PR值,并按PR值排序。PR值高的网页说明有许多优质网页链接过来。每个网页的PR值可由公式2.1得到。 (2.1) 其中,pj为链接到网页i的所有网页。d表示阻尼因子,通常设为0.85。公式的前半部分表示一个上网者从一个随机网页开始浏览,随机浏览模型更符合用户的行为,一定程度上解决了rank sink的问题并且保证PageRank存在唯一值。公式的后半部分即表示由其他网页链接到网页i的PR值。2.2实验设计本实验由3个mapreduce程序完成,分别为GraphBuilder,PageRankIter,PageRankViewer,PageRankDriver。2.2.1 GraphBuilderGraphBuilder主要用来分析原始数据,建立各个网页之间的链接关系。 GraphBuilderMap这个类实现的map方法是逐行分析原始数据,输出,其中网页的URL作为key,PageRank初始值(PR_init)和网页的出度列表一起作为value,以字符串表示value,用特定的符号,如”:”将两者分开。static class GraphBuilder_Mapper extends Mapperprivate Text url = new Text();private Text url_list = new Text();public void map(LongWritable key, Text value, Context context)throws IOException, InterruptedException String vals = value.toString().split(s+);url.set(vals0);url_list.set(1:+vals1); /将每个网页的初始pr值设为1context.write(url, url_list);2.2.2 PangeRankIter PageRankIter主要用来迭代计算PR值,直到PR值收敛或迭代预定次数。 PageRankIterMap这个类的map方法实现的是对GraphBuilder的输出产生两种对,分别为和,其中u表示当前URL所链接到的网页ID,并作为key;Cur_rank为当前URL的PageRank值,|link_list|为当前URL的出度数量,cur_rank/|link_list|作为value。而输出的保持原来图的结构。static class PageRankIter_Mapper extends MapperOverrideprotected void setup(Context context)throws IOException, InterruptedException / TODO Auto-generated method stubN = 0;super.setup(context);Overridepublic void map(LongWritable key, Text value,Context context)throws IOException, InterruptedException String vals = value.toString().split(s+);String url = vals0;float cur = Float.parseFloat(vals1.split(:)0);String url_list = vals1.split(:)1.split(,);for(String u:url_list)float val = cur/url_list.length;context.write(new Text(u),new Text(+Float.toString(val);N+;context.write(new Text(url), new Text(vals1.split(:)1); PageRankIterReduce这个类的reduce方法中输入为两种形式的键值对,分别为和。其中为当前URL的链出信息,为当前URL的链如网页对其贡献的PageRank值。计算所有val的和,并乘上d,再加上常数(1-d)/N得到new_rank。输出为。static class PageRankIter_Reducer extends ReducerOverrideprotected void reduce(Text key, Iterable values,Context context)throws IOException, InterruptedException float pr = 0;float d = (float) 0.85;String url_list = null;for(Text val:values)String v = val.toString();if(v.contains() /含有的value为带有pr值的valuev = v.replace(,);pr = pr+Float.parseFloat(v);continue;url_list = v;float cur_pr = (1-d)/N+d*pr; /计算新的pr值 String out_value = Float.toString(cur_pr)+:+url_list;context.write(key, new Text(out_value);2.2.3PageRankViewerPageRankviewer输出最终排序结果。PageRankviewer从最后一次迭代的结果读出文件,并将文件名和其PR值读出,并以PR值作为key网页名为value,并且以PR值从大到小的顺序输出。 PageRankViewer_Mapperstatic class PageRankViewer_Mapper extends MapperOverrideprotected void map(LongWritable key, Text value, Context context)throws IOException, InterruptedException String vals = value.toString().split(s+);String url = vals0;float pr = Float.parseFloat(vals1.split(:)0);context.write(new FloatWritable(pr), new Text(url);/复写比较函数来实现从大到小逆序输出private static class DecFloatWritableComparator extends FloatWritable.ComparatorOverridepublic int compare(Object a, Object b) / TODO Auto-generated method stubreturn -pare(a, b);Overridepublic int compare(WritableComparable a, WritableComparable b) / TODO Auto-generated method stubreturn -pare(a, b);Overridepublic int compare(byte b1, int s1, int l1, byte b2, int s2, int l2) / TODO Auto-generated method stubreturn -pare(b1, s1, l1, b2, s2, l2);2.2.4PageRankDriverPageRankDriver主要是实现迭代的过程,用来完成迭代计算pr值的任务。public class PageRankDriver /deletetmp函数用来删除临时存储目录public static void deletetmp(String dir) throws IOExceptionConfiguration conf = new Configuration();Path path = new Path(dir);FileSystem fs = path.getFileSystem(conf);FileStatus fsts = fs.listStatus(path);for(FileStatus fst:fsts)if (fst.getPath().toString().contains(Data)fs.deleteOnExit(fst.getPath();fs.close();public static void main(String args) throws Exception / TODO Auto-generated method stubString path = hdfs:/localhost:8000/user/tzj/PageRank;String forItr = Data,Data;GraphBuilder.main(null);int i=0;for(i=0;i100;i+)forItr0 = path+/Data+(i);f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纪检监督知识培训会讲话课件
- 2025年度蔬菜水果储藏室购置与保鲜技术合同
- 2025年度风力发电场施工合同条件2
- 2025版化工设备采购与专业维护合同
- 2025调料品国际采购与分销合同
- 2025年度商品混凝土节能技术改造投资合作协议
- 2025年度合同财务审计与风险评估制度
- 红酒杯知识培训方案设计课件
- 红酒品鉴礼仪和知识培训课件
- 红酒业务培训课件
- ZDMS0.65S-A-YA型、ZDMS0.610S-A-YA型自动跟踪定位射流灭火系统现场控制箱使用说明书-佑安高科
- 无废校园知识培训课件
- 2025奇台县公安局招聘警务辅助人员(144人)考试参考题库附答案解析
- 中级政工考试题库及答案
- 助老员督导培训课件
- 医疗公司加盟管理办法
- 2025年浙江省中考道德与法治试题答案详解讲评(课件)
- 广州南沙深化面向世界的粤港澳全面合作白皮书(2022.06-2025.06)
- 2025年全国保密教育线上培训考试测试卷必考附答案详解
- 2025年陕西教师编制招聘考试笔试试题(含答案)
- 2025年高考英语新课标Ⅱ卷点评及2026备考方向 课件
评论
0/150
提交评论