我需要为庞大的数据集找到连接的组件。 (图表未指向)
一个明显的选择是MapReduce。但我是MapReduce的新手,我很安静,没时间去接你并自己编码。
我只是想知道是否有相同的现有API,因为它是社交网络分析中一个非常常见的问题?
或者至少如果有人知道任何可靠(经过试验和测试)的来源,至少我可以自己开始实施这个来源吗?
由于
答案 0 :(得分:8)
我为自己写了博客:
http://codingwiththomas.blogspot.de/2011/04/graph-exploration-with-hadoop-mapreduce.html
但MapReduce不适合这些Graph分析。更好地使用BSP(批量同步并行),Apache Hama在Hadoop HDFS之上提供了一个很好的图形API。
我在这里用MapReduce写了一个连通分量算法:( Mindist搜索)
https://github.com/thomasjungblut/tjungblut-graph/tree/master/src/de/jungblut/graph/mapreduce
此处还可以找到Apache Hama的BSP版本:
实现并不像MapReduce那么困难,并且速度至少快10倍。 如果您有兴趣,请查看TRUNK的最新版本并访问我们的邮件列表。
答案 1 :(得分:3)
我真的不知道API是否可用,它具有查找强连接组件的方法。但是,我实现了BFS算法来查找从源节点到图中所有其他节点的距离(该图是一个有6500万个节点的有向图)。
我们的想法是在一次迭代中探索每个节点的邻居(距离为1),并将reduce的输出反馈回地图,直到距离收敛为止。地图从每个节点发出可能的最短距离,并减少更新距离列表最短距离的节点。
我建议查看this out。另外,this could help。这两个链接将为您提供有关map reduce算法中图形算法的基本概念(如果您已经不熟悉)。实质上,您需要扭曲算法以使用DFS而不是BFS。
答案 2 :(得分:2)
您可以查看卡内基梅隆大学的Pegasus project。它们使用MapReduce提供高效且优雅的实现。他们还提供二进制文件,样本和非常详细的文档。
实现本身基于U Kang在2009年提出的广义迭代矩阵 - 向量乘法(GIM-V)。
PEGASUS: A Peta-Scale Graph Mining System - 实施和 观察U Kang,Charalampos E. Tsourakakis,Christos Faloutsos In IEEE国际数据挖掘大会(ICDM 2009)
编辑: 官方实现实际上限于2.1亿个节点(节点id存储为整数)。我正在github上创建一个fork(https://github.com/placeiq/pegasus)来共享我的补丁和其他增强功能(例如Snappy压缩)。
答案 3 :(得分:1)
这是一个有点老问题,但这里有你要结账的东西。我们在Spark平台上使用map-reduce实现了连接组件。