CN113177034A - 一种跨平台统一的分布式图数据处理方法 - Google Patents

一种跨平台统一的分布式图数据处理方法 Download PDF

Info

Publication number
CN113177034A
CN113177034A CN202110491976.3A CN202110491976A CN113177034A CN 113177034 A CN113177034 A CN 113177034A CN 202110491976 A CN202110491976 A CN 202110491976A CN 113177034 A CN113177034 A CN 113177034A
Authority
CN
China
Prior art keywords
vertex
pregelx
distributed
graph
distributed graph
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110491976.3A
Other languages
English (en)
Other versions
CN113177034B (zh
Inventor
黄宜华
王肇康
黎俊虹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University
Original Assignee
Nanjing University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing University filed Critical Nanjing University
Priority to CN202110491976.3A priority Critical patent/CN113177034B/zh
Publication of CN113177034A publication Critical patent/CN113177034A/zh
Application granted granted Critical
Publication of CN113177034B publication Critical patent/CN113177034B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种跨平台统一的分布式图数据处理方法,包括如下步骤:用户通过跨平台统一分布式图处理编程框架提供的API触发计算;用户的程序被序列化到程序文件中并上传分布式文件系统;框架启动相应分布式图处理系统的计算作业;集群中多个计算节点启动计算进程;每个计算进程下载程序文件并启动PregelX Runner进程;PregelX Runner与计算进程建立进程间通信通道,计算进程通过进程间通信通道调用用户程序进行具体的数据处理。本发明使得用户可以基于Python语言编写可跨平台执行的分布式图数据处理程序,解决了现有分布式图处理系统用户学习成本高、程序迁移代价高等易用性不足的问题。

Description

一种跨平台统一的分布式图数据处理方法
技术领域
本发明涉及分布式数据处理领域,尤其涉及一种跨平台统一分布式图数据处理方法。
背景技术
分布式图处理系统(又称分布式图计算系统)提升了用户进行大规模图数据分析处理的能力,降低了大规模图数据分析的技术门槛,使用户只需基于系统提供的抽象编程模型和具体的编程接口表达图算法即可,而无需关心图数据的分布式存储、任务分发、网络通信、分布式故障恢复等技术细节。但现有的分布式图处理系统在易用性上仍面临不足。首先,现有分布式图处理系统缺乏统一的编程模型和编程接口,使得用户需要不断学习新的分布式图处理系统的使用方法,才可以将已有程序迁移到新系统上,带来较大的学习成本与程序迁移开销;其次,目前主流的分布式图处理系统(例如Giraph、GraphX、Gemini等)只向用户提供Java、Scala、C++等编译式程序设计语言的编程接口,并要求用户使用Hadoop、Spark、MPI等分布式计算框架提供的辅助API进行程序设计,这种要求对于日常使用Python语言的数据分析师、算法工程师而言技术门槛较高、易用性较差。
为了提升易用性,一些分布式图处理系统(例如Distributed Socialite、PGX.D、GraphFrames)等提供了基于Datalog、Green-marl、Spark SQL等领域特定语言的编程接口,但这些语言难以表达循环、分支等复杂计算逻辑,表达力不足。KDT和Piccolo系统虽然允许用户用Python语言编写图处理程序,但KDT系统无法处理顶点、边带有属性的图数据,而Piccolo系统提供的编程模型与图分析中常见的顶点、边等元素契合性较差。
而目前在Python语言环境下能够进行图数据处理的软件库主要有graph-tool、NetworkX、igraph、SNAP、scikit-network等。但这些软件库均采用单机串行实现,它们受单机内存容量的限制难以处理大规模图数据集。理论上也可以通过通用分布式数据处理系统Ray、PySpark、Dask等实现分布式图数据处理,但这些通用系统缺乏对图数据结构的封装和优化,需要用户进行大量的面向图数据的手动管理,依然具有较高的使用门槛和学习负担,易用性依然不足。
发明内容
发明目的:针对现有分布式图处理系统对于数据分析师、算法工程师等普通用户而言易用性较差的缺陷,本发明的目的是提供一种支持Python语言编程、能够使用户跨平台统一地进行分布式图数据处理的方法,使用户只需编写一次分布式图处理程序,程序可不经修改地、跨平台地在多个分布式图处理系统中执行。
技术方案:为实现上述发明目的,本发明提出了一种跨平台统一的分布式图数据处理方法,包括以下步骤:
(1)在集群的主节点安装跨平台统一分布式图处理编程框架UniGPS,所述编程框架UniGPS向用户提供Python语言的应用程序编程接口;
(2)所述编程框架UniGPS向用户提供跨平台统一分布式图处理编程模型VCProg,所述编程模型将图计算过程表达为顶点属性记录的多轮迭代更新的过程;
(3)所述编程模型VCProg以Python语言的抽象基类PregelX的形式向用户提供编程接口,所述抽象基类PregelX包括如下函数:顶点属性初始化、生成空消息、顶点程序、发送消息以及消息合并,用于描述每一轮迭代中对每个顶点属性记录的更新方法;
(4)在集群的主节点上,用户根据其所希望执行的图数据处理算法逻辑,编程实现抽象基类PregelX的一个具体子类;
(5)用户通过调用所述抽象基类PregelX中的函数,将所述具体子类中的一个实例对象提交给所述编程框架UniGPS;
(6)所述编程框架UniGPS将用户提供的实例对象序列化到程序文件中并上传至分布式文件系统;
(7)所述编程框架UniGPS启动分布式图处理系统作业的Driver进程;启动后的所述Driver进程通过集群资源调度管理器在集群中若干计算节点启动所述分布式图处理系统作业的计算进程;
(8)每个所述计算进程从分布式文件系统下载所述程序文件到本地文件系统;
(9)每个所述计算进程通过Python语言解释器启动一个PregelX Runner进程,并与所述PregelX Runner进程建立进程间通信通道,所述PregelX Runner进程从所述程序文件反序列化出一个所述PregelX抽象基类的实例对象O;
(10)各所述计算进程将外部数据源中的输入图数据转换为统一图数据交换格式GraphBuffer;GraphBuffer格式采用目录的形式存储一张图的数据,所述目录下的.meta元文件存储图的元信息数据,所述目录下的vertex顶点集目录存储顶点属性记录,所述目录下的edge边集目录存储边属性记录;所述计算进程将以GraphBuffer格式存储的图数据文件载入分布式图处理系统;
(11)所述计算进程在分布式图处理系统的指导下进行分布式图数据处理,所述分布式图数据处理的过程分为多轮迭代计算;
(12)在所述步骤(11)中,所述计算进程通过进程间通信通道,将需要调用的成员函数编号、成员函数参数传递给所述PregelX Runner进程,所述PregelX Runner进程根据成员函数编号调用所述实例对象O的相应成员函数,所述PregelX Runner进程将成员函数的返回值通过进程间通信通道返回给计算进程,所述计算进程再返回给分布式图处理系统;
(13)当所述分布式图处理系统的迭代次数达到用户给定的上限或者所有顶点均处于未激活状态时,图处理过程的迭代计算终止,所述计算进程将更新后的顶点属性记录和边属性记录以GraphBuffer格式文件的形式输出到分布式文件系统;
(14)所述编程框架UniGPS将所述GraphBuffer格式文件在分布式文件系统上的路径返回给用户。
进一步地,所述步骤(1)中所述的编程模型VCProg采用以顶点为中心的方式组织图数据处理算法逻辑;VCProg编程模型同时兼容Pregel、Gather-Apply-Scatter和Push-Pull等多种已有的分布式图处理编程模型,即基于VCProg编程模型编写的程序能够同时转换成基于Pregel、Gather-Apply-Scatter、Push-Pull等编程模型所编写的程序;VCProg编程模型中,图中每一个顶点和每一条边都附加有以记录形式存储的属性信息;VCProg编程模型采用基于超级步的同步迭代方式组织图数据处理的计算逻辑,它将每一轮迭代中各顶点属性记录的更新过程分解为消息合并、顶点计算和消息发送三个阶段;在每一轮迭代中,各顶点之间通过消息传递机制实现数据交换;VCProg编程模型的核心编程接口为抽象基类PregelX,PregelX基类中包括的成员函数有:顶点属性记录初始化、生成空消息、顶点程序、发送消息和消息合并;PregelX基类以Python语言中的抽象类的方式提供;跨平台统一分布式图处理编程框架UniGPS运行在Python语言编程环境中。
进一步地,所述步骤(2)中,用户需要在Python语言编程环境中实现PregelX抽象基类的一个具体子类,该子类中会重载PregelX抽象基类中所有的抽象成员函数,每个重载后的成员函数的实现方法由用户所需要进行的图数据处理计算逻辑确定。
进一步地,所述步骤(5)中,跨平台统一分布式图处理编程框架UniGPS通过函数参数获取用户指定的分布式图处理系统引擎;UniGPS允许用户指定包括但不限于Giraph、GraphX、Gemini在内的多种分布式图处理系统作为引擎;分布式图处理系统引擎可以由Java、C++、Scala、Python等多种程序设计语言开发。
进一步地,所述步骤(8)中的进程间通信通道包括但不限于gRPC、内存映射文件(memory-mapped file)、消息队列等。
进一步地,所述步骤(10)中,输入图数据文件会分别存储顶点属性记录和边属性记录,每一个顶点/边属性记录以一条记录的形式存储;计算进程调用PregelX Runner进程中PregelX实例对象O的成员函数的调用时机、调用参数由分布式图处理系统决定;输出图数据文件也分别存储顶点属性记录和边属性记录。
本发明的有益效果:本发明使用户能够在Python语言编程环境中编写分布式图数据处理程序,且用户编写的代码不经修改即可跨平台地被Giraph、GraphX、Gemini等多种分布式图处理系统执行,降低了用户的学习成本和程序迁移开销;用户在程序编写的过程中只需面向跨平台统一图处理编程模型VCProg提供的编程接口PregelX抽象基类进行程序开发,而无需了解各种分布式图处理系统的实现细节和编程接口,降低了分布式图处理程序的开发难度,提升了各种分布式图处理系统面向数据分析师、算法工程师等用户的易用性。
附图说明
图1为本发明的总体流程示意图;
图2为本发明的VCProg编程模型中每个顶点属性记录更新过程示意图;
图3为本发明的跨平台统一图处理编程框架UniGPS的系统架构示意图;
图4为本发明的计算进程与PregelX Runner进程之间进程间通信实施方法示意图;
图5为本发明的基于统一图数据交换格式GraphBuffer的数据图文件输入过程示意图;
图6为本发明的统一图数据交换格式GraphBuffer的文件结构示意图;
图7为本发明的GenericRecord序列化格式数组中字段布局示意图;
图8(a)为本发明的UniGPS编程框架与NetworkX软件库处理同一数据集的PageRank算法执行时间对比图;
图8(b)为本发明的UniGPS编程框架与NetworkX软件库处理同一数据集单源最短路径(SSSP)算法执行时间对比图;
图8(c)为本发明的UniGPS编程框架与NetworkX软件库处理同一数据集连通分量(CC)算法执行时间对比图。
具体实施方式
下面结合附图和具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
本发明所有步骤的整体流程如图1所示。本发明涉及用户、集群主节点、分布式文件系统、若干集群计算节点等实体。其中在集群主节点安装有跨平台统一图处理编程框架UniGPS,并运行分布式图处理系统的Driver进程。在集群的计算节点上会运行分布式图处理系统的计算进程和PregelX Runner进程。
发明内容里的步骤(2)中所述的VCProg编程模型的具体实施方式为:VCProg编程模型采用基于超级步的同步迭代方式组织图数据处理的算法逻辑,它将图数据处理的过程分解为顶点属性记录的多轮迭代更新过程;在迭代开始之前,VCProg编程模型利用输入图数据信息初始化图中各顶点属性记录、边属性记录,并设置所有顶点处于激活状态;在每一轮迭代中,VCProg编程模型要求每一个顶点处于激活或未激活两种状态之一;如果一个顶点选择处于激活状态或者该顶点的入边邻居向其发送了消息,则该顶点在本轮迭代中处于激活状态,否则该顶点处于未激活状态;对于输入图中每一个顶点v,顶点v属性记录的更新过程被分解为消息合并、顶点计算、消息发送三个阶段,如图2所示;在消息合并阶段,每个顶点v接受其入边邻居顶点发送给它的消息,并将收到的消息合并为一条消息;在顶点计算阶段,顶点v根据合并后的消息和v当前的顶点属性记录,调用一个顶点计算函数,获得一条新的顶点属性记录,并用新的顶点属性记录替代v原有的顶点属性记录;在消息发送阶段,顶点v根据自己的顶点属性记录,决定是否向其出边邻居发送消息,对于每一个需要发送消息的出边邻居,顶点v根据自己的顶点属性记录、出边的边属性记录,向对应出边邻居发送消息。
发明内容里的步骤(3)中所述的抽象基类PregelX的具体实施方式为:在Python语言下,PregelX抽象基类的定义方式如下文方框中所示(图中的GR表示以GenericRecord格式序列化的记录)。
Figure BDA0003052740780000071
PregelX抽象基类包括initVertexAttr、initMsg、vprog、sendMsg、mergeMsg等抽象成员函数。initVertexAttr抽象成员函数用于描述顶点属性记录的初始化过程,该抽象成员函数将在输入图数据载入之后、所有迭代计算开始之前被调用,该抽象成员函数对每一个顶点调用一次,该函数的参数中id表示顶点ID、out_degree表示顶点的出度、attr表示顶点在输入图数据中的顶点属性记录,该函数的返回值为一条属性记录,表示该顶点的初始顶点属性记录;initMsg抽象成员函数用于生成一条空消息,该成员函数将在所有迭代计算开始之前被调用一次,该函数的返回值为空消息对应的属性记录;vprog抽象成员函数对应于VCProg编程模型中的顶点计算函数,该成员函数将在每一轮迭代中对每一个处于激活状态的顶点调用一次,该函数的参数中attr表示上一轮迭代中该顶点的顶点属性记录,msg参数表示该顶点接收到的合并后的消息、iteration参数表示当前迭代轮次,该成员函数的返回值包括两个字段:new_attr表示该顶点本轮迭代更新后的顶点属性记录,is_active表示该顶点下一轮迭代中是否处于激活状态的标志位;sendMsg抽象成员函数用于决定顶点是否向其出边邻居发送消息以及消息的具体内容,在每一轮迭代中,该成员函数将对每一个激活顶点的每一条出边调用一次,该成员函数的参数中src表示源顶点ID、dst表示出边邻居顶点ID、src_attr表示源顶点的顶点属性记录、edge_attr表示出边的顶点属性记录,该函数返回值包括两个字段:is_emit字段表示对于该出边邻居是否发送消息的标志位,msg字段表示所发送的消息内容;mergeMsg抽象成员函数用于将发送给同一个顶点的两条消息合并为一条消息,在每一轮迭代中,该成员函数将对每个顶点接收到的每一条消息调用一次,该函数的参数中m1和m2分别表示两条待合并的消息,该函数的返回值表示合并后的消息。
发明内容里的步骤(3)中所述的VCProg编程模型的执行过程的具体实施方式为:用户根据VCProg编程模型的行为将图数据处理的计算过程表达为顶点属性记录的三阶段更新过程,用户编写程序实现PregelX抽象基类的一个具体子类,并根据图数据处理的算法逻辑实现PregelX抽象基类中所有的抽象成员函数,然后创建一个具体子类的实例对象(即PregelX实例对象);VCProg编程模型的具体执行步骤如下,在每一轮迭代中,对于每一个顶点v,VCProg编程模型通过循环调用PregelX实例对象的mergeMsg成员函数,将上一轮迭代中发送给v的所有消息合并为一个msg对象,然后调用PregelX实例对象的vprog成员函数,获得顶点v本轮迭代更新后的顶点属性记录以及下一轮是否激活的标志位is_active,如果标志位is_active为真,则对顶点v的每一条出边e调用PregelX实例对象的sendMsg成员函数获得消息发送标志位is_emit和消息对象msg,如果标志位is_emit为真,则调用分布式图处理系统的消息发送机制完成消息发送;VCProg编程模型的迭代终止条件是达到用户给定的最大迭代轮数MAX_ITER或者在某一轮迭代中所有顶点的激活标志位is_active都为假。
基于VCProg编程模型编写的程序转换为基于Pregel编程模型所编写的程序的具体实施方式为:VCProg编程模型编写的程序体现为PregelX实例对象的成员函数;按下文方框中所示的算法逻辑实现Pregel编程模型的顶点程序PregelVertexProgram,并在顶点程序的指定代码位置依次调用PregelX实例对象的成员函数;UniGPS编程框架的计算进程中对PregelX实例对象的成员函数的调用,将被转化为基于进程间通信的方式,对PregelXRunner进程中PregelX实例对象的成员函数的调用。
Figure BDA0003052740780000091
基于VCProg编程模型编写的程序转换为基于Gather-Apply-Scatter编程模型所编写的程序的具体实施方式为:VCProg编程模型编写的程序体现为PregelX实例对象的成员函数;按下文方框中所示的算法逻辑实现Gather-Apply-Scatter编程模型(即GASVertexProgram)的Gather、Sum、Scatter、Apply等函数,各个函数在指定位置依次调用PregelX实例对象的成员函数;UniGPS编程框架的计算进程中对PregelX实例对象的成员函数的调用,将被转化为基于进程间通信的方式,对PregelX Runner进程中PregelX实例对象的成员函数的调用。
基于VCProg编程模型编写的程序转换为基于Push-Pull编程模型所编写的
Figure BDA0003052740780000092
程序的具体实施方式为:对于给定的PregelX实例对象,按下文框中所示的算法逻辑实现Push-Pull编程模型的Work、DenseSignal、DenseSlot等函数,并在各个函数的指定位置依次调用PregelX实例对象的成员函数;UniGPS编程框架的计算进程中对PregelX实例对象的成员函数的调用,将被转化为基于进程间通信的方式,对PregelX Runner进程中PregelX实例对象的成员函数的调用。
发明内容里的步骤(1)中所述的跨平台统一图处理编程框架UniGPS的具
Figure BDA0003052740780000101
体实施方式为:UniGPS编程框架以Python语言中的UniGPS类的形式提供;UniGPS类包括loadFromCSV、loadFromDB、saveToCSV、saveToDB等成员函数,这些成员函数用于实现图数据文件格式与外部数据源的双向转换;UniGPS类包含成员函数pregelX,pregelX成员函数的调用方法如下文框中所示;
Figure BDA0003052740780000102
pregelX成员函数的参数包括输入图数据文件路径、PregelX实例对象、指示分布式图处理系统引擎的字符串、输出图数据文件路径等,用户通过调用UniGPS类的pregelX成员函数触发分布式图数据处理的计算作业。
UniGPS编程框架的架构如图3所示,UniGPS编程框架由跨平台统一图处理编程模型VCProg、基础算子、分布式图处理系统后端、统一图数据交换格式等四个模块组成;跨平台统一图处理编程模型VCProg模块向用户提供PregelX抽象类编程接口,并利用GenericRecord序列化格式表示图中顶点属性记录、边属性记录和消息;PregelX进程间通信接口实现了用户编写的基于PregelX抽象类的图处理程序与分布式图处理系统后端的交互;基础算子模块内置了多种预编译好的典型图算法的算子,用户可以直接调用特定的算子来进行图数据处理,每一个算子都有对应的编程接口,并支持在多个分布式图处理系统上执行;分布式图处理系统后端模块集成了多种主流的分布式图处理系统(例如Giraph、GraphX和Gemini),这些分布式图处理系统负责具体执行用户编写的图处理程序和基础算子模块内置的典型图算法的算子;统一图数据交换格式模块主要实现分布式图处理系统后端与多个外部数据源之间的对接功能,分布式图处理系统后端与外部数据源之间的数据交换均通过统一图数据交换格式GraphBuffer进行中转。
发明内容里的步骤(5)的具体实施方式为:用户调用UniGPS类的pregelX成员函数。
发明内容里的步骤(6)的具体实施方式为:利用Python语言提供的pickle序列化机制来将用户提供的PregelX实例对象序列化为字节类型的数组。
发明内容里的步骤(7)的具体实施方式为:用户通过UniGPS类的pregelX成员函数参数指定分布式图处理系统引擎,UniGPS编程框架支持Giraph、GraphX、Gemini作为分布式图处理系统引擎;启动Giraph计算作业的命令以“hadoop jar”开头,该命令的参数包括序列化文件在HDFS上的路径、输入输出图数据文件路径、Giraph配置文件路径、最大迭代轮数、消息记录的结构信息;启动GraphX计算作业的命令以“spark-submit”开头;启动Gemini计算作业的命令以“mpirun”开头;Giraph计算作业的Driver进程为MapReduce计算作业的Driver进程;GraphX计算作业的Driver进程为Spark Application的Driver进程;Gemini计算作业的Driver进程为Rank为0的MPI进程。
发明内容里的步骤(9)的具体实施方式为:计算进程与PregelX Runner进程之间的进程间通信通道可以是gRPC库,也可以是内存映射文件;计算进程与PregelX Runner进程之间的进程间通信架构如图4所示;计算进程会创建进程间通信客户端对象(IPCClient);根据分布式图处理系统的不同,Giraph和GraphX系统的计算进程会创建Java语言的进程间通信客户端,而Gemini系统的计算进程会创建C++语言的进程间通信客户端;PregelX Runner进程会创建Python语言的进程间通信服务器端对象(IPC Server);进程间通信服务器端对象会向进程间通信客户端对象暴露PregelX抽象类成员函数的远程方法调用接口;进程间通信客户端对象可以借助进程间通信通道实现对服务器端的远程方法调用功能。
利用Python提供的pickle序列化机制实现从字节类型数组反序列化为PregelX实例对象O的功能;PregelX实例对象O将作为一个全局变量保存在PregelX Runner进程中,如图4所示;进程间通信服务器端在接收到进程间通信客户端的远程方法调用之后,会调用PregelX实例对象O对应的成员函数,并将成员函数的返回值通过进程间通信通道返回给进程间通信客户端。
发明内容里的步骤(10)的具体实施方式为:外部数据源中的图数据载入分布式图处理系统的流程如图5所示,对于存储在外部数据源的输入图数据,先通过MapReduce或Spark转换为基于统一图数据交换格式GraphBuffer的文件并存储在分布式文件系统之中,然后分布式图处理系统再从分布式文件系统载入GraphBuffer格式的文件;统一图数据交换格式GraphBuffer的文件结构如图6所示;每一张图的数据在GraphBuffer格式中均以一个目录的形式存储,该目录下的.meta元文件存储图的元信息数据(例如顶点数、边数、有向性等),该目录下的vertex顶点集目录用于存储顶点属性记录(其中vertex顶点集目录下的schema文件存储顶点属性记录的结构信息,data数据目录存储以GenericRecord序列化格式表示的顶点属性记录),该目录下的edge边集目录存储边属性记录(其中edge边集目录下的schema文件存储边属性记录的结构信息,data数据目录存储以GenericRecord序列化格式表示的边属性记录,每一条边属性记录至少包含src和dst两个字段,这两个字段表示了一条边的源顶点和目标顶点编号)。
GenericRecord序列化格式的实施方式为:一条记录由多个字段构成;一条记录在经过GenericRecord格式序列化后得到的字节类型数组的数据布局如图7所示,字节类型数组由Record长度、定长字段数据、变长字段偏移量、变长字段数据等四部分构成;Record长度为32位整型数,记录了整个字节类型数组的长度;定长字段数据部分按照记录的结构定义,依次存储每一个定长字段序列化后得到的字节类型的子数组;变长字段偏移量部分存储了记录中每一个变长字段在字节类型数组中对应子数组的起始位置的偏移量,每一个偏移量是32位整型数;变长字段数据部分具体存储了每一个变长字段序列化后的字节类型子数组;所有字段采用字段数据类型在x86内存中的表示方式进行序列化,不进行额外的压缩或采用特殊编码;对于基本类型字段采用小端字节序,对于字符串字段采用UTF-8格式进行编码。
发明内容里的步骤(12)的具体实施方法为:分布式图处理系统的计算进程按照各自的计算逻辑进行分布式图数据处理;当计算进程需要调用PregelX实例对象的成员函数时,计算进程调用进程间通信客户端对象中相应的PregelX成员函数的远程调用方法,进程间通信客户端对象将远程方法调用的方法编号以及方法参数通过进程间通信通道传递给PregelX Runner进程中的进程间通信服务器端对象,进程间通信服务器端对象根据方法编号以及方法参数,调用PregelX Runner进程中的PregelX实例对象的成员函数,成员函数的返回值通过进程间通信通道传递回计算进程中的进程间通信客户端对象,进程间通信客户端对象再将返回值传递给分布式图处理系统。
发明内容里的步骤(13)中所述的各计算进程将顶点属性记录、边属性记录以文件形式输出到分布式文件系统的具体实施方法为:顶点属性记录、边属性记录以GenericRecord格式进行序列化,并将整张图的数据以统一图数据交换格式GraphBuffer存储在分布式文件系统上。
本发明提出了一种能够实现跨平台统一分布式图数据处理的方法。该方法使用户能够在Jupyter Notebook等交互式Python程序开发环境中进行分布式图数据处理,而无需学习分布式图处理系统的使用,也无需了解分布式计算框架的技术细节。本发明提出的方法使用户编写的分布式图处理程序能够跨平台地被多个分布式图处理系统执行而无需修改程序代码。本发明提出的方法允许输入图数据来自多个外部数据源(例如CSV文件、图数据库等)。为了测试本发明提出的方法的计算性能相比单机图数据处理方法的性能优势,在一个由9个节点组成的集群(1个主节点+8个计算节点)中,通过实验比较了本发明提出的方法和Python单机图计算软件库NetworkX在处理同一个数据集时的执行时间,实验结果如图8所示。图8(a)、图8(b)和图8(c)分别展现了两种方法在PageRank算法、单源最短路径算法(SSSP)和弱连通分量算法(CC)的执行时间,其中本发明提出的方法在分布式图处理系统Giraph、GraphX、Gemini上的执行时间分别记作UniGPS-Giraph、UniGPS-GraphX和UniGPS-Gemini。实验结果表明本发明提出的方法使用户编写的程序可以不经修改地、跨平台地在Giraph、GraphX、Gemini等多个分布式图处理系统上执行。实验结果同时表明本发明提出的方法能够比NetworkX软件库处理更大规模的图数据集,并且本发明提出的方法在分布式图处理系统Giraph上的执行时间小于NetworkX软件库。

Claims (7)

1.一种跨平台统一的分布式图数据处理方法,包括以下步骤:
(1)在集群的主节点安装跨平台统一分布式图处理编程框架UniGPS,所述编程框架UniGPS向用户提供Python语言的应用程序编程接口;
(2)所述编程框架UniGPS向用户提供跨平台统一分布式图处理编程模型VCProg,所述编程模型将图计算过程表达为顶点属性记录的多轮迭代更新的过程;
(3)所述编程模型VCProg以Python语言的抽象基类PregelX的形式向用户提供编程接口,所述抽象基类PregelX包括如下函数:顶点属性记录初始化、生成空消息、顶点程序、发送消息以及消息合并,所述函数用于描述每一轮迭代中对每个顶点属性记录的更新方法;
(4)在集群的主节点上,用户根据其所希望执行的图数据处理算法逻辑,编程实现抽象基类PregelX的一个具体子类;
(5)用户通过调用所述编程框架UniGPS中的函数pregelX,将所述具体子类的实例对象提交给所述编程框架UniGPS;
(6)所述编程框架UniGPS将用户提供的实例对象序列化到程序文件中并上传至分布式文件系统;
(7)所述编程框架UniGPS启动分布式图处理系统作业的Driver进程;启动后的所述Driver进程通过集群资源调度管理器在集群中若干计算节点启动所述分布式图处理系统作业的计算进程;
(8)每个所述计算进程从分布式文件系统下载所述程序文件到本地文件系统;
(9)每个所述计算进程通过Python语言解释器启动一个PregelX Runner进程,并与所述PregelX Runner进程建立进程间通信通道,所述PregelX Runner进程从所述程序文件反序列化出一个所述PregelX抽象基类的实例对象O;
(10)各所述计算进程将外部数据源中的输入图数据转换为统一图数据交换格式GraphBuffer;GraphBuffer格式采用目录的形式存储一张图的数据,所述目录下的.meta元文件存储图的元信息数据,所述目录下的vertex顶点集目录存储顶点属性记录,所述目录下的edge边集目录存储边属性记录;所述计算进程将以GraphBuffer格式存储的图数据文件载入分布式图处理系统;
(11)所述计算进程在分布式图处理系统的指导下进行分布式图数据处理,所述分布式图数据处理的过程分为多轮迭代计算;
(12)在所述步骤(11)中,所述计算进程通过进程间通信通道,将需要调用的成员函数编号、成员函数参数传递给所述PregelX Runner进程,所述PregelX Runner进程根据成员函数编号调用所述实例对象O的相应成员函数,所述PregelX Runner进程将成员函数的返回值通过进程间通信通道返回给计算进程,所述计算进程再返回给分布式图处理系统;
(13)当所述分布式图处理系统的迭代次数达到用户给定的上限或者所有顶点均处于未激活状态时,图处理过程的迭代计算终止,所述计算进程将更新后的顶点属性记录和边属性记录以GraphBuffer格式文件的形式输出到分布式文件系统;
(14)所述编程框架UniGPS将所述GraphBuffer格式文件在分布式文件系统上的路径返回给用户。
2.根据权利要求1所述一种跨平台统一的分布式图数据处理方法,其特征在于:所述步骤(10)中顶点属性记录和边属性记录由多个字段构成,序列化格式将一条属性记录转换为一个字节类型的数组,所述数组从头到尾分别由记录长度、定长字段数据、变长字段偏移量以及变长字段数据四部分构成;所述记录长度部分为32位整型数,记录了整个数组的长度;所述定长字段数据部分按照属性记录的结构定义,依次存储每一个定长字段序列化后得到的字节子数组;所述变长字段偏移量部分存储了记录中每一个变长字段对应子数组在整个字节数组中起始位置的偏移量,每一个偏移量是32位整型数;所述变长字段数据部分存储了每一个变长字段序列化后得到的字节类型的子数组;属性记录中每一个字段采用该字段数据类型在x86内存中的表示方式进行序列化;对于基本类型字段采用小端字节序,对于字符串字段采用UTF-8格式进行编码。
3.根据权利要求1所述一种跨平台统一的分布式图数据处理方法,其特征在于:所述步骤(1)中,所述编程框架UniGPS由所述跨平台统一图处理编程模型VCProg、基础算子、分布式图处理系统后端以及统一图数据交换格式四个模块组成:所述跨平台统一图处理编程模型VCProg模块向用户提供了PregelX抽象类编程接口,并利用一种序列化格式表示图中顶点属性记录、边属性记录和消息,VCProg模块同时包括基于PregelX抽象类编程接口的进程间通信接口;所述基础算子模块内置了多种预编译好的典型图算法的算子,每一个所述算子都向用户提供编程接口,并且支持在多个分布式图处理系统上执行;所述分布式图处理系统后端模块集成了多种分布式图处理系统;所述统一图数据交换格式模块提供了统一图数据交换格式GraphBuffer;所述编程框架UniGPS以Python语言中的UniGPS类的形式向用户提供编程接口。
4.根据权利要求1所述一种跨平台统一的分布式图数据处理方法,其特征在于:所述步骤(2)中,在每一轮迭代中,每个顶点处于激活或未激活两种状态之一,如果一个顶点处于激活状态或者所述顶点的入边邻居向其发送了消息,则所述顶点在本轮迭代中处于激活状态,否则所述顶点处于未激活状态;每个处于激活状态的顶点将其入边邻居顶点发送给它的消息合并为一条消息,然后以合并后的消息和所述顶点当前的顶点属性记录作为参数,调用一个顶点计算函数,获得一条新的顶点属性记录替换顶点之前的顶点属性记录;每个处于激活状态的顶点根据替换后的顶点属性记录,决定是否向其出边邻居顶点发送消息以及发送消息的具体内容。
5.根据权利要求1所述一种跨平台统一的分布式图数据处理方法,其特征在于:所述步骤(3)中,所述PregelX抽象基类包括如下抽象成员函数:initVertexAttr、initMsg、vprog、sendMsg以及mergeMsg;所述initVertexAttr抽象成员函数用于描述顶点属性记录在迭代开始之前的初始化过程;所述initMsg抽象成员函数用于生成一条空消息;所述vprog抽象成员函数用于描述每一轮迭代中新的顶点属性记录的生成方法以及确定顶点是否处于激活状态;所述sendMsg抽象成员函数用于决定一个顶点是否向其出边邻居发送消息以及消息的具体内容;所述mergeMsg抽象成员函数用于将发送给同一个顶点的两条消息合并为一条消息。
6.根据权利要求1所述一种跨平台统一的分布式图数据处理方法,其特征在于:所述步骤(7)中,所述编程框架UniGPS根据用户指定的分布式图处理系统引擎、输入图数据文件路径以及输出图数据文件路径信息,生成用于启动分布式图处理系统作业的命令,然后借助操作系统的命令执行机制运行所述命令。
7.根据权利要求5所述一种跨平台统一的分布式图数据处理方法,其特征在于:所述步骤(11)中,在每一轮迭代过程中,对于输入图数据中每一个顶点v,分布式图处理系统循环调用PregelX实例对象的mergeMsg成员函数,将上一轮迭代中发送给顶点v的所有消息合并为一个msg对象,然后调用PregelX实例对象的vprog成员函数,获得顶点v本轮迭代更新后的顶点属性记录以及是否激活的标志位is_active,如果所述标志位is_active为真,则对所述顶点v的每一条出边调用PregelX实例对象的sendMsg成员函数,获得消息发送标志位is_emit和消息对象msg,如果标志位is_emit为真,则分布式图处理系统调用其自身的消息发送机制向出边邻居顶点发送消息;分布式图处理系统迭代终止的条件是达到用户给定的最大迭代轮数或者所有顶点的激活标志位is_active都为假。
CN202110491976.3A 2021-05-06 2021-05-06 一种跨平台统一的分布式图数据处理方法 Active CN113177034B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110491976.3A CN113177034B (zh) 2021-05-06 2021-05-06 一种跨平台统一的分布式图数据处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110491976.3A CN113177034B (zh) 2021-05-06 2021-05-06 一种跨平台统一的分布式图数据处理方法

Publications (2)

Publication Number Publication Date
CN113177034A true CN113177034A (zh) 2021-07-27
CN113177034B CN113177034B (zh) 2023-07-18

Family

ID=76928617

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110491976.3A Active CN113177034B (zh) 2021-05-06 2021-05-06 一种跨平台统一的分布式图数据处理方法

Country Status (1)

Country Link
CN (1) CN113177034B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114185519A (zh) * 2021-12-08 2022-03-15 中盈优创资讯科技有限公司 一种优化Spark和机器学习框架整合的方法及装置
CN114254164A (zh) * 2022-03-01 2022-03-29 全球能源互联网研究院有限公司 一种图数据存储方法及装置
CN115495056A (zh) * 2022-11-17 2022-12-20 阿里巴巴(中国)有限公司 分布式图计算系统和方法
CN115795114A (zh) * 2023-02-10 2023-03-14 山东浪潮科学研究院有限公司 深度学习推理的计算图表示和存储方法及其相关组件
CN116304218A (zh) * 2023-05-24 2023-06-23 杭州悦数科技有限公司 一种基于图数据库集成多领域平台的实现方法及系统
CN117061516A (zh) * 2023-09-01 2023-11-14 翼方健数(北京)信息科技有限公司 基于分布式的多方安全计算方法、系统和可读存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160063037A1 (en) * 2014-09-02 2016-03-03 The Johns Hopkins University Apparatus and method for distributed graph processing
CN108280522A (zh) * 2018-01-03 2018-07-13 北京大学 一种插件式分布式机器学习计算框架及其数据处理方法
CN109684349A (zh) * 2018-11-20 2019-04-26 中国科学院计算技术研究所 一种基于sql与图计算交互式分析的查询方法和系统
CN109918199A (zh) * 2019-02-28 2019-06-21 中国科学技术大学苏州研究院 基于gpu的分布式图处理系统
CN110161999A (zh) * 2019-06-14 2019-08-23 湖南千盟智能信息技术有限公司 基于大数据的焦化智能制造系统
CN110727836A (zh) * 2019-12-17 2020-01-24 南京华飞数据技术有限公司 基于Spark GraphX的社交网络分析系统及其实现方法
US20200293920A1 (en) * 2015-10-28 2020-09-17 Qomplx, Inc. Rapid predictive analysis of very large data sets using the distributed computational graph using configurable arrangement of processing components

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160063037A1 (en) * 2014-09-02 2016-03-03 The Johns Hopkins University Apparatus and method for distributed graph processing
US20200293920A1 (en) * 2015-10-28 2020-09-17 Qomplx, Inc. Rapid predictive analysis of very large data sets using the distributed computational graph using configurable arrangement of processing components
CN108280522A (zh) * 2018-01-03 2018-07-13 北京大学 一种插件式分布式机器学习计算框架及其数据处理方法
CN109684349A (zh) * 2018-11-20 2019-04-26 中国科学院计算技术研究所 一种基于sql与图计算交互式分析的查询方法和系统
CN109918199A (zh) * 2019-02-28 2019-06-21 中国科学技术大学苏州研究院 基于gpu的分布式图处理系统
CN110161999A (zh) * 2019-06-14 2019-08-23 湖南千盟智能信息技术有限公司 基于大数据的焦化智能制造系统
CN110727836A (zh) * 2019-12-17 2020-01-24 南京华飞数据技术有限公司 基于Spark GraphX的社交网络分析系统及其实现方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
RAUL CASTRO FERNANDEZ 等: "Java2SDG: Stateful big data processing for the masses", 《2016 IEEE 32ND INTERNATIONAL CONFERENCE ON DATA ENGINEERING (ICDE)》, pages 1390 - 1393 *
俞山青 等: "面向数据高交互任务的分布式图计算方案的设计与实现", 《小型微型计算机系统》, no. 10, pages 2098 - 2103 *
王肇康: "分布式图处理若干算法与统一图处理编程框架研究", 《中国博士学位论文全文数据库基础科学辑》, no. 4, pages 002 - 11 *
黎俊虹: "跨平台统一分布式图计算框架研究及系统实现", 《中国优秀硕士学位论文全文数据库基础科学辑》, no. 9, pages 002 - 18 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114185519A (zh) * 2021-12-08 2022-03-15 中盈优创资讯科技有限公司 一种优化Spark和机器学习框架整合的方法及装置
CN114254164A (zh) * 2022-03-01 2022-03-29 全球能源互联网研究院有限公司 一种图数据存储方法及装置
CN115495056A (zh) * 2022-11-17 2022-12-20 阿里巴巴(中国)有限公司 分布式图计算系统和方法
CN115495056B (zh) * 2022-11-17 2023-03-07 阿里巴巴(中国)有限公司 分布式图计算系统和方法
CN115795114A (zh) * 2023-02-10 2023-03-14 山东浪潮科学研究院有限公司 深度学习推理的计算图表示和存储方法及其相关组件
CN116304218A (zh) * 2023-05-24 2023-06-23 杭州悦数科技有限公司 一种基于图数据库集成多领域平台的实现方法及系统
CN116304218B (zh) * 2023-05-24 2023-08-11 杭州悦数科技有限公司 一种基于图数据库集成多领域平台的实现方法及系统
CN117061516A (zh) * 2023-09-01 2023-11-14 翼方健数(北京)信息科技有限公司 基于分布式的多方安全计算方法、系统和可读存储介质
CN117061516B (zh) * 2023-09-01 2024-04-26 翼方健数(北京)信息科技有限公司 基于分布式的多方安全计算方法、系统和可读存储介质

Also Published As

Publication number Publication date
CN113177034B (zh) 2023-07-18

Similar Documents

Publication Publication Date Title
CN113177034A (zh) 一种跨平台统一的分布式图数据处理方法
US11010681B2 (en) Distributed computing system, and data transmission method and apparatus in distributed computing system
CN108280522B (zh) 一种插件式分布式机器学习计算框架及其数据处理方法
JP2001502823A (ja) インターフェイス定義言語によって定義されたデータ構造体を異種システム間で移送するための方法および装置
CN115563817A (zh) 基于内存数据库的仿真数据访存方法、装置和计算机设备
CN104794095B (zh) 分布式计算处理方法及装置
CN111324619B (zh) 微服务系统中的对象更新方法、装置、设备和存储介质
CN115827101A (zh) 一种面向地球应用模型的云化集成系统及其方法
CN115186796A (zh) 基于fpga的卷积神经网络自动部署方法
De Luca et al. Distributed genomic compression in MapReduce paradigm
CN114327479A (zh) 用于大数据的数据处理方法和数据处理装置
CN116775041B (zh) 基于流计算和rete算法的实时决策引擎实现方法
CN109388406A (zh) 转换java代码的方法及装置、存储介质、电子装置
CN112882696B (zh) 一种基于超级计算机的全要素模型训练系统
CN115328679A (zh) 异构函数库的自动化集成方法、计算设备及其系统
CN110868461B (zh) 一种Gaia集群中面向节点间异构带宽的数据分发方法
Loaiza et al. Big-Data in Climate Change Models—A Novel Approach with Hadoop MapReduce
CN117498987B (zh) 一种应用于大规模网络数据传输的方法
WO2024046458A1 (zh) 层次化系统、运算方法、装置、电子设备及存储介质
Chang et al. Support NNEF execution model for NNAPI
CN116452951B (zh) 基于中央数据池的遥感信息提取模型分布式训练方法
CN116451005B (zh) 基于Spark分布式的栅格代数运算方法、系统及设备
CN116700934B (zh) 一种多元异构算力设备调度方法、装置、设备及存储介质
Feng A Multi-Level Data Integration Approach for the Convergence of HPC and Big Data Systems
CN117421360A (zh) 一种基于向量化执行引擎的数据分析处理框架及其方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant