格莱姆林 - 吉拉夫 - GraphX?在TitanDb上是什么?

7
我需要帮助确认我的选择...并了解您是否能提供一些信息。

我的存储数据库是使用Cassandra的TitanDb。

我有一个非常大的图形。我的目标是稍后在该图形上使用Mllib。

我的第一个想法:使用GraphX的Titan,但我没有发现任何正在开发中的东西...TinkerPop还没有准备好。

所以我看了看Giraph。TinkerPop,Titan可以与TinkerPop的Rexster通信。

我的问题是: 使用Giraph有什么好处?Gremlin似乎做同样的事情,并且是分布式的。

非常感谢您的解释。我认为我真的不理解Gremlin和Giraph(或GraphX)之间的区别。

祝您愉快。


注意标准的titan-1.0.0-hadoop1分发包中的文件read-cassandra.properties;它包含了一个"SparkGraphComputer Configuration"。 - arivero
2个回答

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

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

因此,它实质上是图形数据库和图形处理系统之间的区别。

  • 当您的应用程序需要频繁查询数据时,图形数据库会很适合。例如对于类似Facebook的应用程序,给定一个用户,返回他/她所有的朋友。这适用于图形数据库,并且可以使用Gremlin进行查询。

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

总之,这取决于您的应用程序。如果您认为您的应用程序类似于查询。不要费力地将其加载到任何图形处理系统中。如果您认为您的应用程序更像PageRank(需要处理整个图形)并且您有一个大型图形(至少1M边缘),请使用giraph或graphx。

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

p.s.最好在giraph graphx中添加一种输入格式,该格式接受存储在titan中的数据。


9
有趣的问题。我和你想的一样。
首先,关于MLlib的问题。我猜你指的是Apache Spark MLlib,这是建立在Apache Spark之上的机器学习(ML)实现。所以我的结论是:你想使用你基于Titan/Cassandra的图数据库中的数据来运行ML算法,例如聚类和分类等目的。 请注意,你也可以使用像spidy提到的Page Rank这样的图处理算法,在你的Titan/Cassandra图数据库中进行聚类等操作。换句话说,当你的起点是一个图形数据库时,你不需要使用ML来进行聚类。
Apache Spark MLlib似乎是未来的趋势并且得到了广泛支持,他们最近的公告涉及新的ML算法,虽然Apache Mahout,另一个Apache ML项目,在支持的ML算法数量方面更加成熟。Apache Mahout也采用了Apache Spark作为其数据存储层,因此我在本文中提到它。 除了内存计算外,Apache Spark还提供了上述的MLlib用于机器学习,Spark SQL类似于Hive on Spark,GraphX是一个图处理系统,如spidy所解释的,Spark Streaming用于流数据处理。
我认为Apache Spark本身是一个逻辑数据层,以RDD(Resilient Distributed Datasets)的形式表示在诸如Cassandra、Hadoop/Hcatalog和HBase等存储层之上。Apache Spark提供了与Cassandra的连接器。请注意,RDD是不可变的,您不能使用Spark更改数据,只能在Spark中处理和分析数据。 关于Apache Spark逻辑存储层RDD:您可以将RDD视为旧SQL时代的视图,RDD为您提供对Cassandra或HBase中表格的视图。还要注意的是,Apache Spark为3个开发环境提供API:Scala、Java和Python。 Apache Giraph也是一个图形处理工具集,功能相当于Apache Spark GraphX。Apache Giraph使用Hadoop作为数据存储层。您正在使用Titan/Cassandra,因此选择Apache Giraph作为解决方案时可能会涉及数据迁移任务。其次,您在帖子开头提出了有关MLlib使用ML的问题,而Apache Giraph不是ML解决方案。
你关于Giraph和Gremlin的结论是不正确的:尽管两者都使用图形数据库,但它们并不相同。Giraph是用于图形处理的解决方案,正如spidy所解释的那样。使用Giraph,您可以执行图分析算法,例如Page Rank,例如谁拥有最多的关注者,而Gremlin则用于遍历,例如使用实体(顶点)之间的复杂关系(边缘)查询图数据库,获得顶点和边缘属性的结果集。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接