论文笔记: Optimizing graph algorithms on pregel-like systems

创新点:在pregel上执行了各种以前未执行过的算法,找出其低效的地方并提出了优化技术。其通用的技术基于在图的小区域上执行连续计算的思想,从而完善了Pregel的顶点中心模型。

理论基础

一、 计算的开销
  1. 通信开销,超级步的数量,内存类的开销,顶点间的计算开销
  2. 优化: 一般优化前两个。 系统层面优化 & 算法层面优化。
二、 系统封装类
  1. Vertex class :父类,用户定义的顶点函数通过继承该类而实现。
  2. VertexValue class:封装了与各顶点相关的状态,由用户定义
  3. Message class :封装了各顶点之间传送的信息。
  4. Aggregators :全局对象,所有顶点可见,用于数据共享、协调和数据聚合。当多个顶点在一个superstep同时更新某对象的本地副本时,系统会使用用户定义的该聚合函数来聚合数据的更新。
  5. Master class:在GPS和Giraph中引进,可被继承后实现 master.compute() ,在每个超级步的开头被调用,可以存储本地数据,也可以在全局对象被广播至各顶点前更新之

图算法

每个图算法会有多个计算步骤,我们将其看做多个"phase",每个阶段会由多个超级步完成,而其协调由master.compute完成

一、Strongly Connected Components(SCC,强连通分量,4 phase)
  1. Transpose Graph Formation
  2. Trimming:图中各顶点仅有出边或入边,或为独立顶点。
  3. Forward-Traversal:MaxForwardReachable() ,从所有顶点并行地遍历图G,找到每个顶点可达的最远的顶点,形成SCC1, SCC2,...
  4. Backward-Traversal:遍历G.T,对每个SCC,判断其是否强连通。
二、 Minimum Spanning Forest(MSF,最小生成森林)
  1. Min-Edge-Picking:为每个顶点选择其最小权重的邻边。
  2. Supervertex-Finding:conjoined-tree & supervertex & subvertices, 图中v5是supervertex,其余顶点是subvertices。该阶段就是指每各subvertex都要找到其对应的supervertex。


  3. Edge-Cleaning-and-Relabeling:
  4. Supervertex-Formation:在每个supervertex处合并其所有重标记的subvertices的邻接列表
三、Approximate Maximum Weight Matching(MWM,近似最大权匹配)
  1. Max-Weight-Edge-Picking:顶点选择其权重最大的邻边,暂存邻点信息且给邻点发信息。
  2. Match-Discovery:两点匹配后,给其邻点发消息,变为inactive
  3. Removing-Matched-Neighbors:未匹配的点将已匹配的邻点从自己的邻接列表中删除。
四、 Weakly Connected Components (WCC,弱连接分量)

优化技术

一、Finishing Computations Serially (FCS)

  1. 通过对输入图的一小部分执行一些串行计算来解决算法的缓慢收敛问题

  2. 活跃子图(active-subgraph):会执行大量超级步的非常小的输入图子图。其中的顶点分为两类:potentially-active(在后面的计算中依然有作用)& certainly-inactive

  3. 思想:通过在master.compute()内部连续地在一个小的活动子图上完成计算,从而避免大量的这些小的超步执行。

    FCS会设置阈值,监控图中活动子图的尺寸,一旦低于预设的阈值,就将活跃子图发送给master,在master.compute()中完成其连续计算,并将结果发回给workers。

  4. 适用:活跃子图在 整个计算过程中 或者 某个单独阶段(phase) 会收缩的图算法。当原图算法收敛特别慢的时候,FCS效果比较好:FCS-SCC,在其反向遍历阶段适用。

由于图的结构特性,有可能会出现,频繁地仅在输入图的某一个极小区域上多次执行超级步的情况。而顶点中心模型,每一个超级步中,不同顶点之间都会交换同步和协调信息,因此这种情况会造成性能的降低,收敛地会很慢
FCS针对这种情况做优化,将本应在一系列超级步中完成的计算,发送到master,由其完成串行计算后直接发给各worker。

二、Storing Edges At Subvertices (SEAS)

  1. 通过以分布式的方法存储supervertex的邻接表信息来解决MSF算法中合并各顶点邻接列表的所造成的高开销问题。
  2. 适用:在计算过程中形成超顶点的算法。
    ————>MSF:在 supertex formation 阶段适用,改为 New-Supervertex-Notification 阶段,即在第 i 次迭代时,① 刚结束第 i - 1 次迭代的每一个子顶点(subvertex)向其最近更新的超级顶点(supervertex)发消息,包含其ID;② 第 i - 1 次迭代的每一个超级顶点(此轮或许不再是超级顶点)给其原来的子顶点回发消息,包含其新的超级顶点的ID;③ 这些子顶点更新其信息,存储新的超级顶点ID。

由于超级顶点的存在,在MSF算法第四阶段,需要接收并合并其所有子顶点的邻接列表,已完整存储最小生成森林,导致了操作上的高额开销,SEAS针对这种情况进行优化,将超级顶点的边信息以分布式的方法存储在所有子顶点间

三、Edge Cleaning On Demand (ECOD)

  1. 根据请求执行边清理,解决开销过大的问题。
  2. “Edge cleaning”:常见图操作,当顶点删除其邻接顶点时所必须的操作,要清理掉其相关的边。
  3. MWM上的实现:在“Removing-Matched-Neighbors”阶段,只有向v提出了匹配请求的邻居顶点修改其邻接列表,其它邻居顶点保持原样假装无事。若某次迭代时顶点 z 通过待删边e来向v发出请求,则此时才将 z 邻接列表中的该边删除。

在类pregel的系统上edge cleaning的自然实现中,顶点在一个超步中向它们的邻居发送消息,可能基于消息内容会在另一个超步中删除该邻居。通信成本与图中边的数量成正比,可能很昂贵。此外,有时不需要执行删除操作,因为边e不删除也可能永远不会被再次使用或影响计算。ECOD针对这种情况做优化,即假装所有的边都合法,默认对这些该清理的边不做操作,只有当某顶点试图使用这些边做计算时,才执行删除操作。

四、Single Pivot (SP)

  1. 找出倾斜图中的巨大的部件。
  2. WCC上的实现:先随机选定一个顶点,只对该顶点执行前向遍历,找出该顶点所属的component,接着对剩下的部分重新执行SP。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352

推荐阅读更多精彩内容