0

我正在研究大数据,我的项目由具有文本数据的图形组成。我必须在一个项目本身中计算顶点之间的相似性、跳跃概率、连接组件的数量、页面排名向量和随机游走。

我在 hadoop 中实现了它们,但我认为这需要更多时间(图表有 2500 个节点 4000 个边 600 个连接的组件需要 25 分钟)那么实现这些的最佳选择是什么,apache hadoop 或 apache giraph 或 apache twister?

4

2 回答 2

1

寻找连通组件、页面排名计算和随机游走是迭代算法的示例。传统的 Map-Reduce 编程模型对于迭代算法(尤其是图形算法)不是一个好的选择。原因是在map-reduce的每次迭代中,所有的数据都必须从mapper传输到reducer(例如高I/O和Network)。相比之下,Giraph 非常适合这类算法。在 giraph 中,所有数据都被分区和加载一次,并且在每次迭代(超级步骤)中,只有结果通过机器传输。

于 2015-05-30T05:10:09.410 回答
0

虽然这个问题发布已经有一段时间了,但我还是想根据我的经验加入这个帖子。对于您对处理时间的关注,这取决于您对数据进行了多少处理?您是在单个 MR Job 中进行上述所有计算,还是在同一个程序中的多个 MR Job 中进行计算?如果是,那么它可能需要时间。您还运行了多少次迭代来计算页面排名?你的集群有多大?

我会选择 Masoud 的回答,即选择 Giraph 进行图形处理,并希望添加更多内容。使用 Map Reduce 编程模型很难进行图形处理有几个原因。

  1. 您需要将图划分为,因为它们不适合单台机器。(例如,如果您有来自 5 所不同大学的节点/用户,则进行范围分区以将社区保持在一起,那么您很可能会在同一台机器上拥有来自单个大学的所有节点)

  2. 您可能需要执行数据复制。

  3. 减少跨分区通信。

回到您的第二个问题,对 Apache Twister 没有任何了解,我会选择 Apache Giraph,因为它是专门为大规模分布式图算法构建的,该框架可以处理随之而来的所有繁重的处理需求。这些基本上是因为图算法的特性,例如遍历图,将信息沿其边缘传递到其他节点等。

我最近在我的一个大数据项目中使用了 Giraph,这是一次很棒的学习。如果我没有回复太晚,你应该调查一下。

您可以参考这些幻灯片以获取详细说明。

于 2015-07-04T22:23:18.757 回答