TuGraph图数据管理平台社区版已于2022年9月在Github开源,本文将对TuGraph图分析引擎的技术进行剖析。(图1.1图分析引擎)
在TuGraph中,导出和计算过程均可以通过在内存中并行处理的方式进行加速,从而达到近乎实时的处理分析,和传统方法相比,即避免了数据导出落盘的开销,又能使用紧凑的图数据结构获得计算的理想性能。
Standalone模式的数据源是TXT、二进制、ODPS文件等外部数据源,能够独立于图数据存储直接运行分析算法。
TuGraph图计算系统社区版内置6个基础算法,商业版内置了共34种算法。涵盖了图结构、社区发现、路径查询、重要性分析、模式挖掘和关联性分析的六大类常用方法,可以满足多种业务场景需要,因此用户几乎不需要自己实现具体的图计算过程。
表1.1TuGraph内置算法
2.1图分析框架图分析框架作为图分析引擎的“骨架”,可以联合多种模块有效的耦合协同工作。一般分为预处理、算法过程、结果分析三个阶段。
算法过程会根据得到的数据通过特定的算法进行逻辑计算,并得到结果数据。结果分析部分根据得到的结果数据进行个性化处理(如取最值等),并将重要的信息写回和打印输出操作。
由前文所述可知,图分析引擎分为Standalone、Embed和Procedure模式,现在以bfs算法为例分别介绍他们的使用方式。3.1Procedure模式Procedure模式主要用于Client/Sever的TuGraph运行时,图算法的加载和调用。在TuGraph/plugins目录下执行bashmake_so.shbfs即可在TuGraph/plugins目录下的到bfs.so文件,将该文件以插件形式上传至TuGraph-web,输入参数后即可执行。示例:在TuGraph/plugins编译.so算法文件
bashmake_so.shbfs
将bfs.so文件以插件形式加载至TuGraph-web后,输入如下json参数:即可得到返回结果。
输出内容解释:
3.2Embed模式
该种方式主要用于TuGraph在后台程序中对预加载的图存储数据进行算法分析,多用于快速调试。在TuGraph/plugins目录下对embed_main.cpp文件完善,补充数据名称、输入参数、数据路径等信息,示例如下:
保存后在TuGraph/plugins目录下执行bashmake_so.shbfs即可在TuGraph/plugins/cpp目录下的到bfs_procedure文件,bashmake_embed.shbfs
在TuGraph/plugins文件夹下执行./cpp/bfs_procedure即可得到返回结果。
Standalone模式可以独立于图存储运行,直接从文本文件或ODPS读取Edgelist形式的图数据。在TuGraph/build目录下执行makebfs_standalone即可得到bfs_standalone文件,该文件生成与TuGraph/build/output/algo文件夹下。运行:在TuGraph/build目录下执行./output/algo/bfs_standalone-–type[type]–-input_dir[input_dir]-–vertices[vertices]--root[root]–-output_dir[output_dir]
示例:在TuGraph/build编译standalone算法程序
在TuGraph/build/output目录下运行text源文件
得到运行结果:
结果参数解释同上。
大规模图计算系统TuGraph由蚂蚁集团和清华大学共同研发,包括图数据库TuGraph-DB,流式图计算系统TuGraph-DataFlow,离线图计算系统TuGraph-Compute等多个子系统。其中TuGraph-DB是一个高性能分布式图数据库,它...