BSP和MapReduce有什么区别?

本文对比了MapReduce和BSP两种大数据处理模型。MapReduce适合大规模非实时处理,通过作业间的磁盘数据交换进行迭代;而BSP模型在实时处理上更优,仅需一个作业即可完成多次迭代,通过消息传递中间结果,提高效率。数据分割方面,MapReduce的Shuffle过程增加开销,BSP则在初期进行一次数据分布。
摘要由CSDN通过智能技术生成

写在前面

本文隶属于专栏《100个问题搞定大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和文献引用请见100个问题搞定大数据理论体系

解答

1. 执行机制: 
    Mapreduce是一个数据流模型,每个任务只对输入数据进行处理,产生的输出数据作为另一个任务的输入数据,并行任务之间独立地进行,串行任务之间以磁盘和数据复制作为交换介质和接口。
    而BSP是一个状态模型,各个子任务在本地的子图数据上执行计算、通信、修改图的状态等操作,并行任务之间通过消息通信交流中间计算结果,不需要像MapReduce那样对全体数据进行复制。
2. 迭代处理: 
    MapReduce模型理论上需要连续启动若干作业才能完成图的迭代处理,相邻作业之间通过分布式文件系统交换全部数据。
    而BSP模型仅启动一个作业,利用多个超步就可以完成迭代处理,两次迭代之间通过消息传递中间计算结果。由于减少了作业启动、调度开销和磁盘存取开销, BSP模型的迭代执行效率较高。
3. 数据分割:
    基于BSP的图处理模型,需要对加载后的图数据进行一次再分布的过程,以确定消息通信时的路由地址。
    例如,在各任务并行加载数据的过程中,根据一定的映射策略,将读人的数据重新分发到对应的计算任务上(通常存放在内存中),既有磁盘IO又有网络通信,开销很大。
    但是一个BSP作业仅需一次数据分割,在之后的迭代计算过程中,除了消息通信外,无须进行数据的迁移。
    
    而基于MapReduce的图处理模型,一般情况下,不需要专门的数据分割处理。但是Map阶段和Reduce阶段存在中间结果的Shuffle过程,增加了磁盘IO和网络通信开销。
    
4. MapReduce的设计初衷是解决大规模、非实时数据处理问题。“大规模”决定了数据有局部性特性可利用,从而可以划分、可以批处理;“非实时”代表响应时间较长,有充分的时间执行程序。
   而BSP模型在实时处理方面有优异的表现。
   这是二者最大的区別。

在这里插入图片描述

补充

BSP

详情请见我的另一篇博客——行计算模型有哪些?

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值