【分布式系统遨游】分布式计算

引言

随着计算技术的发展,有些应用需要非常巨大的计算能力才能完成,如果采用集中式计算,需要耗费相当长的时间来完成。怎么解决这个问题呢?当然是把这些问题分成多份,在不同的机器上去解决,众人拾柴火焰高嘛。而分布式计算就是将该应用分解成许多小的部分,分配给多台计算机进行处理。这样可以节约整体计算时间,大大提高计算效率。在分布式中,针对这种情况我们大概有两种计算模式:MapReduce和Stream,接下来就让我们来看看它们是何方神圣。注意:本文讲述的两种计算模式是以特定数据类型(分别对应静态数据和动态数据)作为计算维度。而在分布式领域中还有另外两种分布式计算模式,即 Actor 和流水线。它们是以计算过程或处理过程的维度的,不做本文讲述的重点。

Map Reduce

相信大家都有听说过Hadoop这个框架,这个框架主要用来解决海量数据的计算问题。那么它是如何做到海量数据的计算呢?你可能会想,既然是海量数据,有这么大的规模,那就让多个进程去处理,最后去汇总一下结果,这样就可以加大马力,提升速度了。
没错,就是这种想法,在分布式领域中我们称这种叫作MR(Map Reduce)模式。我们上边分成多个进程处理的想法可以归结成一个词–分而治之,是的,MR就是一个典型的分而治之(简称分治法)的代表。

分治法是什么

分治法就是将一个复杂的、难以直接解决的大问题,分割成一些规模较小的、可以比较简单的或直接求解的子问题,这些子问题之间相互独立且与原问题形式相同,递归地求解这些子问题,然后将子问题的解合并得到原问题的解。比如我们统计全国人口数量。

分治法的使用场景

  1. 问题规模比较大或复杂,且问题可以分解为几个规模较小的、简单的同类型问题进行求解;
  2. 子问题之间相互独立,不包含公共子问题;
  3. 子问题的解可以合并得到原问题的解。

分治法解决问题的步骤

  1. 分解原问题。将原问题分解为若干个规模较小,相互独立,且与原问题形式相同的子问题。
  2. 求解子问题。若子问题规模较小且容易被解决则直接求解,否则递归地求解各个子问题。
  3. 合并解,就是将各个子问题的解合并为原问题的解。

MR的抽象模型

了解了分治法之后,我们再来看看本段的主角MR,如下图所示,MapReduce 分为 Map 和 Reduce 两个核心阶段,其中 Map 对应“分”, 即把复杂的任务分解为若干个“简单的任务”执行&#

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值