Neo4j或GraphX/Giraph有什么选择?

Rom*_*man 17 neo4j giraph spark-graphx

刚开始我的图表处理方法和工具的游览.我们基本上做了什么 - 计算一些标准指标,如pagerank,聚类系数,三角计数,直径,连通性等.过去对Octave感到满意,但是当我们开始使用图表时让我们说10 ^ 9个节点/边缘我们卡住了.

因此,可能的解决方案可以是使用Hadoop/Giraph,Spark/GraphX,Neo4j在其上的分布式云等.

但由于我是初学者,有人可以建议实际选择什么?在使用Spark/GraphX和Neo4j时,我没有什么区别?现在我考虑Spark/GraphX,因为它有更多类似Python的语法,而neo4j有自己的Cypher.neo4j中的可视化很酷但在如此大规模上没有用.我不明白是否有理由使用额外级别的软件(neo4j)或只使用Spark/GraphX?因为我理解neo4j不会节省那么多时间,就像我们使用纯粹的hadoop vs Giraph或GraphX或Hive一样.

谢谢.

Pra*_*K S 17

Neo4J:它是一个图形数据库,可帮助识别通常来自磁盘的关系和实体数据.它的受欢迎程度和选择在此链接中给出.但是当它需要处理非常大的数据集和实时处理以产生图形结果/表示时,它需要水平扩展.在这种情况下,Neo4J与Apache Spark的组合将以这种方式提供显着的性能优势,Spark将作为外部图形计算解决方案.

Mazerunner是一个扩展Neo4J的分布式图形处理平台.它使用消息代理处理分发图形处理作业到Apache Spark GraphX模块.


GraphX: GraphX是Spark中用于图形和图形并行计算的新组件.在较高的层次上,GraphX通过引入一个新的Graph抽象来扩展Spark RDD:一个定向的多图,其属性附加到每个顶点和边.它支持多种Graph算法.

结论: 始终建议使用Neo4j与GraphX的混合组合,因为它们更易于集成.

要实时处理和处理大型数据集,请使用neo4j和GraphX.
对于简单的持久性并显示简单图形显示表示的实体关系,请使用独立的neo4j.

  • 使用“Neo4j with GraphX”是什么意思?你的意思是同时使用它们吗?如何以及为什么? (2认同)

tkr*_*man 6

GraphX更像是一个实时处理框架,用于以图形形式表示的数据(并且它更好).使用GraphX,您可以使用需要大量处理能力的各种算法(RAM和CPU),使用neo4j,您可以(可靠地)持久化并更新该数据.这就是我的建议.

我确信@kennybastani在该领域做了一些非常有趣的进步,你可以看看他的mazerunner解决方案.它也作为码头图像发货,所以你可以用棍子戳它并自己找出你喜欢与否.

此映像使用Apache Spark部署容器,并使用GraphX对从Neo4j导出的子图执行ETL图分析.分析结果将应用于Neo4j数据库中的数据.


小智 6

Neo4j:我没有使用它,但我认为它在一台机器上完成了所有的图形计算(如pagerank).这能够处理您的数据集吗?这可能取决于您的整个图表是否适合内存,如果不符合,它将如何有效地处理来自磁盘的数据.它可能会遇到与Octave相同的问题.

Spark GraphX:GraphX在一组机器上分割图形数据(顶点和边).这为您提供了计算中的水平可伸缩性和并行性.您可能需要考虑的一些事情:它现在只有一个Scala API(还没有Python).它执行PageRank,三角形计数和连接组件,但您可能必须使用提供的图形API(例如pregel)自己实现聚类系数和直径.编程指南有一系列支持的算法:https://spark.apache.org/docs/latest/graphx-programming-guide.html