一种图数据处理的方法、装置及系统与流程

文档序号:14653566发布日期:2018-06-08 22:30阅读:138来源:国知局
一种图数据处理的方法、装置及系统与流程

本发明涉及互联网技术领域,具体涉及一种图数据处理的方法、装置及系统。



背景技术:

随着互联网的高速发展,网络中的数据量呈现爆炸式增长,通过对这些海量数据进行分析可以挖掘出一些有价值的信息,以便于发现新的市场机会或商业模式。但网络中的数据量非常庞大,为了提高数据分析效率,需要对数据进行建模,即将数据通过特定的模型来表达。由于图(Graph)具有极强的模型表达能力,能够直观地表达具有相互联系的实体(Entity),及其实体之间的关系。因此,在很多大数据分析场景下,将待处理的数据以图的形式表示,然后再对图进行分析处理,以得到用户所需的信息,以图的形式表示的数据通常也被称为图数据,对图数据进行分析处理也称为图计算。其中,图的顶点(vertex)存储实体对应的值,边(edge)表示实体之间的关系。典型地,社交网络数据、CDR(call detail record,呼叫详细记录)、文章之间的引用关系和金融交易数据等都可以通过图(Graph)来建模。图计算已经成为大数据处理系统的基本模块。

如图1所示,图计算的应用范围广泛,例如,在电信领域、安全领域,金融领域以及其他领域都会涉及对大数据进行挖掘分析,支撑上层应用决策和运营。从海量数据中采集出各领域所需要的数据,然后以图的形式表达,最后利用数据挖掘方法,例如大规模关系计算,机器学习算法等,对图数据进行处理,进而得到各个领域有价值的数据。

由于图数据的规模增长迅速,图处理系统的全部内存可能也小于待处理的图数据的规模,从而导致图处理任务失败。同时,由于图数据依赖型强,如果每次仅加载部分图数据到内存进行处理,往往会破坏了图数据中顶点之间的邻接关系,导致数据局部性差,这种数据局部性差的特点,会使图计算过程中需要频繁从磁盘读取与当前计算的数据相关联的数据,从而造成大量的IO开销。



技术实现要素:

为了更好地支持大规模的图计算,本发明实施例提供一种图数据处理的方法,能够利用分布式系统的大量内存资源处理图数据,保证了海量图数据的正常处理,并且还能减少系统的I/O开销。本发明实施例还提供了相应的装置及系统。

本发明第一方面提供一种分布式系统中的图数据处理方法,该分布式系统包括主控节点和多个工作节点,主控节点和工作节点可以是通过网络连接的物理主机,也可以是在通用硬件资源上部署的虚拟机,该方法包括:主控节点获取图数据,该图数据的获取可以是主控节点从特定数据源获取的,例如数据库或文件系统,也可以是主控节点从自身的存储资源中获取的,该图数据包括M个顶点和多条有方向的边,其中,每条边连接M个顶点中的两个顶点,且每条边的方向由两个顶点中的源顶点指向目的顶点,M为大于2的整数;主控节点对图数据进行分割,以得到P个分片(shard),其中,每个分片包括至少一个目标顶点的入边,入边为方向指向目标顶点的边,P个分片对应的目标顶点数量之和等于M,且每个分片对应的目标顶点互不相同,P为大于1的正整数;P个分片包括所述第一分片和第二分片,主控节点从每个分片中确定出至少两个边集合;主控节点将P个分片中第一分片所包含的至少两个边集合调度到至少两个工作节点上以进行处理;主控节点将第二分片中包含的关联边集合调度到所述至少两个工作节点上以进行处理;所述关联边集合是包含所述第一分片对应的目标顶点的出边的边集合,所述出边为从所述第一分片中的目标顶点指出的边。至少两个工作节点为被调度了边集合的工作节点,至少两个边集合的数量不小于至少两个工作节点的数量。从上述第一方面可以看出,通过分布式系统来处理图数据,将图数据处理成shard后,再将shard进一步切分为边集合,同一shard上的边集合调度到至少两个工作节点上进行图数据处理,充分利用了分布式系统的大量内存资源处理图数据,保证了海量图数据的正常处理,而且提升图处理在分布式计算环境下的扩展性,提高了系统总体吞吐量。同时,将第二分片上目标顶点的出边调度到入边所在的工作节点,可以减少各工作节点间通信的输入/输出(I/O)开销,保证图计算的及时性。

结合第一方面,在第一种可能的实现方式中,上述步骤主控节点从每个分片中确定出至少两个边集合,包括:主控节点将P个分片中边的数值按照边的方向填充到P行P列矩阵形式的数据结构中,以得到P2个数据块;其中,每个数据块为一个边集合,每个分片包含至少两个数据块,P行P列矩阵形式是以M个顶点为横轴和纵轴形成的,横轴上的顶点为源顶点时,则纵轴上的顶点为目的顶点,或者横轴上的顶点为目的顶点时,则纵轴上的顶点为源顶点。若每个分片中所包含的目标顶点的数量相等,则每个数据块的大小相等,若每个分片中所包含的目标顶点的数量不相等,则每个数据块的大小可以不全相等。从上述第一方面第一种可能的实现方式中可以看出,通过矩阵的形式确定边集合,使边集合的确定更加有序,从而提高了边集合确定的效率,进一步提高了图数据处理的效率。

结合第一方面第一种可能的实现方式,在第二种可能的实现方式中,该方法还包括:主控节点为所述P2个数据块中的每个数据块设置唯一的块标识;主控节点确定所述P2个数据块的块标识与多个工作节点之间的对应关系;主控节点按照对应关系,将所述第一分片包含的至少两个数据块,调度到所述至少两个工作节点上以进行处理。从上述第一方面第二种可能的实现方式中可以看出,对数据块设置块标识后,可以按照块标识进行调度,从而增强了数据块调度的有序性,提高了调度效率,从而提高了图数据处理的效率。

结合第一方面第二种可能的实现方式,在第三种可能的实现方式中,上述步骤主控节点将所述第二分片中包含的关联边集合,调度到所述至少两个工作节点上以进行处理,包括:主控节点按照对应关系,将所述关联边集合对应的数据块调度到所述至少两个工作节点上以进行处理。从上述第一方面第三种可能的实现方式中可以看出,第二分片上的数据块也按照块标识进行调度,从而增强了数据块调度的有序性,提高了调度效率,从而提高了图数据处理的效率。

结合第一方面第二种或第三种可能的实现方式,在第四种可能的实现方式中,该方法还包括:主控节点设置同步标记;其中,所述同步标记用于指示第一数据块所在的工作节点在处理完所述第一数据块之后与第二数据块所在的工作节点进行数据同步;其中,所述第一数据块为所述第一分片中按照调度顺序最后一个被调度的数据块,所述第二数据块为所述关联边集合对应的数据块中最后一个被调度的数据块。从上述第一方面第四种可能的实现方式中可以看出,针对处理同一组的边集合的各个工作节点需要设置同步标记,以指示工作节点按照该同步标记,在完成同一组的最后一个边集合的处理后,要与其他工作节点进行数据同步,以确保图数据的一致性。

结合第一方面,在第五种可能的实现方式中,主控节点从每个分片中划分出至少两个边集合,包括:主控节点确定每个分片中目标顶点的度数,度数表征目标顶点与其他顶点关联的紧密度;当第一目标顶点的度数超过预设阈值时,主控节点将第一目标顶点的入边划分到同一边集合中。从上述第一方面第五种可能的实现方式中可以看出,为了减少IO开销,还可以通过目标顶点的度数划分边集合,将度数高出预设阈值的每条入边都划分到同一边集合中,可以减少工作节点间通信的IO开销。

本发明第二方面提供一种图数据处理的方法,该方法应用于分布式系统,该分布式系统包括主控节点和多个工作节点,每个工作节点包括I/O接口、硬盘、内存和处理器,该方法包括:第一工作节点通过I/O接口接收主控节点按照按调度顺序调度的P个分片(shard)中的X个边集合;其中,P个分片为主控节点对图数据进行分割得到的,图数据包括M个顶点和多条有方向的边,其中,每条边连接M个顶点中的两个顶点,且每条边的方向由两个顶点中的源顶点指向目的顶点,M为大于2的整数,每个分片包括至少一个目标顶点的入边,所述入边为指向所述目标顶点的边,所述P个分片对应的目标顶点数量之和等于M,且所述每个分片对应的目标顶点互不相同,所述P为大于1的正整数,所述X为正整数;第一工作节点的I/O接口将X个边集合存储到硬盘中;第一工作节点的处理器按照所述主控节点的调度顺序,将所述硬盘中存储的所述X个边集合中的Y个边集合加载到内存,并从内存中提取出Z个边集合的数据进行图计算,其中,X≥Y≥Z,且X、Y、Z都为正整数。从上述第二方面可以看出,通过分布式系统来处理图数据,充分利用了分布式系统的大量内存资源处理图数据,保证了海量图数据的正常处理,而且提升图处理在分布式计算环境下的扩展性,提高了系统总体吞吐量。而且,工作节点对边集合的处理从硬盘到内存再到处理器按照主控节点的调度顺序采用多级加载的方式进行流式处理,从而减少了对内存的占用,减小内存开销,提高图计算的效率。

结合第二方面,在第一种可能的实现方式中,每条边集合为一个数据块,P个分片包括P2个数据块,P2个数据块为主控节点将P个分片中边的数值按照边的方向填充到P行P列矩阵形式的数据结构中所得到的,P个分片包括第一分片和第二分片,第一工作节点的处理器根据同步标记,在处理完第一数据块之后与第二数据块所在的第二工作节点进行数据同步,所述第一数据块为所述第一分片中按照调度顺序最后一个被调度到所述第一工作节点的数据块,所述第二数据块为所述第二分片中最后一个被调度到所述第二工作节点的,且包含所述第一分片对应的目标顶点的出边的数据块。从上述第二方面第一种可能的实现方式中可以看出,针对处理同一组的边集合的各个工作节点需要设置同步标记,以指示工作节点按照该同步标记,在完成同一组的最后一个边集合的处理后,要与其他工作节点进行数据同步,以确保图数据的一致性。

本发明第三方面提供一种图数据处理装置,该装置被配置实现上述第一方面或第一方面任一可选的实现方式所提供的方法的功能,由硬件/软件实现,其硬件/软件包括与上述功能相应的单元。

本发明第四方面提供一种图数据处理装置,该装置被配置实现上述第二方面或第二方面任一可选的实现方式所提供的方法,由硬件/软件实现,其硬件/软件包括与上述功能相应的单元。

本发明第五方面提供一种图数据处理装置,该图数据处理装置可以为分布式系统中的主控节点,该分布式系统还包括多个工作节点,该图数据处理装置包括I/O接口、内存、硬盘和处理器,其中,I/O接口用于获取图数据,该图数据的可以从外部的数据库获取,也可以从图数据处理装置自身的存储资源,比如硬盘中获取的,该图数据包括M个顶点和多条有方向的边,其中,每条边连接M个顶点中的两个顶点,且每条边的方向由两个顶点中的源顶点指向目的顶点,M为大于2的整数;处理器用于对图数据进行分割,以得到P个分片(shard),其中,每个分片包括至少一个目标顶点的入边,入边为方向指向目标顶点的边,P个分片对应的目标顶点数量之和等于M,且每个分片对应的目标顶点互不相同,P为大于1的正整数;P个分片包括所述第一分片和第二分片,该图数据处理装置的处理器还用于,从每个分片中确定出至少两个边集合,通过I/O接口将第一分片所包含的至少两个边集合调度到至少两个工作节点上以进行处理,以及将第二分片中包含的关联边集合调度到所述至少两个工作节点上以进行处理;所述关联边集合是包含所述第一分片对应的目标顶点的出边的边集合,所述出边为从所述第一分片中的目标顶点指出的边。至少两个工作节点为被调度了边集合的工作节点,至少两个边集合的数量不小于至少两个工作节点的数量。

结合第五方面,处理器具体用于被配置实现上述第一方面或第一方面任一可选的实现方式所提供的方法的功能,

本发明第六方面提供一种图数据处理装置,该图数据处理装置可以为分布式系统中的工作节点,该分布式系统还包括主控节点,该图数据处理装置包括I/O接口、内存、硬盘和处理器,其中,I/O接口用于接收主控节点按照按调度顺序调度的P个分片shard中的X个边集合;其中,P个分片为主控节点对图数据进行分割得到的,图数据包括M个顶点和多条有方向的边,其中,每条边连接M个顶点中的两个顶点,且每条边的方向由两个顶点中的源顶点指向目的顶点,M为大于2的整数,每个分片包括至少一个目标顶点的入边,所述入边为指向所述目标顶点的边,所述P个分片对应的目标顶点数量之和等于M,且所述每个分片对应的目标顶点互不相同,所述P为大于1的正整数,所述X为正整数;硬盘用于存储I/O接口接收的X个边集合;处理器按照所述主控节点的调度顺序,将所述硬盘中存储的所述X个边集合中的Y个边集合加载到内存,并从内存中提取出Z个边集合的数据进行图计算,其中,X≥Y≥Z,且X、Y、Z都为正整数。

结合第六方面,处理器被配置实现上述第二方面或第二方面任一可选的实现方式所提供的方法,由硬件/软件实现,其硬件/软件包括与上述功能相应的单元。

本发明第七方面提供一种计算机存储介质,该计算机存储介质存储有上述第一方面或第一方面任一可选的实现方式的图数据处理的程序。

本发明第八方面提供一种计算机存储介质,该计算机存储介质存储有上述第二方面或第二方面任一可选的实现方式的图数据处理的程序。

本发明第九方面提供一种分布式系统,该分布式系统包括主控节点和多个工作节点,主控节点和工作节点都可以是独立的物理主机,也可以是在物理主机上所配置的虚拟机,该主控节点可以为第三方面或者第五方面所描述的图数据处理装置,该工作节点可以为第四方面或者第六方面所描述的图数据处理装置。

本发明第十方面提供一种图数据处理的方法,该方法应用于分布式系统,该分布式系统包括主控节点和多个工作节点,主控节点和工作节点都可以是独立的物理主机,也可以是在物理主机上所配置的虚拟机,该方法包括:主控节点获取图数据,该图数据的获取可以是主控节点从数据库获取的,也可以是主控节点从自身的存储资源中获取的,该图数据包括M个顶点和多条有方向的边,其中,每条边连接M个顶点中的两个顶点,且每条边的方向由两个顶点中的源顶点指向目的顶点,M为大于1的正整数;主控节点从图数据中确定出至少两个边集合;主控节点将该至少两个边集合,调度到上述多个工作节点中的至少两个工作节点上进行图计算。从上述第十方面可以看出,通过分布式系统来处理图数据,将边集合调度到至少两个工作节点上进行图数据处理,充分利用了分布式系统的大量内存资源处理图数据,保证了海量图数据的正常处理,而且提升图处理在分布式计算环境下的扩展性,提高了系统总体吞吐量。

附图说明

图1是图数据挖掘与应用示意图;

图2是本发明实施例中图数据的表现形式示意图;

图3A是本发明实施例中分布式系统的网络结构示意图;

图3B是物理主机的结构示意图;

图3C是本发明实施例中拟化场景下分布式系统的结构示意图;

图4是本发明实施例中图数据处理的方法的实施例示意图;

图5是本发明实施例中图数据处理的示例示意图;

图6是本发明实施例中边集合调度的示例示意图;

图7是本发明实施例中图数据处理的架构示意图;

图8是本发明实施例中边集合调度的另一示例示意图;

图9是本发明实施例中分片转换为矩阵形式的数据结构的示例示意图;

图10是本发明实施例中分片转换为矩阵形式的数据结构的另一示例示意图;

图11是本发明实施例中数据块与块标识的对应关系示意图;

图12是本发明实施例中粗粒度调度的示例示意图;

图13是本发明实施例中细粒度调度的示例示意图;

图14是本发明实施例的数据块调度的示例示意图;

图15是本发明实施例中数据处理的装置的示意图;

图16是本发明实施例中数据处理的装置的另一示意图。

具体实施方式

本发明实施例提供一种图数据处理的方法,能够利用分布式系统的大量内存资源处理存储图数据,保证了海量图数据的正常处理,而且提升图处理在分布式计算环境下的扩展性,提高系统总体吞吐量,并且还能减少各工作节点间通信的输入/输出(I/O)开销。本发明实施例还提供了相应的装置及系统。以下分别进行详细说明。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

关于图(本发明实施例也称为图数据),示例性的如图2所示,图2中包括了用编号1-6表示的六个实体,图形中的实体可以称为顶点,各实体之间的关系用边来表示,边上的箭头表示方向。每条边连接两个顶点,每条边的方向由两个顶点中的源顶点指向目的顶点,也就是边出发的顶点为源顶点,箭头指向的顶点为目的顶点,每条边都有对应的值。

图2所示出的只是一个简易的图数据示意图,在具体的应用场景下,图数据会更加庞大和复杂,图数据会包括成千上万个顶点,以及非常多条边,因此,针对图数据的处理就会需要大量的硬件资源,单片机或者一台物理机的硬件资源很难满足图数据的处理需求。

本发明实施例提供一种分布式系统,该分布式系统可以用于处理图数据。如图3A所示,本发明实施例所提供的分布式系统包括主控节点(Master)10、网络20、多个工作节点(Worker)30和数据库40,主控节点10和多个工作节点30可以通过网络20通信,数据库40中可以存储图数据,主控节点10可以从数据库40读取待处理的图数据。本发明实施例中的主控节点10可以有一个,也可以有多个。例如,为了保证系统的可靠性,可以部署一个备用的主控节点,用于在当前运行的主控节点负载过高时,分担一部分负载,或者在当前运行的主控节点发生故障时,接替该主控节点的工作。主控节点10和工作节点30可以是物理主机,其中一个物理主机的硬件结构可以参阅图3B进行理解。如图3AB所示,物理主机50包括处理器510、硬盘520、内存530、I/O接口540和总线550,处理器510、硬盘520、内存530和I/O接口540通过总线550通信连接。两个物理主机之间可以通过I/O接口和网络20互连。

另外,本发明实施例提供的分布式系统还可以是虚拟化场景下的分布式系统,虚拟化场景下的分布式系统如图3C所示,该虚拟化场景下的分布式系统包括硬件层和运行在硬件层之上的虚拟机监控器(VMM)1001,以及多个虚拟机1002。可以选择一个或者多个虚拟机作为主控节点,以及多个虚拟机作为工作节点。

具体的,虚拟机1002:通过虚拟机软件在公共硬件资源上模拟出的一台或者多台虚拟的计算机,而这些虚拟机就像真正的计算机那样进行工作,虚拟机上可以安装操作系统和应用程序,虚拟机还可访问网络资源。对于在虚拟机中运行的应用程序而言,虚拟机就像是在真正的计算机中进行工作。

硬件层:虚拟化环境运行的硬件平台,可以由一个或多个物理主机的硬件资源抽象得到的。其中,硬件层可包括多种硬件,例如包括处理器1004(例如CPU)和存储器1005,还可以包括网卡1003(例如RDMA网卡)、高速/低速输入/输出(I/O,Input/Output)设备,及具有特定处理功能的其它设备。

另外,该虚拟化场景下的分布式系统还可以包括宿主机(Host):作为管理层,用以完成硬件资源的管理、分配;为虚拟机呈现虚拟硬件平台;实现虚拟机的调度和隔离。其中,Host可能是虚拟机监控器(VMM);此外,有时VMM和1个特权虚拟机配合,两者结合组成Host。其中,虚拟硬件平台对其上运行的各个虚拟机提供各种硬件资源,如提供虚拟处理器(如VCPU)、虚拟内存、虚拟磁盘、虚拟网卡等等。其中,该虚拟磁盘可对应Host的一个文件或者一个逻辑块设备。虚拟机运行在Host为其准备的虚拟硬件平台上,Host上运行一个或多个虚拟机。

特权虚拟机:一种特殊的虚拟机,亦可称为驱动域,例如这种特殊的虚拟机在Xen Hypervisor平台上被称作Dom0,在该虚拟机中安装了例如网卡、SCSI磁盘等真实物理设备的驱动程序,能检测和直接访问这些真实物理设备。其他虚拟机利用Hypervisor提供的相应机制通过特权虚拟机访问真实物理设备。

本发明提供的分布式系统可以采用整体同步并行计算模型(Bulk Synchronous Parallel Computing Model),又称为大同步模型或BSP模型,其中Master负责整个图数据的分割、将计算任务分配给Worker、以及消息同步。每个Worker有一个消息队列,每个Superstep(超步)为一次迭代。在一个超步中,每个Worker读取自己的消息队列进行并行计算。多个超步间同步执行,Worker之间通过发送消息交互数据。关于BSP模型的具体原理和细节均属于现有技术,此处不再赘述。

本发明实施例进一步提供了通过以上描述的分布式系统处理图数据的方法,其中,主控节点10对图数据进行分割及调度,将“大数据”处理成“小数据”,并将小数据调度到多个工作节点上并行处理,由多个工作节点共同完成图计算,从而避免了单片机或单个物理机处理一个图数据时,由于硬件资源不足,尤其是内存资源不足,导致图数据处理任务失败的问题。

具体地,主控节点10对图数据处理的过程可以参阅图4进行理解。

如图4所示,本发明实施例提供的图数据处理的方法的一实施例包括:

101、主控节点获取图数据,所述图数据包括M个顶点和多条有方向的边,其中,每条边连接所述M个顶点中的两个顶点,且所述每条边的方向由所述两个顶点中的源顶点指向目的顶点,所述M为大于2的整数。

本发明实施例中的图数据可以是主控节点从用于存储图数据的数据库中获取的,例如,图3A中所示的数据库40。若图数据存储在主控节点的存储资源中,该图数据也可以是主控节点从自身的存储资源中获取的,当然,如果图数据还可以有其他存储方式,主控节点都可以从对应存储图数据的位置获取该图数据。

关于图数据的表现形式,以及图中顶点和边的介绍,可以参阅图2以及图2部分的相应描述进行理解,本处不再重复赘述。

102、主控节点对所述图数据进行分割,以得到P个分片(shard),其中,每个分片包括至少一个目标顶点的入边,所述入边为指向所述目标顶点的边,所述P个分片对应的目标顶点数量之和等于所述M,且所述每个分片对应的目标顶点互不相同,所述P为大于1的正整数,所述P个分片包括第一分片和第二分片。

需要说明的是,在大部分场景下,主控节点会将图数据分割为多个分片,但在某写特殊场景下,如果图数据非常小,则不需要对图数据进行分割,即仅有1个分片。本发明实施例中以存在多个分片的场景为例进行描述。

图数据是按照顶点进行分割的,可以对M个顶点进行划分,每个分片中所对应的顶点的数量可以相同,也可以不相同,无论每个分片所对应的顶点的数量是否相同,每个分片对应的顶点都互不相同,例如:如图2所示,图2中有6个顶点,也就是图2所示的示例中M=6,若每个分片对应2个顶点,则P=6/2=3,则可以将图数据划分为3个分片。每个分片对应的两个顶点在本发明实施例中定义为目标顶点,每个分片中包括该分片对应的2个目标顶点的入边,也就是箭头方向指向该目标顶点的边,当然每个分片对应的顶点的数量也可以不相同,例如:一个分片对应1目标顶点、一个分片对应2目标顶点,一个分片对应3目标顶点,只要所有分片对应的目标顶点数量之和等于M,且每个分片对应的目标顶点互不重叠即可。

本发明实施例中以每个分片对应目标顶点的数量相等为例进行说明,如图2所示的图数据处理得到的分片可以参阅图5进行理解,如图5所示,6个顶点,每个分片对应这六个顶点中的两个顶点,可以处理为3个分片,图5所示的分片1(shard1)对应的目的顶点为1和2,分片2(shard2)对应的目的顶点为3和4,分片3(shard3)对应的目的顶点为5和6,以shard1为例,shard1对应的目标顶点是1和2时,与目标顶点是1和2有入边关系的源顶点包括顶点1、3、4、5和6,shard1中包含了目标顶点是1和2的每条入边,以及每条入边的值,入边的值可以从图数据的记录中获取,入边的值不是本发明实施例的关注点,在此对入边的值不做过多介绍。同理,shard2中包含了目标顶点3和4的每条入边,以及每条入边的值,shard3中包含了目标顶点5和6的每条入边,以及每条入边的值。

103、主控节点从所述每个分片中确定出至少两个边集合。

对于边集合的确定可以是按照源顶点进行的,例如:每条边集合中都包括该shard中的目标顶点与确定的R个源顶点的入边,R为正整数,也可以是按照目标顶点的重要程度进行确定,以及按照矩阵形式进行确定,关于按照目的顶点的重要程度进,以及按照矩阵形式确定边集合在后文中都有详细描述,在此暂不描述。实际上,关于边集合的划分方式可以不做具体限定,只要将每个分片分出至少两部分即可,因为shard本身就是所包含的目标顶点的边的集合,所以划分后的每部分都可以为一个边集合。

104、主控节点将所述第一分片所包含的至少两个边集合调度到至少两个工作节点上以进行处理。

本发明实施例中的第一分片是一个相对的概念,P个分片中的任意一个分片都可以理解为是第一分片,相对于本分片之外的分片可以理解为是第二分片,也就是若shard1为第一分片,相对于shard1,shard2和shard3为第二分片,同理,若shard2为第一分片,相对于shard2,shard1和shard3为第二分片,若shard3为第一分片,相对于shard3,shard1和shard2为第二分片。

边集合调度的过程可以参阅图6进行理解,如图6所示,以shard1中边集合(Edge-Set)的调度为例,如图6所示,shard1中划分出了三个边集合,分别为边集合ES1、边集合ES2和边集合ES3,若只有两个工作节点可供调度,则可以将边集合ES1和边集合ES2调度到工作节点1上,将边集合ES3调度到工作节点2上,当然,调度分配不限于该处的列举,只要将三个边集合调度到这两个工作节点上即可,若有三个工作节点,则可以分个工作节点上都调度一个边集合。

需要说明的是,本发明实施例中的至少两个工作节点为被调度了边集合的工作节点,至少两个边集合的数量不小于至少两个工作节点的数量。

105、主控节点将所述第二分片中包含的关联边集合调度到所述至少两个工作节点(如图4中的工作节点1和工作节点2)上以进行处理;所述关联边集合是包含所述第一分片对应的目标顶点的出边的边集合,所述出边为从所述第一分片中的目标顶点指出的边。

106、工作节点对调过来的边集合进行图计算。

本发明实施例中,第一分片与第二分片的关系在前面实施例中已经有描述,可以参阅前述的描述进行理解,本处不再重复赘述。如图6所示,每个shard中包含了该shard对应的目标顶点的入边,实际上该shard对应的目标顶点还有相应的出边,例如:shard1中包含了目的顶点1和2的所有入边,shard2中和shard3中包含了目的顶点1和2的出边,如图8所示,边集合ES4和边集合ES5包含了目的顶点1和2的出边,在调度时可以将出边的边集合调度到至少两个工作节点中的至少一个工作节点上,例如:图8所示的边集合在调度时可以将边集合ES4和边集合ES5都调度到工作节点1上,当然,此处只是举例,也可以调度一个出边的边集合到工作节点2上,只要对边集合ES4和边集合ES5调度在工作节点1和工作节点2的范围内即可,这样可以减少各工作节点间通信的输入/输出(I/O)开销。

本发明实施例中,通过分布式系统来处理图数据,并将图数据处理成shard后,再将shard上的边集合调度到至少两个工作节点上进行图数据处理,充分利用了分布式系统的大量内存资源处理图数据,保证了海量图数据的正常处理,而且提升图处理在分布式计算环境下的扩展性,提高系统总体吞吐量。将第一分片上目标顶点的出边调度到入边所在的工作节点,可以减少各工作节点间通信的输入/输出(I/O)开销。

以上分布式系统的逻辑架构如图7所示,根据图7,分布式系统从逻辑上可划分为:数据库、数据管理区、计算区和接口区。其中,数据管理区的功能由主控节点实现,计算区的功能由工作节点实现,接口区包括面向用户的接口以及用户界面(UI)。数据管理区负责从数据库加载图数据,按照图4相关的实施例所描述的处理过程分割图数据、确定边集合,并向计算区调度边集合,计算区完成对图数据的计算之后,将计算结果输出到接口区用于呈现。

本发明实施例所提供的图数据处理的方法的另一实施例中,所述主控节点从所述每个分片中确定出至少两个边集合,可以包括:

所述主控节点将所述P个分片中边的数值按照边的方向填充到P行P列矩阵形式的数据结构中,以得到P2个数据块;

其中,每个数据块为一个边集合,所述每个分片包含至少两个数据块;所述P行P列矩阵是以所述M个顶点为横轴和纵轴形成的,所述横轴上的顶点为源顶点时,则所述纵轴上的顶点为目的顶点,或者所述横轴上的顶点为目的顶点时,则所述纵轴上的顶点为源顶点。

本发明实施例中,如果将图数据中的顶点按照横向和纵向排列,当横轴上的顶点为源顶点时,则纵轴上的顶点为目的顶点,若横轴上的顶点为目的顶点时,则纵轴上的顶点为源顶点,这样就可以形成一个M行M列的矩阵,其中有M*M个方格,每个方格中都可以填充源顶点到目的顶点的边值。因为图数据处理时是按照边集合调度的,所以可以按照每个shard中所包含的目标顶点的数量,处理这M行M列的正方形,例如:每个shard中包含N个目标顶点,则可以处理为P行P列的矩阵,P=M/N,当然,如果每个shard中目标顶点的数量不相等,也可以处理为P行P列的矩阵,只是所形成的矩阵形式的数据结构中,数据块的大小不相同。以上可以看出,通过矩阵的形式确定边集合,使边集合的确定更加有序,从而提高了边集合确定的效率,进一步提高了图数据处理的效率。

如图9所示,将上述示例中的shard1、shard2和shard3中的边值填充到3行3列矩阵形式的数据结构中,可以得到32个数据块,也就是得到9个数据块。

如图10所示,图10展示了shard1、shard2和shard3对应的各个目标顶点的入边的边集合与其他shard中的该目标顶点的出边的边集合与3行3列矩阵形式的数据结构中9个数据块的对应关系。

可选地,本发明实施例所提供的图数据处理的方法的另一实施例中,所述方法还可以包括:

所述主控节点为所述P2个数据块中的每个数据块设置一个唯一的块标识;

所述主控节点确定所述P2个数据块的块标识与多个工作节点之间的对应关系;

所述主控节点将所述第一分片所包含的至少两个边集合调度到所述至少两个工作节点上以进行处理,可以包括:

所述主控节点按照所述对应关系,将所述第一分片包含的至少两个数据块,调度到所述至少两个工作节点上以进行处理。

本发明实施例中,为了方便调度,可以为每个数据块设置一个能表示顺序关系的块标识,例如:如图11所示,从顶点1和顶点2开始,按照横向或者纵向的顺序为每个数据块编号,图11中是按照从左到右,然后换下一行的方式编号的,当然也可以是从上到下再换到下一列的方式编号,本发明实施例中对具体设置块标识的顺序不做限定,只要块标识可以表征顺序即可,块标识也可以不是编号,也可以是字母等。

为数据块设置块标识后,要记录块标识与数据块的对应关系,这样才好合理的调度,设置好块标识后,主控节点在向工作节点调度入边的数据块时,只需要按照块标识的设置顺序进行调度即可。从以上可以看出,对数据块设置块标识后,可以按照块标识进行调度,从而增强了数据块调度的有序性,提高了调度效率,从而提高了图数据处理的效率。

可选地,本发明实施例所提供的图数据处理的方法的另一实施例中,所述主控节点将所述第二分片中包含的关联边集合,调度到所述至少两个工作节点上以进行处理,可以包括:

所述主控节点按照所述对应关系,将所述关联边集合对应的数据块调度到所述至少两个工作节点上以进行处理。

本发明实施例中,如图12所示,为数据结构中每个数据块设置块标识后,即可按照块标识所指示的调度顺序进行调度,如图12中所示的,调度顺序为1、4、7、1、2、3、2、5、8、4、5、6等,其中B1所指示的数据块1、B2所指示的数据块2和B3所指示的数据块4,在前面已经调度过,则不再重复调度,这样可以节省IO开销,另外,图12中所画出的硬盘、内存和中央处理器CPU不是同一工作节点上的资源,本处只是要表达调度顺序,所以没有对此做特别区分,关于数据块与工作节点的调度关系可以参阅图6和图8部分的描述进行理解。

从工作节点的角度来描述,本发明实施例所提供的图数据处理的方法的另一实施例中,每个工作节点包括I/O接口、硬盘、内存和处理器;

第一工作节点通过I/O接口接收主控节点按调度顺序调度的P个分片中的X个边集合;其中,所述P个分片为所述主控节点对图数据进行分割得到的,所述图数据包括M个顶点和多条有方向的边,其中,每条边连接所述M个顶点中的两个顶点,且所述每条边的方向由所述两个顶点中的源顶点指向目的顶点,所述M为大于2的整数,每个分片包括至少一个目标顶点的入边,所述入边为指向所述目标顶点的边,所述P个分片对应的目标顶点数量之和等于M,且所述每个分片对应的目标顶点互不相同,所述P为大于1的正整数,所述X为正整数;

所述第一工作节点的I/O接口将所述X个边集合存储到硬盘中;

所述第一工作节点的处理器按照所述主控节点的调度顺序,将所述硬盘中存储的所述X个边集合中的Y个边集合加载到内存,并从内存中提取出Z个边集合的数据进行图计算,其中,X≥Y≥Z,且X、Y、Z都为正整数。

本发明实施例中,图12所描述的是按照块标识进行调度,属于粗粒度的调度,实际上,按照块标识进行调度后,工作节点在进行图计算时还要提取出块标识所指示的数据块中边集合的数据,然后将边集合的数据调度到相应的工作节点上进行图计算,调度边集合的数据属于细粒度的调度。

如图13所示,以图中的数据块2为例,该数据块中的边集合数据包括(1,3,0.4)和(2,3,0.3),在调度数据块2时为粗粒度的调度,被调度了数据块2的工作节点在进行图计算时,按照调度顺序,从硬盘的X个边集合中加载Y个到内存,然后提取Z个边集合中的数据进行图计算,如:在计算数据块2时,CPU提取(1,3,0.4)和(2,3,0.3)进行图计算。

通常一个工作节点的硬盘的边集合数量大于内存中的边集合数量,内存中边集合的数量大于CPU中在处理的边集合数量,在进行图计算时,CPU按照调度顺序加载少量边集合到内存,然后按照调度的先后顺序,逐一对边集合进行图计算,也就是说,工作节点中按照流式处理的方式进行,这样的流式处理方式,可以减少对内存的占用,减小内存开销,提高图计算的效率。

可选地,从主控节点的角度来描述,本发明实施例所提供的图数据处理的方法的另一实施例中,所述方法还可以包括:

所述主控节点设置同步标记;

所述同步标记用于指示第一数据块所在的工作节点在处理完所述第一数据块之后与第二数据块所在的工作节点进行数据同步;其中,所述第一数据块为所述第一分片中按照调度顺序最后一个被调度的数据块,所述第二数据块为所述关联边集合对应的数据块中最后一个被调度的数据块。

本发明实施例中,以shard1、shard2和shard3为例,shard1中的三个数据块1、4、7与shard2中的数据块2以及shard3中的数据块3属于与目的顶点1和2相关的边集合,可以将数据块1、4、7、2和3理解为是一组数据,因为数据块1、4、7不会被调度到同一工作节点上,所以各工作节点在处理完该组中被分配到自身的最后一个数据块后,需要与其他节点进行同步,待各个工作节点上该组中的每个数据块都被处理完后,才会执行下一组数据块的图计算。

如图14所示,以将上述的9个数据块调度到两个工作节点为例,按照点切法确定9个数据块中的数据块1、2、3、5和6会被调度到工作节点1,数据块4、7、8和9会被调度到工作节点2,针对第一组数据块1、4、7、2和3,数据块7属于第一分片上最后一个被调度到工作节点2上的数据块,则需要在数据块后设置第一同步标记,数据块3属于第二分片上最后一个被调度到工作节点1上的数据块,则需要在在数据块3后设置第二同步标记,实际上,第一同步标记,第二同步标记可以相同,只是用于指示工作节点需要进行数据同步。

可选地,本发明实施例所提供的图数据处理的方法的另一实施例中,所述主控节点从所述每个分片中划分出至少两个边集合,可以包括:

所述主控节点确定所述每个分片中目标顶点的度数,所述度数表征所述目标顶点与其他顶点关联的紧密度;

当第一目标顶点的度数超过预设阈值时,所述主控节点将所述第一目标顶点的入边划分到同一边集合中。

上述实施例描述了按照矩阵形式划分分片,实际上,为了减少IO开销,还可以通过目标顶点的度数划分边集合,例如:shard1所对应的目标顶点中,若目标顶点2的度数很高超出预设阈值,则可以将目标顶点2的每条入边都划分到同一边集合中。

在一个实施例中,若分布式系统采用如图3A和3B所示的部署方式,即主控节点和工作节点为通过网络连接的物理主机,则上述各个实施例描述的主控节点执行的全部或部分步骤可以由物理主机的处理器510通过执行内存530中的程序来完成;相应地,上述各个实施例描述的工作节点执行的全部或部分步骤也可以由类似方式实现。本发明实施例所使用的术语“程序”应被广泛地解释为包括但不限于:指令,指令集,代码,代码段,子程序,软件模块,应用,软件包,线程,进程,函数,固件,中间件等。

在一个实施例中,若分布式系统采用如图3C所示的部署方式,即主控节点和工作节点均为虚拟机,则主控节点对应的虚拟机可以利用虚拟硬件平台提供各种硬件资源,如虚拟处理器(如VCPU)和虚拟内存,执行程序以实现上述各个实施例描述的主控节点执行的全部或部分步骤。相应地,工作节点对应的虚拟机也可以采用类似方式实现上述各个实施例描述的工作节点执行的全部或部分步骤。

参阅图15,本发明实施例还提供一种图数据处理装置60,该图数据处理装置60可以为上述图3A-图14部分中的主控节点,且该图数据处理装置60包括:

获取单元601、处理单元602、确定单元603、调度单元604、设置单元605和记录单元606,

其中,获取单元601可以为图3B中的I/O接口,处理单元602、确定单元603、调度单元604、设置单元605和记录单元606都可以为图3B中的处理器。

获取单元601可以执行图4部分步骤101的操作过程;

处理单元602可以执行图4部分步骤102的操作过程;

确定单元603可以执行图4部分步骤103的操作过程,以及图3A至图14部分涉及到确定步骤的操作过程;

调度单元604、设置单元605和记录单元606都可以分别执行图数据处理的方法部分的相对应的操作过程。

对于以上各个单元功能,都可以参阅图3A至图14部分所对应的相关描述进行理解,本处不再重复赘述。

参阅图16,本发明实施例还提供的另一图数据处理装置70,该图数据处理装置70可以为上述图3A-图14部分中的工作节点,该图数据处理装置70包括:

接收单元701、第一存储单元702、第二存储单元703和处理单元704,其中,接收单元701可以为图3B中的I/O接口,第一存储单元702可以为图3B中的硬盘、第二存储单元703可以为图3B中内存,以及处理单元704可以为图3B中的处理器。

接收单元701、第一存储单元702、第二存储单元703和处理单元704都可以分别执行图数据处理的方法部分工作节点侧的相对应的操作过程。对以上单元701-704的功能都可以参阅图数据处理的方法部分中工作节点侧的描述进行理解,本处不再重复赘述。

本领域普通技术人员可以理解上述各个实施例描述的主控节点和工作节点执行的全部或部分步骤是可以通过程序来指令相关的硬件(例如处理器)来完成,该程序可以存储于计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。本发明实施例所使用的术语“程序”应被广泛地解释为包括但不限于:指令,指令集,代码,代码段,子程序,软件模块,应用,软件包,线程,进程,函数,固件,中间件等。

以上对本发明实施例所提供的图数据处理的方法、装置以及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1