Graph 使用Hadoop/MapReduce查找连接的组件

Graph 使用Hadoop/MapReduce查找连接的组件,graph,hadoop,mapreduce,social-networking,graph-algorithm,Graph,Hadoop,Mapreduce,Social Networking,Graph Algorithm,我需要为一个巨大的数据集找到连接的组件。(图是无向的) 一个明显的选择是MapReduce。但是我是MapReduce的新手,我没有足够的时间来自己编写代码 我只是想知道,既然这是社交网络分析中的一个非常常见的问题,那么是否有任何现有的API可以解决这个问题 或者,如果有人知道任何可靠的(经过尝试和测试的)源代码,至少我可以自己开始实现 谢谢我真的不知道是否有可以找到强连接组件的API。但是,我实现了BFS算法来查找从源节点到图中所有其他节点的距离(图是一个有向图,有6500万个节点) 其想法是

我需要为一个巨大的数据集找到连接的组件。(图是无向的)

一个明显的选择是MapReduce。但是我是MapReduce的新手,我没有足够的时间来自己编写代码

我只是想知道,既然这是社交网络分析中的一个非常常见的问题,那么是否有任何现有的API可以解决这个问题

或者,如果有人知道任何可靠的(经过尝试和测试的)源代码,至少我可以自己开始实现


谢谢

我真的不知道是否有可以找到强连接组件的API。但是,我实现了BFS算法来查找从源节点到图中所有其他节点的距离(图是一个有向图,有6500万个节点)

其想法是在一次迭代中探索每个节点的邻居(距离为1),并将reduce的输出反馈给map,直到距离收敛。贴图将从每个节点发出尽可能短的距离,并使用列表中最短的距离缩小更新的节点


我建议你检查一下。也。这两个链接将为您提供map reduce范例中图形算法的基本概念(如果您还不熟悉的话)。本质上,您需要改变算法以使用DFS而不是BFS

我自己写了一篇博客:

但是MapReduce并不适合这些图形分析。为了更好地使用BSP(批量同步并行),ApacheHama在Hadoop HDFS之上提供了一个很好的图形API

我在这里用MapReduce编写了一个连接组件算法:(Mindist搜索)

还可以在以下位置找到Apache Hama的BSP版本:

实现不像MapReduce那么困难,速度至少快了10倍。 如果您感兴趣,请在TRUNK中查看最新版本并访问我们的邮件列表


你可能想看看卡内基梅隆大学的研究报告。它们使用MapReduce提供了高效且优雅的实现。它们还提供二进制文件、示例和非常详细的文档

实现本身基于U Kang在2009年提出的广义迭代矩阵向量乘法(GIM-V)

-实施和 乌康、查拉兰波斯E.祖拉卡基斯、克里斯托斯·法卢索斯的观测 IEEE数据挖掘国际会议(ICDM 2009)

编辑:
官方实现实际上仅限于21亿个节点(节点id存储为整数)。我正在github()上创建一个fork来共享我的补丁和其他增强功能(例如Snappy压缩)。

这是一个老问题,但这里有一些您想要检查的东西。我们在Spark平台上使用map reduce实现了连接组件


就目前而言,我一点也不担心复杂性。我正在做一个概念验证的事情,所以现在运行时间并不重要。实际上,我的时间很短,所以我没有使用普通的JAVA/C编程来实现它,而是希望得到一个现有的实现,不管它有多脏。目前,除了Hadoop/MapReduce之外,我不可能以任何方式进行查找。谢谢你用MapReduce做原型?有趣。我在博客中的解决方案是站在那里工作的,我认识的许多其他人都对它进行了生产测试。不要犹豫,接受它。