分布式图处理系统(GraphLab、PowerGraph以及同步BSP模型的Pregel)主要有两种执行模式。一种是同步执行模式,还有一种是异步执行模式。同步模式即相邻两步迭代之间存在同步控制,所有任务均完成该步的工作之后,才可以启动下一次迭代计算,发往第k次迭代的消息仅在第k次迭代时对顶点可见。异步模式即相邻两步迭代之间不存在同步控制,各任务独立进行迭代计算,不存在相互等待。在迭代过程中,当消息到达接收方后,目的顶点可以立即启动计算处理,并广播新的计算结果,而不必同步等待所有顶点均收到所有消息数据。下面我们就详细介绍一下分布式图处理系统中的同步异步执行模式:

1. 同步执行模式 Synchronous

同步执行模式在两次相邻的迭代之间,存在Barrier的限制,所有任务均完成该步的工作之后,才可以启动下一次迭代计算。在正在的同步计算模式实现下,同步模式下使用两个位图来相应地识别当前和下一次迭代中的活跃顶点。当消息激活顶点时,位图会更新。迭代后,所有消息都已处理完毕,并且每个Worker中的两个位图被翻转。上面的位图表示当前迭代顶点执行中活跃顶点的标识。下面的位图表示下一轮迭代中活跃顶点的标识,深色表示激活顶点状态,白色表示不激活顶点状态。

2. 异步执行模式 ASynchronous

对于异步模式,这里有一个全局优先级(例如FIFO)队列调度活跃顶点。每个Worker线程都有一个本地待处理队列来保存停滞的活跃顶点,这可能会等待来自相邻顶点的消息的响应。当有空余的线程被空出来的时候,这个空余的线程会从Active Queue中拿取活跃顶点,然后在当前管道出来队列中执行顶点程序,分别经过Gather、Apply、Scatter阶段。在Scatter阶段的时候会激活邻居顶点,将激活的邻居顶点放回入 Active Queue队列中去。

3. 同步异步执行模式对比

同步模型
       优势:批量发送消息,大大提高网络利用率。由于消息被批量发送,同步模式更加适合于消息通信量大的算法(IO敏感型),并且每个顶点上的计算是轻量级的。
       缺点:1.在大多数图算法中,同步模式存在迭代计算收敛不对称的缺点。这意味着大多数顶点会很快的收敛在少部分的迭代后。然而存在一些顶点收敛速率很慢,需要很多轮的迭代计算。
                  2.同步模式不适用于一些图处理算法:图着色算法旨在使用最少的颜色将不同的颜色分配给相邻的顶点。在贪婪的实现中,所有的顶点同时选择最小的颜色。因为具有相同颜色的相邻顶点将根据相同的之前颜色来同时来回地选取相同的颜色。
异步模型
        优势:1.异步模式能够加速程序的收敛。并且它十分适合CPU敏感型的算法。
                  2.并且有些图处理算只适合异步模式
        缺点:1.异步模式存在顶点lock contention开销。对于相邻顶点来说,异步模式通过分开调用Gather、Apply、Scatter阶段来避免数据竞争,也就是说其中某个顶点程序会被lock,需要等待相邻顶点某个阶段执行完成。
                  2.异步模式频繁的发送消息,CPU不断的封装TCP\IP包,浪费了CPU的利用率。

4. 同步异步执行引擎

下面我们介绍一下分布式系统中的同步异步执行引擎:

4.1 同步引擎

1) Excange message阶段,master接受来自mirror的消息;

2) Receive Message阶段,master接收上一轮Scatter发送的消息和mirror发送的消息,将有message的master激活, 对于激活的顶点,master通知mirror激活,并将vectex_program同步到mirrors;

3) Gather阶段,多线程并行gather, 谁先完成,多线程并行执行localgraph中的顶点,mirror将gather的结果发送到master;

4) Apply阶段,master执行apply(apply()),并将apply的结果同步到mirror (sync_vertex_data()).

5)Scatter阶段,master和mirror基于新的顶点数据,更新边上数据,并以signal的形式通知相邻顶点。

4.2 异步执行引擎

异步引擎中,每个顶点是消息驱动的状态机。

1) 在每一轮执行开始时,Master从全局的调度器(Sceduler)获取消息,获取消息后,master获得锁,并进入Locking状态。同时,master通知mirror获取锁,进入Locking状态。

2) master和mirror分别进行Gathering操作,mirror将gathering结果汇报给master,由master完成汇总。

3) master完成applying之后,将结果同步到mirror上。

4) master和mirror独立的执行scattering,执行完成之后释放锁进入None状态,等待新的任务到来。

5) mirror在scattering状态时,可能再次接收到来自master的locking请求,这种情况下,mirror在完成scattering之后将不会释放锁,而直接进入下一轮任务中。

5. 异步执行引擎中锁抢占的开销(Lock Contention)

可串行化异步(Asynchronous + Serializable Engine)

异步执行引擎很难去编程实现,并且由于调试的复杂性,所以提出了异步引擎进行可串行化,防止相邻顶点程序同时运行。Async+S就是相邻顶点必须可串行化执行不能并行执行。

相邻的Master顶点会抢夺共享锁,当抢到锁的顶点,进入执行调度阶段。接下来会执行Gather Apply Scatter阶段。相邻顶点不可以同时运行点程序,也就是说相邻顶点程序会等待,保证相邻顶点不能并行地执行点程序。

分布式图处理系统同步异步执行模式相关推荐

  1. 一周一论文(翻译 总结)—— [NSDI 17] TUX2: Distributed Graph Computation for Machine Learning 面向机器学习的分布式图处理系统

    1. Introduce 在图形引擎(如GraphLab [29])上的早期工作是基于机器学习的动机,基于观察到许多机器学习问题可以用图形自然而有效地建模,并通过迭代收敛算法解决.         问 ...

  2. 分布式图处理系统--Pregel

    介绍分布式图处理系统–Pregel以及其开源实现–Giraph 图数据处理简介 图数据的应用 图数据 数据本身以图的形式呈现 社交网络 传染病传播途径 交通路网 某些非图结构的数据,也可以转换为图模型 ...

  3. Ajax同步异步执行顺序问题

    今天项目中碰到一个问题,大概是这样的:JS中一个方法A需要先给隐藏域赋值,然后另一个方法B再从这个隐藏域取值,获取到这个值后给接口传参然后请求数据.也就是说这两个方法需要有执行顺序,A方法先执行,然后 ...

  4. [PPOPP 15] PoweSwitch: 基于同步异步切换的分布式大规模图处理系统 学习总结

    今天要讲的文章PPOPP 2015年的一篇文章,SYNC or ASYNC Time to Fuse for Distributed Graph-Parallel Computation.本文主要想解 ...

  5. [PVLDB 12] GraphLab : 分布式机器学习大规模图处理系统 学习总结

    今天要讲的文章是PVLDB 2012年的一篇文章,Distributed GraphLab: A Framework for Machine Learning and Data Mining in t ...

  6. [OSDI 12] PoweGraph: 分布式图并行计算框架 学习总结

    今天要讲的文章是OSDI 2012年的一篇文章,PowerGraph:Distributed Graph-Parallel Computation on Natural Graphs.本文主要想解决的 ...

  7. 基于图查询系统的图计算引擎

    柯学翰, 陈榕 上海交通大学软件学院并行与分布式系统研究所,上海 200240 摘要:在目前的研究中,图查询和图计算系统是相互独立的,但在实际应用中两者通常是同时存在的.为解决相互独立的系统带来的存储 ...

  8. 【理论篇】IC间通信的时序模型——系统同步、源同步和自同步

    目录 1.系统同步 2.源同步 3.自同步 有三种用于两个IC间通信的时序模型--系统同步.源同步和自同步. 1.系统同步 系统同步:两片IC之间进行通信时,使用一个共用时钟,用于数据发送和接收. 如 ...

  9. 25张图详解 | 大型分布式电商系统架构(二)

    本文是学习大型分布式网站架构的技术总结.对架构一个高性能.高可用.可伸缩及可扩展的分布式网站进行了概要性描述,并给出一个架构参考.文中一部分为读书笔记,一部分是个人经验总结,对大型分布式网站架构有较好 ...

最新文章

  1. java 多线程 信号_Java多线程——Semaphore信号灯
  2. t7910安装linux体会_linux心得体会范文
  3. Nginx打开目录浏览功能(autoindex)以及常见问题解决方案
  4. OpenCV清除背景扣除background subtraction的实例(附完整代码)
  5. ++i 和 i++的实现
  6. ASCII + Url + Base64
  7. 来潮汕,这些食物不吃后悔一辈子...
  8. 杠杠做的全屏随鼠标滚动显示图片,类似于PPT效果
  9. OAuth2.0_JWT令牌-生成令牌和校验令牌_Spring Security OAuth2.0认证授权---springcloud工作笔记148
  10. 《TensorFlow 2.0深度学习算法实战教材》学习笔记(九、卷积神经网络)
  11. python股票交易系统是如何实现自动交易的?
  12. 3D游戏案例:滚动天空(超低配版)
  13. win10系统mysql重新配置密码
  14. 生成sign(签名),以及校验工具类
  15. 修改MySQL的字符集为utf8mb4
  16. android 模拟器使用intel硬件加速
  17. cufflinks 绘图
  18. POSIX是什么有什么用
  19. Python之小波分析
  20. 【19考研】计算机/软件等专业调剂信息集合!【完结版】

热门文章

  1. 算法学习之快速排序的C语言实现
  2. angularjs loading, animate
  3. 解决ie6、7 margin-bottom 失效问题
  4. C#程序出现内存溢出错误的解决办法
  5. [ASP.NET 控件实作 Day28] 图形验证码控件
  6. 朱毅麟:为什么用户接收机定位需要接收4颗导航卫星的信号?
  7. 德国公司宣布研制出新冠病毒快速检测试剂 2.5小时出结果
  8. 深度学习(计算机视觉)面试中问题(二)
  9. 2019语音技术报告:语音经济规模将超移动应用
  10. 阅片机器人性能增8倍,帮电网大省钱:英特尔加速AI推理细节