【笔记】大数据运算系统2_图计算系统(GraphLab,PowerGraph)&数据流系统

–Outline

  • 图计算系统
    • GraphLab
    • PowerGraph
  • 数据流系统storm

–内容

1.GraphLab

  • 单机系统
  • 共享内存
    • 多个线程都可以访问图数据
    • 线程之间不用发送和接收消息
  • 异步计算
    • 不分超步,允许不同顶点有不同的更新速度
    • 适合支持机器学习算法,在不同部分收敛速度不同
  • 数据模型
    • Data Graph G=(V, E),其中每个顶点和每条边可以有对应的数据
    • 全局数据表(SDT,shared data table):SDT[key]–>value,可以定义全局可见的数据。
  • 顶点计算
    • D S c o p e v = u p d a t e ( D S c o p e v ; S D T ) D_{Scope_{v}}=update(D_{Scopev};SDT) DScopev=update(DScopev;SDT)
      • update类似Pregel compute,是应用程序。
      • s c o p e v scope_{v} scopev是顶点运算涉及的范围(include顶点v,v的邻边,v的相邻顶点)
      • 运算是直接访问内存进行的
      • update直接修改顶点和边上的数据,修改立即可见
    • 共享内存出现问题?
      • 数据竞争data race
      • 避免数据竞争:提出三种一致性模型;要求应用程序选择其中一种;系统根据一致性模型,避免数据竞争,并发执行;
    • 三种一致性模型
      1. Full consistency
      应用程序update需要访问整个 s c o p e v scope_{v} scopev
      系统保证在update执行过程中,没有任何其他函数会访问 s c o p e v scope_{v} scopev
      对应用程序最宽松
      full consistency
      2. Edge consistency
      应用程序update不写邻居顶点的数据,但可能读邻居顶点的数据(可以写v,v的邻边;可以读整个 s c o p e v scope_{v} scopev
      系统保证在update过程中,没有任何其他函数会访问v及其邻边
      edge consistency
      3. Vertex consistency
      update只读写本顶点的数据,和读v邻边的数据
      系统保证update执行过程中,没有任何其他函数会访问v本身
      vertex consistency
  • 系统按照什么顺序调用update程序
    scheduling
  • Sync计算:除update外的一种全局计算
    • Sync类似在所有顶点上计算一个aggregate
      • 程序员提供fold和apply函数,给定一个初始值和一个key
t = initial_value;
for each v in V{
	t = fold(v,t);
}
SDT[key] = apply(t);
  • GraphLab小结
    • 以顶点为中心的计算
    • 异步计算
    • 可立即看到完成的计算结果
    • 采用一种全局的aggregate机制帮助判断是否收敛
2.PowerGraph
  • 大量自然图符合Power-law
    • Power-law Distributions(幂律分布)是一种常见的数学模型,如二八原则:20%的人口拥有80%的财富,20%的上市公司创造80%的价值,80%的收入来自20%的商品等。
  • Power-law引起的问题
    • 图划分之间有大量的跨边
    • Pregel需要传输大量的消息
  • 把单一的compute()分成三个用户函数GAS来实现
    • gather, apply, scatter
      GAS
    • gather:局部和–>全局和
    • apply:在主顶点更新pagerank
    • scatter:从主顶点拷贝pagerank更新数据,本地计算发送给邻居的信息内容,然后发送消息
  • PowerGraph小结
    • 分布式图计算
    • 针对Power-law图
    • 提出GAS模型

2.数据流系统Storm

  • 概念
    • 数据流过系统
    • 在流动的数据上进行处理
  • 内部实现:java 和 clojure混合实现
    • 大部分代码是Clojure写的,提供的编程接口主要为java
      storm
  • storm程序概念
    • 计算形成一个有向无环图DAG
      • DAG用一个Topology数据结构表示
      • 每个job有一个topology
      • 对应于数据流处理运算关系的一张图
    • topology中的每个顶点代表一个运算
      • Spout:产生数据流;Bolt:对数据流进行某种运算
    • topology中两个顶点间的边代表数据流动的关系
  • 每个Supervisor运行多个线程
  • 每个线程只会负责一个Spout/Bolt
  • 一个Spout/Bolt可以对应多个Supervisor和多个线程
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值