基于图查询系统的图计算引擎

柯学翰, 陈榕

上海交通大学软件学院并行与分布式系统研究所,上海 200240

摘要在目前的研究中,图查询和图计算系统是相互独立的,但在实际应用中两者通常是同时存在的。为解决相互独立的系统带来的存储空间浪费、数据一致性维护等问题,基于图查询系统设计了一种图计算引擎,使得在单一系统中支持查询和计算操作。通过为键值对存储增加图计算索引、基于拉取模式的数据更新等方式,有效地提高系统中数据遍历的性能和减少数据传输的成本,同时针对数据更新和负载均衡等方面提出了相关优化。实验表明,该图计算引擎能够达到与传统图计算系统PowerLyra和Gemini相近或比其更优的性能,且具有较好的可扩展性。

关键词 分布式系统 ; 图计算 ; 图查询 ; 键值对存储

640?wx_fmt=jpeg

论文引用格式:柯学翰, 陈榕. 基于图查询系统的图计算引擎. 大数据[J], 2019, 5(4):16-26

KE X H,CHEN R. Graph processing engine based on graph query system. Big Data Research[J], 2019, 5(4): 16-26

640?wx_fmt=jpeg

1 引言

近年来,随着互联网和社交网络的快速发展,大规模的图结构数据逐渐增多,例如将知识图谱、社交网络等信息抽象成的图结构数据。相比于传统的大数据处理系统,图系统能更好地利用图的结构信息,对图数据的处理更为高效。目前对图系统的研究可分为图查询系统和图计算系统两个方面。

图查询系统需要找到符合用户需求的图数据,常见的图查询系统有Wukong、TriAD、Trinity.RDF等。图查询任务通常只需要访问全图中小部分的数据,但对时延非常敏感,需要在秒甚至毫秒级返回结果。因此,图查询系统通常使用键值对的存储模式,使得对单个顶点的访问更加高效。与图查询系统不同,在图计算系统中,一般使用稀疏矩阵存储图的结构。图计算任务通常需要访问全图上所有的顶点,对全图上的数据进行多轮迭代计算后才能结束,时延通常是分钟甚至小时级别的。因此,在图计算系统中,单个顶点的访问时延不是最重要的,其更关注的是整个系统的计算吞吐率。常见的图计算系统有Pregel、PowerGraph、PowerLyra、Gemini等。

目前对图查询系统和图计算系统的研究一般是相互独立的,但在实际应用中,图查询和图计算任务通常是同时存在的。例如对于一个记录了电商平台上用户和商品之间的关系的图数据,电商平台既有查询用户历史订单的需求(图查询任务),又有基于该图数据进行商品推荐的需求(图计算任务)。传统的做法是在图查询系统和图计算系统中分别加载该图数据进行分析。但是一份数据多份存储会带来许多的问题,例如内存空间的浪费、维护不同系统间数据的一致性等问题。

为了避免以上问题,本文在现有图查询系统基础上设计和实现了一种高效的图计算引擎,其能够在单个系统中同时支持高效的图查询和图计算操作。首先给键值对的存储结构增加针对图计算的索引,使其加快对图的遍历效率;其次针对图系统中的数据划分,为其设计了基于拉取(pull)模型的消息传递模式;最后针对该计算引擎的数据更新和负载均衡等方面进行了优化。在不同的测试集中的测试结果表明,该计算引擎图计算性能可达到PowerLyra系统的4.7倍到20倍,同时具有良好的可扩展性。

2 背景介绍

2.1 图数据的存储结构

键值对存储因具有可扩展强、结构简单、查找迅速等特点被广泛应用于图查询系统中,如Wukong、Trinity.RDF。在Wukong系统中,图上的边会转换成键值对进行存储,将顶点编号、边的类型、边的方向、值的地址和大小等信息组合成键(key),对应邻居顶点构成值(value),如图1所示。当需要查询顶点1、边类型为2的所有入边(in)时,先通过Hash函数找到对应的键的存储位置,然后根据键得到值的存储地址(offset),最后再通过远端或者本地访问的方式获取值的信息,即对应的邻居有顶点8和顶点9。

640?wx_fmt=jpeg

图1   键值对存储

在图计算系统中广泛使用压缩稀疏矩阵来存储图的结构,如图2所示,包括GraphLab、PowerGraph、Gemini等系统。行压缩稀疏矩阵(compressed sparse row,CSR)表示出边的信息,列压缩稀疏矩阵(compressed sparse column,CSC)表示入边的信息。顶点索引(vertex index)记录了每个顶点在边数组中的起始位置,并且顶点编号与顶点索引数组的序号保持一致。如顶点2,在顶点索引中的值为4,则顶点2的邻居顶点从边数组中下标为4的元素开始,一直到下一个顶点对应的索引值6,也就是说顶点1、顶点3是顶点2的邻居顶点。若该结构为CSC,则(1,2)和(3,2)是原图中的边;若为CSR,则(2,1)和(2࿰

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值