随着图规模的逐渐增大,普通PC已无法将整个图一次完全载入到内存中,如何在数据图只能部分载入内存的情况下也能使用数据挖掘算法(如pagerank、wcc等)进行分析?随着Graphchi的出现,这个问题得到了较好解决。Graphchi是由CMU(卡内基梅隆大学)博士Aapo Kyrola开发的一套基于磁盘的图处理系统,该系统声称能有效处理边数目达数十亿规模的数据图。我们都知道计算机中各个层次的数据访问时间:CPU访问寄存器、访问内存、访问磁盘依次存在几个数量级的差异,而数据I/O时间往往成为系统的性能瓶颈,Graphchi使用并行滑动窗口(parallel sliding window)来处理存储在磁盘上的图数据,减少了磁盘的随机读写,从而减少了处理过程中的磁盘访问时间。首先Graphchi将图中所有顶点按id由小到大划分成几个区间(interval),然后每个区间对应一个shard用来存放该区间内所有顶点的入边(边先按目的点排序再按源点排序),这样就完成了图的划分。图算法执行时将各个interval及对应shard中的入边(memory shard)和聚集其他shard中的出边(sliding shard)载入内存进行处理。原理如下图所示:
这样就使得对存放在磁盘中的边的访问绝大部分是顺序进行的,减少了随机访问可能导致的系统性能下降。
(