分布式图计算引擎
最近在做一个图数据库系统的项目,接触到 GraphScope,搜了下发现是阿里发布的分布式图处理框。之前没接触过,所以了解下,常见的还有 NetworkX、CuGraph、GraphLab 等等,但基本都是国外的。国内大厂就有阿里的 GraphScope,腾讯的 Plato,字节的 ByteGraph。字节这个与其他的 OLAP 不同它是属于 OLTP,但也在朝 OLAP 发力。
上面说的 OLTP 和 OLAP,是指联机事务处理 OLTP(on-line transaction processing)和联机分析处理 OLAP(On-Line Analytical Processing)。一个是做图查询,一个是图分析。GraphScope 属于 OLAP,是对图数据进行计算分析,下面是相关的介绍。
NetworkX
NetworkX 于 2002 年 5 月产生,是一个用 Python 语言开发的图论与复杂网络建模工具,内置了常用的图与复杂网络分析算法,可以方便的进行复杂网络数据分析、仿真建模等工作。NetworkX 支持创建简单无向图、有向图和多重图;内置许多标准的图论算法,节点可为任意数据;支持任意的边值维度,功能丰富,简单易用。利用 NetworkX 可以以标准化和非标准化的数据格式存储网络、生成多种随机网络和经典网络、分析网络结构、建立网络模型、设计新的网络算法、进行网络绘制等。
GraphX
GraphX 是一个 Spark API,它用于图和并行图的计算,通过引入顶点和边属性的有向多重图,来实现分布式图处理的需求。GraphX 会将分布式图(graph-parallel)计算和分布式数据(data-parallel)统一到一个系统中,这个系统拥有一个唯一的组合 API,来高效地执行复杂的图形算法。
虽然分布式图系统可以很好的计算 PageRank 等算法,但是它们不适合从不同的数据源构建图或者跨过多个图计算特征,分布式图系统的计算视图无法处理那些构建和转换图结构需求和跨图需求。所以图流水线必须通过组合 graph-parallel 和 data- parallel 来实现,但是这种组合必然会导致大量的数据移动以及数据复制,也会使得这样的系统异常复杂。
CuGraph
CuGraph 是英伟达(Nvidia)在 Nvidia GPU 上实现的图形算法的集合。传统的机器学习方法对 GPU 的利用很少,浪费了很多的资源和探索的可能,为了提高 GPU 的利用效率,RAPIDS 专门设计 CuGraph 模块用于处理图数据。
CuGraph 是在 Nvidia GPU 上实现的基于 Python 的图形算法的集合,可以加快图形处理速度,主要被应用于在图形上执行高性能分析。数据科学家和软件开发人员可以使用这些库将 GPU 功能集成到他们的工作中,而无需了解所有实现和硬件的细节。高易用性,高互操作性以及可集成、可添加动态数据结构将成为 CuGraph 未来的开发重点。
CuGraph 是一个图数据的分析框架,并不能用于替代图数据库,如何在分析图数据的同时,实现增删改查等数据库常见功能,将是 CuGraph 的重点探讨方向。
GraphScope
GraphScope 是阿里巴巴达摩院智能计算实验室研发并开源的,依托于阿里海量数据和丰富场景的一站式图计算平台。
GraphScope 能同时支持算法的自动并行化和自动增量化处理动态图更新,支持数据的分区、元数据的管理,可以为上层应用提供本机零拷贝的数据读取,具有一站式、开发便捷、性能极致的特点。它在业界首次支持 Gremlin 分布式编译优化,提供了各类连通性计算类、社区发现类和数值计算类的常用分析算法,做到了企业级场景的极致性能。
评论