Skip to content

Fixed the issue in PoweGraph where it was not running due to an invalid URL and added the functionality for importing custom partition results.

Notifications You must be signed in to change notification settings

BearBiscuit05/PowerGraph_update

Repository files navigation

PowerGraph是2012年发表在OSDI会议上的一篇有关于图计算系统的文章。由于其本身包含了多种传统图算法,并且支持分布式计算,因此直到今日依然会成为众多论文的基线对比,或者是通过PG来验证一些算法的效果。

但是由于PowerGraph年久失修,目前无法直接通过github的源码来进行编译,主要的原因还是第三方库的URL失效。由于最近我们的论文有使用到PG计算框架,也是踩了许多坑,再次进行记录,希望可以方便后面还需要使用PG来进行测试的人员。

github地址:GitHub - BearBiscuit05/PowerGraph_update

源仓库地址:https://github.com/jegonzal/PowerGraph

  • Ubuntu16.04
  • gcc 5.4
  • g++5.4
  • jdk1.8
  • build-essential
  • Zlib
sudo apt-get update

sudo apt-get install gcc g++ build-essential libopenmpi-dev openmpi-bin default-jdk cmake zlib1g-dev git

git clone https://github.com/BearBiscuit05/PowerGraph_update.git

cd PowerGraph_update

./configure

cd release/toolkits/graph_analytics

make -j2

或者直接从docker hub拉取镜像

docker pull bearbiscuit/pgimage:latest

PowerGraph可以很方便的进行一些传统图计算任务的运行,经常作为论文的基线测试程序,用于测试分区算法的健壮性,因此,为了方便在PG上测试分区算法在实际分布式场景下的表现,我们对PG的代码进行了一些调整,使得PG可以直接接受来自外部的分区结果,以供应用。

以一个graph.txt文件为例,每一行包含三个参数,分别是src,dst,partid,其中partid表明对应的边(src,dst)最后被分配到哪一个分区中。三个参数之间需要用\t分隔。

#SRC\tDST\tpartid
1	2	0
2	3	1
3	0	1

由于我们的导入接口设置在random中,替代了原先的random方法,因此,运行的命令调整为

./pagerank --graph_opts="ingress=random" --graph /data/in_S5P.txt --format self_tsv

# 其中pagerank通过之前的make命令完成编译,路径在release/toolkits/graph_analytics下
# --graph参数接着的是图的文件路径
# format本意是告诉PG你的图文件结构,self_tsv便是上面提到的三参数文件结构

分布式PG运行流程

前一节中已经提供了详细的信息

docker pull bearbiscuit/pgimage:latest
git clone https://github.com/BearBiscuit05/PowerGraph_update.git

首先,docker集群必须在同一个子网下,因此我们需要先创建子网

docker network create --driver bridge --subnet 43.0.0.0/16 --gateway 43.0.0.1 pg_network

随后,我们修改runDocker.sh脚本中的内容,以调整至你所需要的内容(如映射PowerGraph,映射图数据)

在docker集群搭建完成后,进入任意容器,并进入PG程序运行的目录下,随后运行

mpiexec --allow-run-as-root -n 2 -hostfile /root/data/machines ./pagerank --graph_opts="ingress=random" --graph /root/data/test.edges --format self_tsv

About

Fixed the issue in PoweGraph where it was not running due to an invalid URL and added the functionality for importing custom partition results.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published