我需要一些帮助来确认我的选择...并了解你是否可以给我一些信息。 我的存储数据库是TitanDb和Cassandra。 我有一个非常大的图表。我的目标是在后面的图上使用Mllib。
我的第一个想法:使用Titan和GraphX,但我没有找到任何东西或正在开发中...... TinkerPop还没有准备好。 所以我看看Giraph。 TinkerPop,Titan可以与TinkerPop的Rexster通信。
我的问题是: 使用Giraph有什么好处? Gremlin似乎也在思考并分发。
非常感谢你解释我。我想我不太了解Gremlin和Giraph(或GraphX)之间的区别。
度过愉快的一天。
答案 0 :(得分:10)
我相信你要求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中的数据。
答案 1 :(得分:8)
有趣的问题。我在同一条轨道上。
首先是关于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开始发布关于ML的问题,而Apache Giraph不是ML解决方案。
关于Giraph和Gremlin的结论不正确:尽管两者都使用图形数据库,但它们并不相同。 Spidy解释说,Giraph是图形处理的解决方案。使用Giraph,您可以执行图表分析算法,例如Page Rank,例如谁拥有最多的粉丝,而Gremlin则用于遍历,例如使用实体(顶点)之间的复杂关系(边)来获取图形数据库,从而获得顶点和边缘属性的结果集。