Maiter: An Asynchronous Graph Processing Framework for Delta-based Accumulative Iterative Computation

背景:

    传统的分布式图处理框架一般为同步迭代的方式,也就是同一轮迭代内并行;不同轮迭代间串行。典型的同步分布式图计算框架包括Pregel和MapReduce。同步迭代方式最大的局限在于水桶效应,执行速度最慢的worker会影响整个系统的执行效率,因为只有所有worker都完成了本轮迭代计算,系统才能进入下一轮迭代。
    据此人们提出了一些异步分布式迭代计算的框架,然而这些框架存在着相当严重的问题:通信量增加、存在大量无效计算。比如PageRank算法,顶点根据所有邻居顶点的权值更新自身的权值,然而如果某个邻居顶点的权值没有更新,那么该顶点本次计算的权值就是无效的。同时每个顶点频繁地与邻居通信,会造成通信负载过大。
    除此之外,异步迭代不保证能获得与同步迭代相同的计算结果,存在不确定性。
    作者在本篇文章中提出了一种新型的异步分布式迭代计算框架DAIC,并实现了其对应的分布式计算系统Maiter。

DAIC介绍

    DAIC-Delta-based Accumulative Iterative Computation,是本文提出的一种异步分布式迭代计算模型。各顶点的单次迭代过程可分为两步:

    然而不是所有图迭代算法都能使用DAIC模型,该算法必须满足以下4个条件:

(1)

    也就是顶点 j 在第k次迭代的状态,可以根据其入边邻居顶点的状态得到。比如PageRank算法,就满足上述条件。

(2)
    即运算符⊕必须满足分配性。

(3)
    运算符⊕必须满足交换律和结合律

(4)
    根据上述四个条件和初始的两步迭代等式,我们可以根据所有顶点的初始值vj0和Δvj1求出任意顶点在迭代次数k下的值vjk

    然而上述模式仍然是同步的,即:

    所以上述的模式称为同步DAIC,接下来介绍异步DAIC模式。

异步DAIC
    DAIC可以是异步迭代的,即顶点可以基于其获得的入边邻居顶点的信息,在任意时刻进行状态update操作。异步DAIC模式可表示为两步操作:

    其中 mj 是顶点 j 的任意邻居顶点发来的信息。每个顶点设置有一块缓存,用来保存这些mj,作为Δvj,用作更新值。
    当顶点vj判断其缓存的信息包含了所有入边邻居顶点在状态k下的信息时,即可执行更新操作,进入状态k+1,发送权值给出边邻居顶点,并将缓存Δvj清零。

收敛性
    作者证明了当迭代次数趋于无穷时,异步DAIC能够得到与同步DAIC同样的迭代结果。

有效性
    作者证明了异步DAIC的收敛速度比同步DAIC更快。

调度策略
    对于图的分布式并行计算,一般是将图进行点中心或边中心分割,交给多个处理器进行计算,每个处理器负责一个子图的计算。
    在异步DAIC中,单个处理器对子图更新时,有两种策略:循环调度和优先级调度。循环调度:以循环的方式更新子图中的顶点;优先级调度:优先更新子图中权值变化最大的顶点。
    作者证明了优先级调度的异步DAIC能获得与同步DAIC相同的迭代结果。

    作者还证明了异步DAIC的优先级调度策略比循环调度策略收敛得更快。

DAIC算法

    作者在本章节给出了若干迭代算法的DAIC版本。包括SSSP、Connected Components、PageRank、Adsorption、HITS、Katz metric、Jacobi method、SimRank、Rooted PageRank。这些算法都满足上述的4个条件,其在DAIC模式下的符号如下表所示。

Maiter介绍

    Maiter是根据异步DAIC模型实现的分布式异步计算系统。用户将算法转换为DAIC算法时,只需实现Maiter提供的几个API,指定上述Table 1 中的四个数值或函数,以及图分区,迭代终止条件等信息。
    Maiter系统拥有一个master和其余若干worker,master协同worker,监督worker的工作状况。worker之间并行执行,并使用MPI进行信息交流。
    下面是一些Maiter的实现方式:

Data Partition:图中每个顶点拥有独一无二的vid,Maiter根据hash函数h()对顶点进行分区。

Local State Table:每个worker维护一张本地状态表,记录本地顶点的状态。如下图所示。

Receive Thread and Update Thread:接收线程-接收入边顶点传来的信息,更新本地状态表;更新线程-更新本地状态表,发送信息给出边顶点。

Scheduling within Update Thread:Maiter使用优先级更新策略,在一轮更新过程中,Maiter根据vid优先级向更新队列中装入若干待更新顶点,依次更新顶点并将其出队。当更新队列为空时,再次根据优先级挑选若干待更新顶点,进入下一轮更新。

Message Passing:Maiter维护了多张发送表-msg tables,每张表对应一个worker。当Update线程执行后,会产生若干message,这些message会根据目的地装入对应的msg table中,(注意,这里的装入不是作为一个新的数据装入,而是与之前的数据进行⊕计算。因为接收方顶点会将接收到的信息直接进行⊕计算,作为Δv,所以不妨在发送前就进行⊕计算。)因此最后发送时,worker对每个目的地worker最多发送一条数据。Maiter设置了一个计时器,每隔一段时间就发送所有msg tables中的数据。

Iteration Termination:worker使用progress estimator进行迭代终止管理;master使用global terminator进行全局迭代终止管理。global terminator周期性地向所有worker发送progress request signal信号,并根据每个worker的progress estimator返回的信息判断是否结束迭代。当决定结束迭代时,global terminator广播terminate signal信号,所有worker停止当前操作,将结果数据存入HDFS中。

Fault Tolerance:worker每结束几次迭代,就将当前状态存入HDFS,作为checkpointing。存储的信息除了Local State Table,还有所有msg tables

Maiter API

    Maiter定义了三个模板类API,类中声明了若干纯虚函数作为实现接口。用户将算法转换为DAIC算法时,只需分别继承这三个模板类,并实现其中的纯虚函数。

Partitioner:对输入的图文件(如txt文件)进行处理,生成顶点和边,构造图结构,并对顶点进行分区。
parse_line:读入一行文本,生成顶点和它的所有出边。
partition:根据顶点vid分区。

IterateKernel:将算法描述为DAIC格式,即实现g{i,j}(x),⊕,vj0和Δvj1四元组。
init:指定vj0和Δvj1
accumulate:实现⊕。
send:实现g{i,j}(x)。

TermChecker:算法的迭代终止条件。
estimate_prog:返回worker的本地迭代信息。
terminate:master根据每个worker返回的迭代信息,判断是否结束迭代。

    下图为PageRank的DAIC算法三个模板类的子类实现。

[论文笔记]Maiter:一种基于Delta的累积迭代计算的异步图处理框架相关推荐

  1. orb特征 稠密特征_一种基于ORB-SLAM2的双目三维稠密建图方法技术

    本发明专利技术公开了一种基于ORB‑SLAM2的双目稠密建图方法,涉及机器人同步定位与地图创建领域,该方法主要由跟踪线程.局部地图线程.闭环检测线程和稠密建图线程组成.其中稠密建图线程包含以下步骤:1 ...

  2. 4位格雷码的顺序编码_一种基于格雷码的方形QAM星座图编码方法和系统与流程...

    本发明属于测试技术领域,尤其涉及一种基于格雷码的方形QAM星座图编码方法和系统. 背景技术: 矢量信号分析中通常采用星座图来表征调制信号质量,星座图中星座点的编码方法直接影响信号解调后的BER(即比特 ...

  3. 论文笔记:一种适用于NILM的暂态事件检测算法(滑动窗双边CUSUM)

    目录 1. 前言 2. 双边CUSUM算法原理 3. 引入滑动窗 4. 算法参数 5. 算法流程 6. Next Action 1. 前言 本文是对以下论文的阅读笔记,附有一定的解读和思考. 牛卢璐, ...

  4. 论文浅尝 | 一种基于递归超图的知识图谱问答方法

    笔记整理 | 谭亦鸣,东南大学博士生 来源:EACL'21 链接:https://www.aclweb.org/anthology/2021.eacl-main.35.pdf 概述与动机 本文提出了一 ...

  5. 【论文摘要】一种基于NSPD-DCT域变参数混沌映射的零水印新方案

    A Novel Zero-Watermarking Scheme Based on Variable Parameter Chaotic Mapping in NSPD-DCT Domain 标题:一 ...

  6. 一种基于子序列的亚细胞定位预测的深度学习框架(DeepLncLoc: a deep learning frame work for long non-coding RNA subcellular)

    一种基于长链非编码RNA子序列的亚细胞定位预测的深度学习框架 期刊:biorxiv 文章地址:https://www.biorxiv.org/content/10.1101/2021.03.13.43 ...

  7. 论文笔记_2011_RAS_使用特征稳定性直方图FSH的移动机器人的建图和定位(上)

    基本情况 出处:Bacca B, Salvi J, Cufí X. Appearance-based mapping and localization for mobile robots using ...

  8. 【论文笔记】LARA:基于GAN的解决冷启动问题的推荐系统

    本文是关于论文<LARA: Attribute-to-feature Adversarial Learning for New-item Recommendation>的阅读笔记. 由于冷 ...

  9. 【论文解读】一种基于时间卷积网络的知识驱动股票趋势预测方法

    写在前面 下面这篇文章的内容主要是来自论文<Knowledge-Driven Stock Trend Prediction and Explanation via Temporal Convol ...

最新文章

  1. 江苏省三级偏软考试大纲
  2. 4.1.7 文件共享
  3. linux centos7 mysql_Linux centos7环境下安装MySQL的步骤详解
  4. Go语言讲解深拷贝与浅拷贝
  5. 【python教程入门学习】python值得学吗,怎么自学?
  6. php 服务器安装,php服务器安装笔记
  7. 微课|中学生可以这样学Python(例9.2):无界面通信录管理系统
  8. 【资料】《数字电子技术基础》阎石第五版
  9. 软件测试中的测试文档
  10. 报价单,要这样做才专业
  11. 从月薪3000到月薪过万:做什么工作才能过上想要的生活
  12. 什么是rich text,富文本?富文本有什么优势?
  13. win10更新后耳机没有声音的解决方式
  14. 五花八门的垂直搜索引擎
  15. 在CSDN中如何上传附件(资源)?
  16. Maven概念,项目目录结构
  17. adb 工具源码修改
  18. YOLO如何训练分类网络???
  19. ## GEE Landsat8 Collection2 level2 数据集 计算LST地表温度
  20. HTML5——如何在网页中加入图片和超链接。

热门文章

  1. 解决Navicat使用账号密码登陆Oracle数据库提示【密码已过期,请输入新密码】【或账号已被锁定】
  2. pythonGUI之wxpython控件总结
  3. Linux vsftp
  4. vue生成二维码图片并且下载图片到本地
  5. 终年32岁的传奇数学家,生前寂寂无闻,一个世纪后却让硅谷领袖们集体落泪致敬
  6. 英语单词记忆 词源法-思维导图(09)词源bar/bal/ban-41
  7. C++ 修改char数组的值
  8. 集思录REITs基金数据python爬取写入EXCEL表
  9. 【TP5.1】商品列表加载
  10. word脚注:文字与分隔符间的空格删除