Gremlin - Giraph - GraphX ?在 TitanDb 上

Posted

技术标签:

【中文标题】Gremlin - Giraph - GraphX ?在 TitanDb 上【英文标题】:Gremlin - Giraph - GraphX ? On TitanDb 【发布时间】:2015-05-19 16:43:19 【问题描述】:

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

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

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

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

祝你有美好的一天。

【问题讨论】:

注意标准titan-1.0.0-hadoop1发行版中的文件read-cassandra.properties;它包括一个“SparkGraphComputer 配置” 【参考方案1】: Gremlin 是一种图遍历语言,而 Giraph 或 Graphx 是图形处理系统。

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

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

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

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

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

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

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

【讨论】:

【参考方案2】:

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

首先是关于 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 SQL 类似于 Spark 上的 Hive,GraphX 是 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 用于遍历,例如使用实体(顶点)之间的复杂关系(边)查询图数据库,获取顶点和边属性的结果集。

【讨论】:

以上是关于Gremlin - Giraph - GraphX ?在 TitanDb 上的主要内容,如果未能解决你的问题,请参考以下文章

Giraph入门

Giraph源代码分析—— Aggregators 原理解析

在 Apache Giraph 中创建日志的使用。

Giraph源码分析—— 添加消息统计功能

Hello Giraph

Hello Giraph