`
run_xiao
  • 浏览: 195384 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

使用MapReduce实现图的一些算法[翻译]

阅读更多

 

使用 MapReduce 实现图的一些算法

 

随着处理的图规模增长(比如复杂网络),以致图的节点和边信息无法完全载入内存,这给执行在图上的算法带了很大挑战

。而云计算是一种很好的解决方案。《 Graph Twiddling in a MapReduce World 》介绍了将一些图算法分解成一系列 MapReduce Job 的方案

 

1 )首先给一个简单的例子作为下面将介绍的较复杂的算法的一部分:统计每个节点的度,并加入到每条边的记录中。

输入:图中的每条边,比如: (FRED, ETHEL)

输出: Key 为每条边, Value 为该边两节点的度

执行过程如图所示:

 

该过程使用两个 Job

第一个 Job mapper 读入表示边的节点对记录,将每条边分解成两条记录输出, Key 为边的每个节点, Value 为边; reducer 输入为每个节点,以及包含该节点的所有边;这样即可统计每个节点的度,并可获得边的其中一个节点的度信息。

第二个 Job 仅在 reducer 中合并边的每个节点的度。

 

2 )图简化算法:去掉回路、重复的边。

mapper 去掉产生回来的边:先将所有节点排序产生一个列表,对每条边的节点若第一次出现在列表中,则从列表中取得该节点;若列表中少于两个节点,则忽略掉剩余所有边。

然后 mapper 根据边的节点为其产生一个 hashcode ,作为输出的 key ,确保代表相同关系的边具有相同的 key (有向图可先对边的节点排序)。(这里有个问题: mapper 中保存的 member list 是局部的,并非被所有的 mapper 共享?

reducer 中记录 key 标识下的唯一条边,去掉其他重复边。

 

         3 )遍历三元环(计算节点三元环的个数是统计复杂网络聚类系数的重要步骤)

         遍历三元环通常分两步: 1. 遍历两条边形成的开三元组( open triads ),例如 {(A, B), (B, C)} 2. 判断是否存在边闭合每个开三元组形成三元环。

具体的方法:对节点排序,按具有较低次序的节点分组所有边(每条边仅属于一组),然后判断每组边里的每一对边是否形成三元环;对节点可按度排序,具有较低度的节点因为本身相连的边就很少,因此其组内边较少,而度较大的节点,因为与其相连的一些边以分配到度较低的节点的组中,因此确保其组也不会很大。

采用 MapReduce 框架的执行过程:

先采用算法( 1 )添加每条边的节点度信息;再使用两个 Job 处理。

第一个 Job :在 mapper 中,提取每条边具有较小度的节点作为 Key ,边作为 Value 以输出; reducer 中成对组合 Value 中的边,形成开三元组,输出以封闭该开三元组的边为 Key ,该开三元组为 Value

第二个 Job :输入为第一个 Job 的输出和边记录文件。对于第一个 Job 的输出 ,mapper 输出仍以边为 Key ,开三元组为 Value ;对边记录, mapper 输出以边为 Key value 为空;

reducer 中,若 value 为非空,则 value 中的所有三元组与 key 对应的边组合成三元环。

执行过程如图所示:

 

Job1

 

Job2:

 

 

分享到:
评论

相关推荐

    云计算 mapreduce - <Data-Intensive[1].Text.Processing.With.MapReduce>

    - **EM算法在MapReduce中的应用**:分析如何在MapReduce框架中实现EM算法。 - **案例研究:词对齐**:通过一个具体的例子——词对齐,来展示EM算法的实际应用,特别是在统计机器翻译中的作用。 通过以上核心知识...

    Ch5-MapReduce算法设计1

    - **图算法并行化**:如最短路径、最小生成树、子树搜索和PageRank算法。 - **聚类分析**:对文档、图像或其他数据进行分组。 - **相似性比较**:比较字符序列、文档、图像或数据集的相似性。 - **机器学习和数据...

    《MapReduce数据密集型文本处理》.pdf

    4. 图算法:探索了如何在MapReduce框架下实现图算法,如并行广度优先搜索(Parallel Breadth-First Search)和PageRank算法。这在社交网络分析、网络拓扑等领域尤为重要。 5. EM算法在文本处理中的应用:介绍了期望...

    Data-Intensive Text Processing with MapReduce

    期望最大化(EM)算法是机器学习中的重要工具,书中阐述了EM算法的基础,以及如何将其应用于隐藏马尔科夫模型和统计机器翻译的词对齐问题。 11. **结论**(Closing Remarks) 书中总结了MapReduce的局限性,如不...

    中文分词mapreduce程序

    【标题】:“中文分词MapReduce程序” 在大数据处理领域,MapReduce是一种并行计算模型,常用于处理海量数据。本程序是针对中文文本的一种特殊应用,它利用Java编程语言实现了中文分词功能,将复杂的分词任务分散到...

    程序员实用算法书中的源码

    9. **并行与分布式计算**:在多核处理器和云计算环境下,了解并行算法和分布式算法的源码实现,如MapReduce模型,能提高程序的执行效率。 10. **优化算法**:线性规划、整数规划、遗传算法、模拟退火等,用于求解...

    大数据技术 Hadoop开发者第二期 MapReduce HDFS Hive Mahout HBase 共64页.pdf

    - **特殊点概述**:探讨在 Nutch 中使用 MapReduce 时遇到的一些特殊情况。 - **案例分析**:通过具体案例,展示如何应对这些特殊情况,包括但不限于数据分片、任务调度等问题。 #### 五、Java RMI + Lucene 构建...

    大数据环境下基于决策树算法的人才招聘系统优化研究.pdf

    Hive利用类SQL语句查询功能,将这些SQL语句翻译为MapReduce任务执行,从而简化了MapReduce程序设计,并能处理大数据统计分析。 在决策树算法方面,分类算法是数据挖掘领域常用的一种技术,包括决策树、贝叶斯、神经...

    使用Map-Reduce对大规模图进行排名和半监督分类

    在“textgraphs09.pdf”论文中,作者可能详细讨论了如何应用MapReduce实现这些算法的具体步骤,包括数据预处理、Map和Reduce操作的设计、优化策略以及实验结果的分析。文档“使用Map-Reduce对大规模图进行排名和半...

    MG1433074_杨文家_大规模分布式统计机器翻译离线模型训练方法与系统1

    3. 并行算法优化:除了join算子,可能还探讨了其他并行算法如MapReduce,以及如何针对特定硬件优化这些算法。 4. 负载均衡和容错机制:大规模分布式系统中,负载均衡确保各节点间工作负载均衡,容错机制则保证系统的...

    ApacheSpark设计与实现.pdf+ApacheSpark源码剖析.pdf+Spark原著中文版.pdf

    《Spark原著中文版》通常会是Spark官方文档的中文翻译,提供全面而权威的Spark使用指南: 1. **Spark API**:详细解释Spark编程接口,包括Scala、Java、Python和R版本。 2. **部署模式**:本地模式、Standalone模式...

    mahout in action中文版 最全的 docx

    在分布式计算推荐器这一章节,书中深入探讨了如何利用Hadoop和MapReduce进行分布式推荐算法的实现。随着数据量的急剧增加,单机处理变得困难,而Mahout通过分布式计算能够有效地处理海量数据。作者通过维基百科链接...

    分布式系统领域经典论文翻译集.pdf

    - **Raft 协议**:Raft 协议是一种比 Paxos 更易于理解和实现的一致性算法。它通过简单的角色划分和状态机复制来实现一致性,降低了理解和实现的难度。 综上所述,《分布式系统领域经典论文翻译集》不仅包含了谷歌...

    Hive原理及使用笔记(精华版)

    Hive处理的数据存储在Hadoop的分布式文件系统(HDFS)中,分析数据时底层实现依赖于MapReduce,而执行程序则在YARN(Yet Another Resource Negotiator)上运行。Hive在元数据存储方面,通常默认使用自带的derby...

    Iweb书本代码

    7. **图算法(Graph Algorithms)**:Web可以用图模型表示,链接分析算法如PageRank是Google搜索排名的重要组成部分。 8. **人工智能(Artificial Intelligence, AI)**:包括深度学习、神经网络等,用于解决复杂的...

    Mahout In Action英文完整版

    - **第4章:Making recommendations** - 经过前面几章的基础铺垫之后,本章重点介绍如何使用Mahout来实现具体的推荐算法。这包括基于内容的推荐、协同过滤等技术,并提供了丰富的代码示例帮助读者理解并实践。 - **...

Global site tag (gtag.js) - Google Analytics