漫谈大数据仓库与挖掘系统:BSP模型(应用于数据挖掘、机器学习的云计算模型)

2013-10-22 卡特 阿里技术嘉年华

本文其它章节: 

 

漫谈大数据仓库与挖掘系统:前言:大数据的价值  【回复071查看】

 

漫谈大数据仓库与挖掘系统:层次、维度与主题【回复072查看】

 

漫谈大数据仓库与挖掘系统:ETL的开始—数据的传输和同步【回复073查看】

 

漫谈大数据仓库与挖掘系统:MapReduce与大规模离线计算系统【回复074查看】

 

 

 

    MapReduce算法,敲开了大数据时代的大门。不过,在这个百花齐放时代,MapReduce也不足以完整的支撑大数据时代的所有的分布式计算场景。

 

    例如,矩阵分解,是一类非常常用数据分析和处理方法。其具体算法有SVD、PCA、NMF等。其中,如NMF一类的算法,是基于不断的迭代而进行计算的,并且,每个子数据集的划分之间,还具有相关性。如果采用MapReduce模型,若是在一次迭代中重启一个Map,那么Mapper的数量会变成一个天文数字。而如果在一个Reducer中,完成所有具有相关性的数据的全部迭代计算,那么又很可能会导致严重的数据倾斜。所以,MapReduce模型在此种需要多次迭代的计算中,是不适合的。

 

    另外,还有一类计算,是不需要进行初始数据的输入的。例如使用蒙特卡洛法计算PI的值:从概率论的角度上讲,在一个-1<x<1, -1<y<1的坐标系范围内,随机找出一个坐标点,这个坐标点在以原点为圆心,半径为1的圆的内部的概率为PI/4。在实际的计算中,我们一般采用分别进行多次这样的计算,最后取每一次计算出的PI的平均值来作为最终的PI值来输出的。虽然这个算法是可以改写为MapReduce的版本,但是显然,这并不是一个合适的选择。

 

    在这两类计算的情况下,我们需要一个在计算的过程中,节点之间会有交互的、计算过程自由并且可高度定制的计算模型。而MPI虽然能够满足部分要求,但是目前也已经颇显老态。在此基础上,BSP(Bulk Synchronous Parallel)计算模型便脱颖而出。在Google,80%的数据计算是在MapReduce上的,而另外20%则是运行在一个基于BSP模型的叫做Pregel的系统中。Google并没有开源Pregel,Apache按Pregel的思想提供了一个类似框架Hadoop Hama(http://hama.apache.org/  )。我们集团自行研发的ODPS(云梯二)上,也有对应的功能支持:ODPS GRAPH( http://www.atatech.org/article/detail/10780/618 )

 

    在BSP模型中,计算首先被分为若干个超步(Super Step)。每个超步中,一般完成一次计算迭代。例如以最简单的图的广度优先遍历来看,从起始结点每往前步进一层对应一个超步。超步的结束,由程序自行决定。

 

 

    如上图,在一个超步内,分为三个阶段。第一个阶段(Local Computation),是各个计算节点(Processors)进行完全依赖本节点内的数据的计算的过程。之后在第二个阶段(Communication),各个节点进行相互通信,进行需要和其它节点协同的计算。在所有的这些通信结束之后,节点进入了Sync状态,也就是第三个阶段,进行待机,等待所有的通信和计算行为完成。

 

    当所有节点均进入了第三个阶段待机并完成通信后,这个超步便完成了。

 

    我们以蒙特卡洛法计算PI为例,这个例子非常简单,可以在一个超步内完成。具体的计算过程为:

 

1、 设置一个节点为Master,用来判断超步的完成以及进行数据汇总。其它节点设置为Slave,进行PI值的计算。

2、 在每一个Slave中进行本地计算,用产生10万个随机数,判断其在半径1的圆内的次数(sqrt(x*x + y*y) < 1)N,最终得到(N / 100000) * 4这个Pi值。

3、 进入通信阶段,Slave将计算出的Pi值发送给Master。

4、 Slave进入Sync状态。

5、 Master判断所有Slave均进入Sync状态,并且发送信息已经全部完成后,进行所有Slave发送的Pi值的求平均操作,得到最终的PI值并结束本次超步。

6、 计算结束。

 

    我们可以看到,BSP模型中,计算步骤是非常清晰明确的,并且比MapReduce更加自由。而且,在实际的实现上,节点间的通信会被归并,在一定条件下才会真正的发出,避免了由于节点之间通信过于频繁而导致的网络风暴的产生。另外由于超步的存在,使得BSP的计算复杂性是可预测的,极大程度的减小了风险和调试的复杂性。

 

    在这几节中,我们了解了MapReduce模型、Hadoop、Hive的基本原理,最后又介绍了BSP这种近年来逐渐受到重视的分布式计算模型。从下一节开始,我们将介绍,如何利用离线OLAP系统,来进行源头数据的清洗和处理。


--

微信名称:阿里技术嘉年华

微信号:alibabatech

简介:传播原创高质量的技术内容

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值