pagerank 算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
主要内容是在Hadoop云计算环境下对Pagerank算法进行了并行化计算的分 析研究,将Pagerank算法与Mapreduce编程模型有效地结合起来,形成了
在Hadopp云计算环境下运行的Pagerank并行算法
18
9
若有,JobTracker 分派任务作业给 TaskTracker,TaskTracker 再分配具体 的物理节点机执行任务。Master/Slave 是一种 Slave 主动询问、Master 被 动答复的过程。整个过程分为三步: JobClient 提交作业任务、Job-Tracker 调度作业任务TaskTracker 分配具体节点机运行作业。 (1) JobClient 提交作业任务: 当用户在提交作业时,JobClient 会调用静 态方法 runJob 实例化一个 JobClient 实例,然后此实例调用 submitJob 方法提交作业,并得到一个 runningJob 对象。它被用来监视作业的状态, 并一直运行到作业完成。submitJob 通过内部方法向 Hadoop 的 HDFS 上传 以下几个文件: job.xml、job.jar 和 job.split、job.xml 是作业配置文件 ,比如是关于映射类、合并类、规约类、输入输出格式的规定; job.jar
1-d->initial_pagerank;
(initial_pagerank,sequence)->value; Output(key,value);
}
15
算法设计
基于Hadoop MapReduce的PageRank算法思想描述如下:(1)Pagerank
迭代阶段的Map函数将网页链接结构表中每一行记录里的目标节点序列中
其中 A(Z)代表有链接直接指向页面Z的网页集,即页面Z的度;PR(Z)代表页 面Z的PageRank数值; Na表示网页a正向链接数量;PR(a)/Na表示网页a 将自 己的 PageRank 值平均分配给自身的正向链接;
4
D 是阻尼系数,0 < D < 1,通常取 0. 85,由于用户在行网页浏览时不
6
主要缺点:
算法在Google搜索引擎的成功运用,说明其是高效、可行的。但
由于完全基于链接分析,且链接信息相对静态,没有考虑网页使 用的动态信息,因此算法还存在一些缺陷,主要可归纳为:
(1)主题漂移问题
PageRank算法仅利用网络的链接结构,无法判断网页内
容上的相似性;且算法根据向外链接平均分配权值使得主题 不相关的网页获得与主题相关的网页同样的重视度,出现主 题漂移。
基于MapReduce的PageRank算法
主要内容
Pagerank 算法的简介。
ቤተ መጻሕፍቲ ባይዱ
Hadoop-MapReduce 框架介绍
Hadoop-MapReduce 下的 PageRank算法
2
Pagerank 算法的简介
算法的思想
算法的不足与改进
3
主要思想:
PageRank 形如投票系统一样,一个链接结构从网页 x指向另一网页y,则 y得票一次。PageRank 的 PR 值不仅跟自己得票相关,而且跟向自己投票的 网页也相关,x向y投票,x重要就代表 y 更重要。 PageRank 算法描述如下: ( 1) PR 值具有传递性。x指向y时,x的PR值也部分传递给y。 ( 2) 重要性具有传递性,一个重要的网页比一个不重要网页传递的权威更 多. 当考虑一个页面的所有入度和出度时,页面 Z 的PageRank 值计算公下: PR(Z)=(1-D)+D×∑PR(a)/Na ( a∈A(Z) )
核心。当 JobTracker 接到 Job-Client 提交的作业后,JobTracker 会产生 一个 JobIn-Progress 进程对象,它代表一个作业进程对象,并维护相应作 业的相关信息。例如作业运行状态、作业运行时间等信息。同时将分配Task 节点机位置信息记录下来。JobTracker 会通过 offerService 方法开启作业 初始化线程,目的是初始化作业的所有任务。JobTracker 会定义两个数组列 表 JobsInitQueue 和 JobsByPriority,并将作业进程加入 JobInitQueue 和 JobsByPriority 中,然后用resortPriority( )方法对作业的优先级排序 ( 可基于不同的排序策略) ,然后唤醒排在第一的作业进程,准备调度相应 的 Task 运行作业。 (3) TaskTracker 分配机器运行作业任务: TaskTracker 在空闲时会调用 JobTracker. AssignTask 来询问JobTracker 是否有任务安排,如果在等待 队列中有作业进程,JobTracker 将分配作业任务给 TaskTracker,并把 相应的 Task 任务节点机启动运行任务
17
如果每一个迭代过程分为两个MapReduce阶段,在第一个阶段中生成 Pagerank向量,而第二阶段将生成的pagerank向量与第一阶段的输入数据
合并,并用于下一次迭代,这样就会需要两次访问HDFS.所以,可 将 两
个 阶 段 合 并 为 一 个 阶 段,在Map中输出key及其对应的links,在 Reduce中将该key新的Pagerank与links一起用于下次迭代。
MapReduce的计算过程,如何设计该过程也是pagerank并行算法的核心。
13
因为网页链接关系文件中包含了大量的网页节点数据,所以由网页链接关 系文件转换成网页链接结构表的过程也采用并行MapReduce计算来处理. Map函数生成由起始节点到目标点的<key,vlue>键值对,其中key为起始 节点,value为目标节点.将Map函数执行后生成中间结果<key, List(value)> 作为Reduce函数的输入,然后,Reduce函数把每个key的 value列表输出,并为每个key初始化PR值,再输出文件到HDFS,并作为并 行Pagerank迭代计算的输入。 算法描述如下:Map(key,value){ ∥key存放起始节点,value存放目标节点∥ 从网页链接关系文件中读出每条记录
7
(2)偏重旧网页问题
决定网页PR值的主要因素是指向它的链接个数的多少。一个含 有重要价值的新网页,可能因为链接数目的限制很难出现在搜 索结果的前面,而不能获得与实际价值相符的排名。算法并不 一定能反映网页的重要性,存在偏重旧网页现象。
(3)忽视用户个性化问题
PageRank算法在设计之初,没有考虑用户的个性化需要。个性
入,然后迭代执行Pagerank并行算法,并统计算法收敛性,若达到收敛条
件则算法结束,输出PR值,否则继续迭代过程。
16
基于Hadoop MapReduce的Pagerank算法伪代码描述如:
Map(key,value){//key 为网页x,value为(PK(x), links[y1,y2,…,yn]),links为出链链接页面 Output(x,links[y1,y2,…,yn]);//用于下次迭代 For each yi in links{ Sx=PR(x)/n; output(yi,Sx);} } Reduce(key,value){ //value 为list of [Sx]和 links[y1,y2,… ,yn] Px=o; For each Sx in list{ if(Sx 为X的pagerank){ Px+=Sx;} else{//用于下次迭代 output(value);} Px=d*Px+(1-d); output(x,Px,links) } }
各个目标节点输出为<key(目标节点),value(起始节点Pk值/目标节 点数量)>。(2)MapReduce框架收集Map函数输出中间结果,包括key
及其相应的value列表.在Reduce函数处理时,对于每个key由公式计算出
每个页面新的Pk值,并将结果保存在HDFS中,以用于下一次迭代(3)把 上面生成的结果与网页链接结构表进行合并处理,并作为下一次迭代的输
For each目标点in记录 {
起始节点->key;目标节点->value;} output(key,value);}
14
Reduce(key,list(value)){
//key存放起始节点,list(value)为目标节点列表
For each value in list{ value add to sequence;}
可能按当前页面中的链接前进,而是随机跳跃完全无关页面,则 D 实际上 代表的是用户跟随网页链接浏览,不产生随机跳跃的概率值。加入阻尼系数 D 是能保证 PageRank算法总是收敛的。
5
主要优点:
PageRank算法通过网页间的链接来评价网页的重要性,在一定程度上避免和减少 了人为因素对排序结果的影响;采用与查询无关的离线计算方式,使其具有较高的 响应速度;一个网页只能通过别的网页对其引用来增加自身的PR值,且算法的均分 策略使得一个网页的引用越多,被引用网页所获得的PR值就越少。因此,算法可以 有效避免那些为了提高网站的搜索排名而故意使用链接的行为。
是执行任务相关类文件集合,例如 MapperClass,ReduceClass 等主要功能
类; job.split 是关于分块信息的文件,它包括块怎么分,分为多少块( 默 认 64M) 的参数约定。
10
(2) JobTracker 调度作业任务: JobTracker 是 Hadoop-MapReduce 框架的
件块交给运行Map函数的节点,并按照一定格式的<Key,value>键/值
对输出至Master节点,然后再由运行Reduce函数的节点读取Map函数输出 的中间结果,进行汇总处理,形成最终结果,最后保存到HDFS中在Hadoop
MapReduce计算模式中,并行化pagerank算法的每次迭代都是一个
化搜索引擎的兴起,对PageRank排序算法提出新的挑战。
8
Hadoop-MapReduce 框架介绍
MapReduce是一个用于大规模数据处理的分布式计算模型。当用户定义一个 Map 函数来处理一个key / value 对然后生成一批中间的 key / value 对 再定义一个 Reduce 函数将所有这些中间的有相同 key 的values 合并起来 。现实生活中有很多这种模型,Hadoop 的 Map / Reduce 框架也是基于这 个原理实现。一个 MapReduce 任务,在运行程序之前,必须保证 Master节 点的 NameNode,SecondaryNameNode,JobTracker 等进程和 Slaves 节点 的 DataNode,TaskTracker等进程启动,JobTracker 进程和 TaskTracker 进程分别运行在 Master 和 Slaves 上。MapReduce 首先将作业通过 JobClient 提交作业给 Master 的 JobTracker,接着 JobTracker 将作业 放在等待队列中。Slaves 节 点的TaskTracker 随机地通过远程过程调用( RPC) 发送询问信息,询问是否有作业任务安排。
11
基于MapReduce的PageRank算法
算法的内容
算法的实现
12
基本思想:
对于pagerank算法,MapReduce的处理过程可以构思如下:Hadoop中的
master节 点 先 将HDFS中存储网页链接关系的文件划分为多个文件块,
然后再交给每个Slave节点,而每个Slave节点上可能会进行Map函数处理 也可能会进行Reduce函数处理先将划分好的网页链接关系文件的某一个文