graphlab-架构分析

GraphLab是一个高级图并行抽象,用于高效处理数据依赖性。不同于MapReduce,它在分布式data-graph中处理记录。软件栈中所有机器平等,通过TCP连接通信。GraphLab包括基础组件层、抽象层和引擎层,支持异步和同步执行模型,适用于机器学习应用。例如在k-means中,它通过同步引擎进行数据收集、应用和散播。
摘要由CSDN通过智能技术生成

摘要:

Graphlab是一个高级的图并行抽象,它高效直观的表现了计算的依赖性。Mapreduce的计算采用独立的记录。Graphlab采用依赖性的存储在大的分布式data-graph中的顶点中的记录。Graphlab中的计算用vertex-program表示。它能够在每个顶点上并行执行,能够和邻居顶点相互影响。

 

1.       Software Stack:

 

从图中我们可以看出graphlab集群中的所有机器都是等价的,无主、从节点之分。机器间采用TCP连接。

 

2.       Graphlab源码结构:

基础组件层:提供Graphlab数据传输、多线程管理等基础并行结构的组件模块,下                        面将主要介绍其通信、数据序列化、数据交换、多线程管理四个功能模块。

Graphlab基于TCP协议的长连接在机器之间进行数据通信。在Graphla初始化阶段,所有机器建立连接,将socket数据存储在std::vector<socket_info> sock 结构中。

Graphlab使用单独的线程来接收和发送数据,其中接收或发送都可以配多个线程,默认每个线程中负责与64台机器进行通信。在接收连接中,tcp_comm基于libevent采用epoll的方式获取连接到达的通知,效率高。

抽象层:1)      dc_dist_objectGraphLab对所有分布式对象的一个抽象,其目标是将分布式处理的数据对象对用户抽象成普通对象。

        2)      buffer_exchange是基于dc_dist_object对需要在顶点间交换的数据提供一个容器。

        3)      distribute_controller是基于dc_dist_object实现的一个整个分布式系统的控制器,提供了机器数据、顶点关系等全局信息。

        抽象层是仿照MPI完成的RPC服务。提供异步的,多线程RPC服务。实现了机器之间的通信。

引擎层:async_consisten_engine是异步引擎,异步的执行vertex_programs,能够保持互斥。保证相邻的节点不会同时执行。

       Synchronous_engine是同步引擎,同步的执行活跃的vertex_programs

应用层:在graphlab上的应用程序。Toolkitsgraphlab上实现的应用程序。

 

开发者主要构造图和实现相应的vertex_programs

3.       MPIgraphlab的关系:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值