7

我需要一些帮助来确认我的选择...并了解您是否可以给我一些信息。我的存储数据库是带有 Cassandra 的 TitanDb。我有一个非常大的图表。我的目标是在后者的图表上使用 Mllib。

我的第一个想法:将 Titan 与 GraphX 一起使用,但我没有发现任何东西或正在进行开发...... TinkerPop 还没有准备好。所以我看看 Giraph。TinkerPop,Titan 可以通过 TinkerPop 与 Rexster 交流。

我的问题是:使用 Giraph 有什么好处?Gremlin 似乎也有同样的想法并且是分布式的。

非常感谢您向我解释。我想我不太了解 Gremlin 和 Giraph(或 GraphX)之间的区别。

祝你今天过得愉快。

4

2 回答 2

10
  • Gremlin 是一种图遍历语言,而 Giraph 或 Graphx 是图处理系统。

我相信你在问 graphx 或 giraph 和 titan 之间的区别。更具体地说,当您已经在图形数据库中拥有数据时,为什么还要使用图形处理系统?

所以本质上就是图数据库和图处理系统的区别。

  • 当您的应用程序需要频繁查询数据时,图形数据库就是您的选择。例如,对于 facebook 类型的应用程序,给定一个用户,返回他/她的所有朋友。这适用于图数据库,您可以使用 gremlin 进行查询。

  • 现在,如果你想计算每个用户在 facebook 中的排名,你需要在整个图上运行 pagerank 算法。换句话说,pagerank 算法会处理您的整个图表并返回给您 map 。这适用于图形处理系统。是的,您可以使用 gremlin 框架编写查询来执行此操作,但是 1. 它不会像 giraph 或 graphx 使用的底层 pregel 模型那样用户友好。2.效率不高。

总而言之,这实际上取决于您的应用程序。如果您认为您的应用程序就像查询。不要费心将加载卸载到任何图形处理系统中。如果您认为您的应用程序更像是 pagerank(需要处理整个图)并且您有一个大图(至少 1M 条边)。选择 giraph 或 graphx。

giraph 和 graphx 具有图形输入格式。您可以将数据转储到文件中的该表单中,并将其输入这些系统之一,或者您可以编写自己的输入格式。

ps最好在giraph graphx中添加一个输入格式,它接受存储在titan中的数据。

于 2015-03-25T19:35:02.560 回答
9

有趣的问题。我在同一条轨道上。

首先你关于 MLlib 的问题。我假设您指的是Apache Spark MLlib,它是 Apache Spark 之上的机器学习 (ML) 实现。所以我的结论是:您希望使用基于Titan / Cassandra的图形数据库中的数据来运行 ML 算法,以实现聚类和分类等目的。请注意,您还可以使用 spidy 提到的 Page Rank 等图形处理算法在您的 Titan/Cassandra 图形数据库上进行聚类等操作。换句话说:当您的起点是图形数据库时,您不需要 ML 进行聚类。

Apache Spark MLlib 似乎是面向未来的并得到广泛支持,他们最近的公告是关于新的 ML 算法,尽管另一个 Apache ML 项目Apache Mahout在支持的 ML 算法的数量方面更加成熟。Apache Mahout 也采用了 Apache Spark 作为他们的数据存储层,所以我在这篇文章中提到了它。除了内存计算之外,Apache Spark 还提供上述用于机器学习的 MLlib、类似于Spark 上的Hive的Spark SQLGraphX(如 spidy 所解释的图形处理系统)和用于处理流数据的Spark Streaming 。

我认为 Apache Spark 本身是一个逻辑数据层,表示为存储层(如 Cassandra、Hadoop/Hcatalog 和 HBase)之上的 RDD(弹性分布式数据集)。Apache Spark 提供了一个到 Cassandra 的连接器。请注意,RDD 是不可变的,您不能使用 Spark 更改数据,您只能在 Spark 中处理和分析数据。关于 Apache Spark 逻辑存储层 RDD:您可以将 RDD 作为旧 SQL 时代的视图进行比较,RDD 为您提供了一个视图,例如 HBase 的 Cassandra 中的表。另请注意,Apache Spark 为 3 种开发环境提供了一个 API:Scala、Java 和 Python。

Apache Giraph也是一个图形处理工具集,功能等同于 Apache Spark GraphX。Apache Giraph 使用 Hadoop 作为数据存储层。您正在使用 Titan/Cassandra,因此当您选择 Apache Giraph 作为解决方案时,您可能会输入数据迁移任务。其次,您以一个关于使用 MLlib 和 Apache Giraph 不是 ML 解决方案的 ML 的问题开始您的帖子。

您关于 Giraph 和 Gremlin 的结论是不正确的:尽管两者都使用图形数据库,但它们并不相同。Giraph 是 spidy 解释的图形处理解决方案。使用 Giraph,您可以执行图分析算法,例如 Page Rank,例如谁拥有最多的关注者,而Gremlin用于遍历,例如使用实体(顶点)之间的复杂关系(边)查询图数据库,获取顶点和边的结果集特性。

于 2015-04-21T21:33:02.487 回答