分布式,集群,并行,串行

来源:互联网 发布:全国省市区小区数据库 编辑:程序博客网 时间:2024/05/21 11:28

分布式与集群

小饭店原来只有一个厨师,切菜洗菜备料炒菜全干。后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,这两个厨师的关系是集群。为了让厨师专心炒菜,把菜做到极致,又请了个配菜师负责切菜,备菜,备料,厨师和配菜师的关系是分布式,一个配菜师也忙不过来了,又请了个配菜师,两个配菜师关系是集群

作者:张鹏飞
链接:https://www.zhihu.com/question/20004877/answer/112124929
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

一个配菜师因故请假了,但是其余的配菜师还是该啥就干啥,可能没请假的配菜师任务会被均匀的加量了,但是他们的任务和职责是不变的。

相对于MapReduce来讲,它是一个分布式计算框架,体现在 Map与Reduce是分开, 先做Map,在做Reduce。

并行与串行:

并行计算:并行计算是相对于串行计算来说的。可分为时间上的并行和空间上的并行。 时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。并行计算的目的就是提供单处理器无法提供的性能(处理器能力或存储器),使用多处理器求解单个问题。
总结:并行的主体 – 处理器;进程/线程级并行。

对于并行计算与串行计算:举一个例子来说明
{
1+1=
2+2=
3+3=
4+4=
}
请王小明同学来计算4道题目。
小明每次算一道题花费1s,总共耗时4s。
请第二组的韩梅梅,李雷来计算4道题目。
小两口相视一笑花费0.1s
然后每个人做两道题,花费2s
总共花费2.1s

并行计算 是多个串行计算在时间上的并行,可以理解为多个处理器(CPU,GPU)同时工作与单个处理器工作的对比, 可以看到,因为需要相互协作通信(相视一笑),协作通信可以通过MPI来进行,所以不可能效率翻倍。

并行执行的程序实际上没这么简单。在工作的切割、结合上,也是要多花时间的,所以在现实中,即使最佳状况,双核心的效能也不会是 1 + 1 = 2 这样的理想化。除此之外,也不是所有工作都是可以切割的!很多工作是有关联性的,这样如果直接切割给不同的处理核心各自去平行运算,出来的结果是肯定有问题的。而且,多执行绪的程式在编写、维护上,也都比单一执行绪的程式复杂上不少。
MPI是一种基于信息传递的并行编程技术。消息传递接口是一种编程接口标准,而不是一种具体的编程语言。简而言之,MPI标准定义了一组具有可移植性的编程接口。

关于并行与串行的例子可以参考下面这篇文章:
串行&并行程序在效率上的简单比较