lecture1:Intro、MapReduce

lecture1先对分布式系统的设计进行了概述,然后介绍了MapReduce的案例

Intro

为什么要使用分布式系统?

1、追求高性能,通过分布式系统进行并行计算
2、使系统具有容错性,一台计算机计算错误,可以转移到另一台计算机
3、一些问题本身具有分布式的特性,需要多台计算机互相协作,比如转账
4、安全性考虑,将程序分几部分运行在不同的计算机上

分布式系统复杂的原因?

1、分布式系统由很多部分组成,各部分并发工作,交互复杂
2、局部失败问题
3、性能问题,性能不会随规模成比例提升

分布式系统的几个部分

1、存储系统
2、系统交互:计算机网络
3、计算系统:如MapReduce

分布式系统设计目标:

1、性能满足可伸缩性,即性能随机器规模的增长而提高,但单一提升某些服务的规模很容易遇到瓶颈(比如提高web服务器的数量使数据库性能成为瓶颈)
2、容错设计:大规模的分布式系统,会使单机上罕见的故障变成持续发生的问题(etc.比如机房网线被踩断…),因此必须将容错融入系统设计。容错设计包含以下几个方面:
(1)可用性(availability):在一定的故障下,应保证基本服务不受影响
(2)可恢复性:指修复故障后,并不会遭遇正确性的损失,最重要的方式是使用非易失性存储。两个例子(1)将数据保存在硬盘而不是内存中,代价是对性能造成影响,因此需要一些技术手段来对非易失性存储进行管理 。(2)复制技术,相对有点棘手,比如假设有两台服务器,每台服务器都有一个假定状态相同的副本,但是两个本来相同的副本很容易随着服务器的读写变得和对方不一样。
(3)一致性(consistency),假设构建一个Key-value服务的分布式存储系统,put(k,v)用来在服务器中存储键值对,客户端向服务器发送Get(k) , 服务器会返回value。问题在于在分布式系统中,服务器会存储多个副本。
强一致性:每次get操作都得到最近一个put的数据,服务器之间需要进行大量的通信,然而为了保证副本之间的独立性,副本通常存储在不同的服务器上,可能这些服务器间隔极其遥远,因此通信的成本高昂,等待的过程浪费机器的指令周期,因此强一致性的系统较少被采用 。
弱一致性:不一定返回最新的数据,比如返回最近put的几个版本 ,弱一致性系统是广泛采取的方案

MapReduce

MapReduce由Google在2004年的一篇论文中提出

背景

当时的整个web网络大概几十TB级的数据,Google需要对这些网页建立索引,索引的本质是一个排序,处理这些网页需要大量的计算力,Google希望建立某种框架,使不熟悉分布式系统的工程师能够专心在核心功能的实现,而不是把时间花在处理分布式系统的各种细节上,基于此,Google发布了MapReduce,工程师只需要实现Map和Reduce这两个函数,其余全部交给MapReduce框架。

过程

将抓取的网页存储在GFS(Google文件系统,会将数据分成64MB的块大小,均匀存储在不同的服务器上),将其作为MapReduce的输入,一般会有一台master服务器,负责将大量文件分配给众多worker服务器进行Map运算,worker从GFS读取master分配的文件进行Map计算,输出存储在worker的本地磁盘上,然后worker服务器之间互相通信,将相同的键值对发送给一台主机进行Reduce运算,运算的结果存储到由GFS分配的文件上。
(1)Map:假设有一堆输入(可能是web文件),被分成了不同的块,MapReduce会在不同的块上运行Map函数,按照键值进行排序,输出键值对,每个Map都是完全独立的
(2)Reduce:MapReduce框架将Map产生的所有键值对作为参数传递给Reduce进行计数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

MapReduce是分治法
来洋葱、拿洋葱、切洋葱、放洋葱、拼洋葱、送洋葱

在2004年论文提出的时候,受限制的主要是网络带宽,因此Google采用将 GFS和worker运行在同一台机器上的方式,使master优先让worker计算本地的数据,以降低网络延迟带来的影响。但Reduce依然需要网络传输,且输出十分巨大,这些内容也需要存储在GFS中,GFS为了容错每份数据都有几份副本,因此网络传输成为限制MapReduce吞吐量最严重的瓶颈。而现代数据中心因为往往有更多根服务器,做更多的数据交换,需要更高的网络吞吐量,因此MapReduce逐渐被弃用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值