使用
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:
分享到:
相关推荐
- **EM算法在MapReduce中的应用**:分析如何在MapReduce框架中实现EM算法。 - **案例研究:词对齐**:通过一个具体的例子——词对齐,来展示EM算法的实际应用,特别是在统计机器翻译中的作用。 通过以上核心知识...
- **图算法并行化**:如最短路径、最小生成树、子树搜索和PageRank算法。 - **聚类分析**:对文档、图像或其他数据进行分组。 - **相似性比较**:比较字符序列、文档、图像或数据集的相似性。 - **机器学习和数据...
4. 图算法:探索了如何在MapReduce框架下实现图算法,如并行广度优先搜索(Parallel Breadth-First Search)和PageRank算法。这在社交网络分析、网络拓扑等领域尤为重要。 5. EM算法在文本处理中的应用:介绍了期望...
期望最大化(EM)算法是机器学习中的重要工具,书中阐述了EM算法的基础,以及如何将其应用于隐藏马尔科夫模型和统计机器翻译的词对齐问题。 11. **结论**(Closing Remarks) 书中总结了MapReduce的局限性,如不...
【标题】:“中文分词MapReduce程序” 在大数据处理领域,MapReduce是一种并行计算模型,常用于处理海量数据。本程序是针对中文文本的一种特殊应用,它利用Java编程语言实现了中文分词功能,将复杂的分词任务分散到...
9. **并行与分布式计算**:在多核处理器和云计算环境下,了解并行算法和分布式算法的源码实现,如MapReduce模型,能提高程序的执行效率。 10. **优化算法**:线性规划、整数规划、遗传算法、模拟退火等,用于求解...
- **特殊点概述**:探讨在 Nutch 中使用 MapReduce 时遇到的一些特殊情况。 - **案例分析**:通过具体案例,展示如何应对这些特殊情况,包括但不限于数据分片、任务调度等问题。 #### 五、Java RMI + Lucene 构建...
Hive利用类SQL语句查询功能,将这些SQL语句翻译为MapReduce任务执行,从而简化了MapReduce程序设计,并能处理大数据统计分析。 在决策树算法方面,分类算法是数据挖掘领域常用的一种技术,包括决策树、贝叶斯、神经...
在“textgraphs09.pdf”论文中,作者可能详细讨论了如何应用MapReduce实现这些算法的具体步骤,包括数据预处理、Map和Reduce操作的设计、优化策略以及实验结果的分析。文档“使用Map-Reduce对大规模图进行排名和半...
3. 并行算法优化:除了join算子,可能还探讨了其他并行算法如MapReduce,以及如何针对特定硬件优化这些算法。 4. 负载均衡和容错机制:大规模分布式系统中,负载均衡确保各节点间工作负载均衡,容错机制则保证系统的...
《Spark原著中文版》通常会是Spark官方文档的中文翻译,提供全面而权威的Spark使用指南: 1. **Spark API**:详细解释Spark编程接口,包括Scala、Java、Python和R版本。 2. **部署模式**:本地模式、Standalone模式...
在分布式计算推荐器这一章节,书中深入探讨了如何利用Hadoop和MapReduce进行分布式推荐算法的实现。随着数据量的急剧增加,单机处理变得困难,而Mahout通过分布式计算能够有效地处理海量数据。作者通过维基百科链接...
- **Raft 协议**:Raft 协议是一种比 Paxos 更易于理解和实现的一致性算法。它通过简单的角色划分和状态机复制来实现一致性,降低了理解和实现的难度。 综上所述,《分布式系统领域经典论文翻译集》不仅包含了谷歌...
Hive处理的数据存储在Hadoop的分布式文件系统(HDFS)中,分析数据时底层实现依赖于MapReduce,而执行程序则在YARN(Yet Another Resource Negotiator)上运行。Hive在元数据存储方面,通常默认使用自带的derby...
7. **图算法(Graph Algorithms)**:Web可以用图模型表示,链接分析算法如PageRank是Google搜索排名的重要组成部分。 8. **人工智能(Artificial Intelligence, AI)**:包括深度学习、神经网络等,用于解决复杂的...
- **第4章:Making recommendations** - 经过前面几章的基础铺垫之后,本章重点介绍如何使用Mahout来实现具体的推荐算法。这包括基于内容的推荐、协同过滤等技术,并提供了丰富的代码示例帮助读者理解并实践。 - **...