关于支持动态图与图流的Pregel类框架的技术咨询
动态图/图流场景下的类Pregel框架疑问
背景与现状
- 目前我接触到的主流Pregel实现(如GraphX、Flink Gelly)均采用静态图模型,即必须预先明确所有顶点与边的信息。
- 我曾搜寻可处理流数据或动态图的类Pregel框架,但未找到相关成果。
- 令我意外的是,Pregel原始论文中明确说明框架本身具备处理图拓扑变更的能力:
与消息机制相同,变更请求会在发出后的下一个superstep生效。在该superstep中,先执行删除操作,且先删除边再删除顶点(因为删除顶点会隐式删除其所有出边);删除操作完成后执行添加操作,先添加顶点再添加边;所有变更操作均优先于Compute()调用。这种部分排序可解决大多数冲突,得到确定性结果。
剩余冲突由用户定义的处理器解决。若同一superstep中存在多个创建同一顶点的请求,系统默认会任意选择一个;但有特殊需求的用户可通过在Vertex子类中定义合适的处理器方法,指定更优的冲突解决策略。该处理器机制同样适用于解决多个顶点删除请求、或多个边添加/删除请求引发的冲突。我们将冲突解决委托给处理器,以简化Compute()的代码,这限制了处理器与Compute()之间的交互,但在实践中并未造成问题。
- 我的认知:Apache Giraph在运行SSSP、PageRank等经典Pregel算法时,同样假设图是静态的(若该认知有误,欢迎指正)
核心问题
- 是否存在可处理动态图的图流框架或API?
- 若不存在,顶点中心式Pregel方法未扩展到图流领域的具体原因是什么?
内容的提问来源于stack exchange,提问作者K.M
相关产品推荐
相关产品推荐

