我需要找到连接的部件一个巨大的数据集。 (格拉夫是无向)
一个显而易见的选择是MapReduce的。 但我是一个新手,MapReduce和我的时间很短安静来把它捡起来,并编写它自己。
我只是想知道如果有一个相同的任何现有的API,因为它是在社会网络分析的一个非常普遍的问题?
或者至少,如果有人知道任何可靠的(久经考验的),使用它至少我可以开始使用自己执行源?
谢谢
我需要找到连接的部件一个巨大的数据集。 (格拉夫是无向)
一个显而易见的选择是MapReduce的。 但我是一个新手,MapReduce和我的时间很短安静来把它捡起来,并编写它自己。
我只是想知道如果有一个相同的任何现有的API,因为它是在社会网络分析的一个非常普遍的问题?
或者至少,如果有人知道任何可靠的(久经考验的),使用它至少我可以开始使用自己执行源?
谢谢
我的博客上讲述它为我自己:
http://codingwiththomas.blogspot.de/2011/04/graph-exploration-with-hadoop-mapreduce.html
但是,MapReduce的是不适合这些图表分析的东西。 更好地利用BSP(散装同步并行),选择那些,阿帕奇哈马提供在Hadoop HDFS的顶部上的良好图形API。
我在这里写了一个连接的组件算法的MapReduce:(Mindist搜索)
https://github.com/thomasjungblut/tjungblut-graph/tree/master/src/de/jungblut/graph/mapreduce
另外一个BSP版本的Apache哈马可以在这里找到:
https://github.com/thomasjungblut/tjungblut-graph/blob/master/src/de/jungblut/graph/bsp/MindistSearch.java
实现并不困难,因为在MapReduce和它至少快10倍。 如果你有兴趣,在结帐TRUNK的最新版本,请访问我们的邮件列表。
http://hama.apache.org/
http://apache.org/hama/mail-lists.html
我真的不知道,如果一个API可用它有方法来寻找强连通分量。 但是,我实现了BFS算法来找出在图(图中是一个有向图大65万个节点)中的所有其他节点从源节点的距离。
其想法是探索每个节点的邻居(1距离)在一次迭代和喂养减少回地图的输出,直到距离收敛。 地图发射从每个节点可能的最短距离,并减少更新具有来自所述列表的距离最短的节点。
我建议,检查了这一点 。 此外, 这可能帮助 。 这两个环节将要给大家介绍的图形算法映射精简模式的基本思想(如果已经不熟悉)。 从本质上讲,你需要扭转的算法使用DFS而非BFS。
你可能想看看天马项目卡内基梅隆大学。 他们提供了一个高效的 - 优雅 - 实现使用MapReduce的。 它们还提供二进制文件,样本和一个非常详细的文档。
实施本身是基于在2009年用U康提出的广义迭代矩阵向量乘法(GIM-V)。
PEGASUS:一个千兆级图形挖掘系统 -实施和观察ü康,Charalampos E. Tsourakakis,克里斯托斯·法劳索斯在数据挖掘的IEEE国际会议(2009年ICDM)
编辑:正式实施,实际上是限制在2.1亿节(节点ID存储为整数)。 我创建GitHub上(叉子https://github.com/placeiq/pegasus )分享我的补丁和其他增强功能(如斯纳皮压缩)。
这是一个有点老问题,但在这里是要检出的东西。 我们使用的星火平台的map-reduce实现连接组件。
https://github.com/kwartile/connected-component