一、什么是图计算,为什么需要用图计算?
什么是图计算?
图(Graph): 是一种重要的数据结构,它由节点V(或称为顶点,即个体),与边E(即个体之间的联系)构成,我们一般将图表示为G(V,E)。
图数据的典型例子有 网页链接关系、社交网络、商品推荐 等。
对应互联网来说: 可以把 web 网页看作顶点,页面之间的超链接关系作为边;
对应社交网络来说: 可以把用户看作顶点,用户之间建立的关系看作边。比如微信的社交网络,是由节点(个人、公众号)和边(关注、点赞)构成的图;淘宝的交易网络,是由节点(个人、商品)和边(购买、收藏)构成的图。
近年来,图数据规模呈指数级增长,可能达到数十亿的顶点和数万亿的边,且还在不断增长,单机模式下的图计算已经不适合目前数据的增长,传统的分布式大数据处理平台比如MapReduce、Spark也出现网络和磁盘读写开销大、运算速度慢、处理效率极低的问题。
对于图计算而言,性能成本、容错机制以及可拓展性都是非常重要的。如果性能可以显著提高,结点显著减少,那么就能极大地缩短运行时间。
在此基础上,如果使用更大开销的容错技术,例如检查点的方式,那么故障产生的概率将更低。但是,传统的大数据分析平台往往只在性能与可拓展性中选择了一方。比如MPI、OpenMP等注重性能的平台只支持可读写的数据,容错困难,可扩展性差,自动负载不平衡;专注于拓展性的大数据分析平台,如MapReduce、Spark等支持只读数据集,容错机制和扩展性好,自动负载平衡,但性能较低。
以Spark为例,其基于Scala语言,运行在JVM上,内存表示冗余,占用内存大,垃圾收集对性能影响大。在一些迭代的图算法上,开启128个线程的Spark程序性能有时候还不如优化很好的单线程程序,并且需要的内存容量是原始数据集的20倍——对于10TB级的数据,往往需要数百TB的内存,这在绝大部分生产环境中是不可能的。以Sogou的网页链接数据为例,Sogou的网页链接数据量为137TB,这是很难使用Spark进行计算的。此外,早期的图计算方法主要局限于智能社区或社交网络分析,如果图计算方案的性能和容量限制可以克服,图计算可以应用于更广泛的场景,如资本市场风险管理、生命科学研究、医疗保健交付、监控和应对道路事故、智能基础设施管理和其他领域。 因此,为应对图计算中对高效处理大规模图数据的巨大挑战,可扩展分布式图计算成为了当前热点研究问题。
自从2001年以来,分布式方法就一直是比较热议的处理大图数据的方法,特别是2003年和2004年,Google公布了MapReduce的基本原理和主要设计思想,这一模型的推出给大数据并行处理带来了巨大的革命性影响。此后提出的图处理系统,比如2006年发布的Apache Hadoop、2009年诞生于加州大学伯克利分校AMP