图分析工作负载

什么是图分析

图是由顶点(或节点)通过边连接构成的数据结构。图可以表示许多现实世界的数据,例如社交网络、交通网络和蛋白质相互作用网络,如下图所示。

Examples of graphs

图表示例。

通常来说,任何基于图数据的计算都可以视为图分析。图分析的目标是揭示并利用图的结构特性,从而洞察图中不同元素之间的关联关系。图分析中的计算模式差异显著:有些仅涉及少量顶点/边,而另一些则需要访问图中大部分甚至全部顶点/边。在GraphScope中,除非特别说明,我们将前者称为图遍历,后者称为图分析

图分析算法种类繁多,通常需要遍历图的大部分或全部顶点/边以发现图数据中隐藏的洞察。常见的图分析算法包括通用分析算法(如PageRank、最短路径和最大流)、社区检测算法(如最大团/双团、连通组件、Louvain和标签传播)以及图挖掘算法(如频繁结构挖掘和图模式发现)。下面我们通过几个示例来说明图分析算法的运行原理。

PageRank算法通过迭代计算每个顶点邻居的数量和重要性来衡量其在图中的重要性。这有助于粗略估计一个顶点的重要性。具体来说,PageRank计算由多次迭代组成,每个顶点最初被赋予一个表示其重要性的值。在每次迭代过程中,顶点会汇总指向它的邻居顶点的值,并相应地更新自身的值。

PageRank algorithm

PageRank算法 (https://snap-stanford.github.io/cs224w-notes/network-methods/pagerank).

最短路径问题旨在通过最小化组成边的权重之和,找到两个顶点之间最高效的路径。已有多种著名算法被提出来解决该问题,例如Dijkstra算法和Bellman-Ford算法。以Dijkstra算法为例,它会选择一个顶点作为"源"顶点,并尝试计算从该源点到图中所有其他顶点的最短路径。Dijkstra算法的计算过程包含多次迭代,每次迭代都会选择一个已知到源点最短路径的顶点,并更新其邻居顶点的最短路径值,如下方图示所示。

Dijkstra's algorithm

Dijkstra算法 (https://en.wikipedia.org/wiki/Dijkstra’s_algorithm)。

社区检测算法(例如Louvain)旨在识别图中内部连接比与其他顶点更紧密的顶点群组。这些算法的工作原理是让每个顶点重复向邻居发送其标签,并在接收到邻居的标签后根据特定规则更新自身标签。经过多次迭代后,内部紧密连接的顶点将拥有相同或相似的标签。

Community detection algorithm

社区发现算法 (https://towardsdatascience.com/community-detection-algorithms-9bd8951e7dae)。

上述示例展示了图分析算法如何分析图中顶点和边的属性。在实际应用中,许多问题都可以建模为图分析问题。例如,Google搜索将网站及其互连关系表示为图,应用PageRank算法来识别互联网上最重要的网站。同样,城市道路地图可以建模为图,其中最短路径算法可协助物流和配送服务进行路径规划。通过将社交媒体用户视为图,社区检测技术(如Louvain算法)可以帮助发现具有共同兴趣的用户,并维持他们之间的紧密联系。

Applications of graph analytics

图分析的应用场景。

大规模图分析面临的挑战

根据我们的经验,处理图数据以及利用图数据处理框架(系统)存在以下挑战:

  • 处理大规模复杂图数据

    现实世界中的大多数图数据都具有大规模、异构和带属性的特点。例如,现代电商图通常包含数十亿顶点和数百亿边,具有多种类型和丰富属性。表示和存储这类图数据并非易事。

  • 多样化的编程模型/语言

    目前已开发出众多图处理系统来管理图分析算法。这些系统采用不同的编程模型(如顶点中心模型和PIE模型)和编程语言(如C++、Java和Python)。因此用户通常需要面对陡峭的学习曲线。

  • 对高性能的需求

    处理大型图的效率和可扩展性仍然有限。虽然当前系统经过多年优化已显著受益,但仍面临效率和/或可扩展性问题。在处理大规模图数据时实现卓越性能是业界迫切追求的目标。

GraphScope能做什么

在GraphScope中,图分析引擎(GAE)通过以下方式管理图分析算法来解决上述挑战:

  • 分布式图数据管理

    GraphScope将图数据表示为属性图模型,并自动将大规模图分割成分布在集群中多台机器上的子图(片段)。它还提供了用户友好的接口用于加载图,使图数据管理更加容易。有关管理大规模图的更多详情,请参阅此链接

  • 支持多种编程模型/语言

    GraphScope同时支持以顶点为中心的模型(Pregel)和PIE(PEval-IncEval-Assemble)编程模型。这些模型在现有图处理系统中被广泛使用。更多信息,请参阅我们对PregelPIE模型的介绍。

    GraphScope提供多语言SDK,允许用户使用C++、Java或Python编写自定义算法。有关开发定制算法的更多详情,请查看我们的教程

  • 优化的高性能运行时

    GAE通过优化的分析运行时实现高性能,采用了拉取/推送动态切换、缓存高效内存布局和流水线等技术。我们已在LDBC图分析基准测试中将GraphScope与最先进的图处理系统进行比较,结果显示GraphScope优于其他图系统。