仔细看看图计算系统是干嘛的,做笔记,决定未来方向。
一. 费马科技 五篇知乎文 图计算系统发展简史
https://zhuanlan.zhihu.com/p/83202666
社交网络分析、网页排序、社区发现、天体物理学、计算化学、生物信息学、超大规模集成电路的设计、运输路线的规划、电力网络的仿真模拟等等
-
早期的图计算框架:
早期的面向图计算的程序库缺乏对用户友好的编程模型,需要介入和管理的细节较多,上手难度大(BGL、PBGL)。 -
通用大数据处理系统
通过较为廉价的普通服务器集群进行大规模数据的管理和处理。处理大规模图数据的原始武器:Hadoop。用户可以在不了解分布式底层细节的情况下,开发分布式程序。但是图分析算法的特点:“它们通常都是迭代式的计算过程,且每一轮计算涉及的数据会随着算法的进度不断发生变化”。使用Hadoop实现图分析算法时,我们不得不反复地将中间结果序列化到磁盘,从而产生了不必要的开销。
Spark针对这一点,提出了将中间结果缓存到内存中的想法,能够在图数据的规模能够容纳到集群的内存中时获得显著的性能提升。
尽管使用通用的大数据处理系统如Hadoop/Spark等进行图计算的效率较低,但它们在图数据分析的预处理/后处理等场景上依然有不可或缺的作用。
-
Pregel/GraphLab/PowerGraph/GraphChi等先驱工作
3.1 Pregel
日益增长的网页数量对图计算能力提出了越来越高的要求,Pregel诞生了。以顶点为中心的图计算编程模型,将算法的每一轮迭代抽象为从单个顶点的角度考虑需要完成的计算过程,即用户自定义的顶点程序(vertex programs)。每个顶点有两种状态:活跃和非活跃;每轮迭代中只有活跃顶点需要参与计算。Pregel使用消息传递(message passing)模型在顶点之间通信:用户可以在顶点程序中让一个顶点向其它顶点(通常是邻居)发送消息;根据收到的消息,顶点可以更新自己的状态以及计算相关的数据。
Pregel可以非常容易地以顶点为基本处理单元,图计算从单线程扩展到多核进而多机上。
后面各个研究机构对Pregel在多个维度如数据划分、负载均衡、通信方式等方面进行了优化。
3.2 GraphLab
GraphLab主要面向机器学习/数据挖掘问题。
GraphLab把输入/输出数据以图的形式进行表示(针对很多这类算法需要在稀疏数据上进行迭代式计算的特点),并将算法抽象为图上的计算过程。
GraphLab中的通信发生在各个顶点不同副本间的状态同步(没懂),而非Pregel中的消息传递。是以顶点为中心的图计算模型。
GraphLab主要采用异步的计算模式,通过多种级别的一致性来保证算法的收敛效率,而Pregel是典型的同步计算模式。
3.3 PowerGraph
实际图数据具有幂律分布的特点、异步引入的开销导致性能不够理想。PowerGraph是GraphLab的2.x版本。突出贡献是提出了基于顶点分割(vertex-cut)思想的图数据划分方法,并将顶点程序分成了三个步骤——收集信息(Gather)-更新状态(Apply)-分发信息(Scatter)(又称GAS模型),能够更好地应对实际图数据容易导致的计算/通信不均衡。
顶点分割则以边为划分单元,一个顶点的边可以归属到不同的partition。3.4 GraphChi
第一个实现将大规模图数据处理搬到普通PC上的系统。
PSW(Parallel Sliding Windows)处理模型。尽量让I/O访问都是大块的读/写。 -
Scalability! But at what COST?
《Scalability! But at what COST?》这篇文章为大数据平台提供了一个衡量指标——COST(the Configuration that Outperforms a Single Thread,即超过单线程的性能所需要的配置)。
最基本的单线程实现就能接近甚至超过一个集群能够达到的性能。原因:过于重视通信和负载均衡带来的影响、忽略了分布式场景下计算部分的影响。Gemini抛弃了传统分布式图计算系统以图划分质量为优化方向的观念,提出了以计算为中⼼的设计原则。
-
其他领域:图计算语言/动态图计算/GPU或者其他加速器
5.1 图计算语言
之前的图计算系统都需要用户使用如C++、Java等程序设计语言来描述计算过程,长代码,不同的API,可移植性非常低。设计专门面向图计算的领域专用语言。5.2 动态图计算。
顶点和边上的属性会发生变化;拓扑结构也会发生改变。动态图计算系统。面向更新、存储、计算等方向的动态图计算系统。5.3 GPU/加速器
由于图计算中大量存在的随机访问,基于GPU的图计算系统不一定能获得相比CPU更好的性能。
显存在容量方面很难与内存相比——合理地使用CPU/GPU以及显存/内存/外存进一步提升资源的使用效率。
用其它类型的加速器来辅助图计算:在秒级时间内遍历边数高达70万亿边的超大规模图数据的“神图”面向国产众核处理器申威26010设计和实现。
二. 简书文 图计算系统学习 三种编程模式
https://www.jianshu.com/p/8c75a3dd1b4c
图计算编程模型包括edge-centric、vertex-centric和 subgraph-centric编程模型。
-
edge-centric
其支持的图算法要满足如下性质:
v_dst = f( v_src1, v_src2, v_dst ) = f( v_src2, f(v_src1, v_dst) ) 即依次处理每条边得到partial result可以得到最终的计算结果. -
vertex-centric
可以实现所有图算法,但是在一些算法上没有edge-centric模型实现的算法效率高 -
subgraph-centric
适合Graph mining类算法
三. 百度文 费马科技 图数据库和图计算系统有什么区别
https://baijiahao.baidu.com/s?id=1639929429233593804&wfr=spider&for=pc
图数据库适合需要对子图进行并发操作的场景;图计算系统适合需要对全图进行迭代式计算的场景。
图计算系统面向的场景主要是全图分析类的任务。
面向的通常是静态的拓扑结构。可选的技术细节较多也意味着最终的系统可能由于任何一个环节的拖累导致糟糕的性能。图计算系统通常采用不可变(immutable)的数据布局,使得读取效率可以最大化,但是需要更精细地安排和组织并行的处理过程。
四. 图计算系统进展和展望(17年的文章)
https://blog.csdn.net/onlyoncelove/article/details/79934815
介绍了“一”里面的一些东西,更加细致,然后主要介绍华为的图计算系统VENUS。
五. 大规模图计算系统综述
https://blog.csdn.net/qq_21125183/article/details/80671547
介绍了图的基本知识。
在图计算中如何将一个大规模的图分割成若干子图更是件非常有考究的工作。
图计算系统分类为:四种图计算系统:单机内存图处理系统、单机核外图处理系统、分布式内存图处理系统、分布式核外图处理系统。
X-Stream(单机核外)则介绍了一种以边为中心的编程模型。在scatter阶段以流的形式处理每条边和产生传播顶点状态更新集,在gather阶段它以流的形式处理每一个更新并应用到对应的顶点上。自然图中顶点集远远大于边集,所以X-Stream把顶点存储在高速存储设备(Cache对于RAM,RAM对于SSD/Disk)中表现为随机读写,把边集和更新集存于低速存储设备中表现为最大程度的顺序读写。X-Stream流式访问图数据,其流划分相比于GraphChi无需对shard内的边进行排序大大缩短了预处理时间,并使用work-stealing避免Scatter-Gather导致的线程间负载不均衡的问题。但是X-Stream在计算过程中,每轮迭代产生的更新集非常庞大,接近于边的数量级;而且需要对更新集中的边进行shuffle操作;缺乏选择调度机制,产生了大量的无用计算。
六. Pregel技术原理
https://blog.csdn.net/qq_38265137/article/details/80547763
更详细介绍了Pregel的技术。
七. 其他
https://blog.csdn.net/u013710265/article/details/71516896?utm_medium=distribute.pc_relevant.none-task-blog-searchFromBaidu-9.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-searchFromBaidu-9.nonecase
同步图和异步图计算简介。
https://blog.csdn.net/qq_21125183/article/details/80738707?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase
小综述
https://baijiahao.baidu.com/s?id=1660574501524061420&wfr=spider&for=pc
简介三种计算模式