分布式系统的定义
分布式系统是指将多部各自拥有内存与时钟等硬件设备的独立的计算机系统以网络汇集起来,彼此之间仅仅通过网络消息传递进行通信和协调,共同对外提供服务,但对于系统的用户来说,就像是一台计算机在提供服务一样。
分布式系统的意义
性能提升:通过增加计算机的物理数量,提升性能,节约时间。
设计需求
性能要求:我们的设计要求可以利用物理设备的增多和软件的分布式设计来提升性能;
容错率:设备的增加提升了系统的故障率,我们在设计分布式系统时需要提升容错率
可恢复性:发生意外停止运行时,可以恢复到之前的状态。
ReduceMap
对于ReduceMap,我们除了看论文,更推荐B站的视频https://www.bilibili.com/video/BV1Vb411m7go/?from=search&seid=8676892438131853528&vd_source=a7534eac008cee78d1955099f89dc509。
ReduceMap是一种可以使程序员无需顾及分布式系统的复杂性进行开发和运行的框架。对于每个输入的文件,都有一个Map函数对它进行操作,输出是一个Key/Value的键值对的集合。之后我们收集Key值相同的键值对,将这些键值对作为参数放入Reduce函数。
文件输入进分布式系统后,会被分配进不同的计算节点上进行map函数,之后进行reudce的函数运算的计算节点会与其他节点进行通信,获得键值为A的键值对。
为避免网络通信时间,我们的GFS服务和运行ReduceMap的服务器通常被部署在同一台服务器上。
我们可以用ReduceMap论文中的架构图来看一下ReduceMap的实现过程:
将被分割好的文件作为输入,有Master节点作为将任务分配给worker节点,实现Map之后,再将键值对按照键值相等划到同一集合中,再分配给worker节点Reduce任务,最后将结果写入内存。