Presentation is loading. Please wait.

Presentation is loading. Please wait.

电子工业出版社《云计算(第二版)》配套课件

Similar presentations


Presentation on theme: "电子工业出版社《云计算(第二版)》配套课件"— Presentation transcript:

1 电子工业出版社《云计算(第二版)》配套课件
第2章 Google云计算原理与应用 《云计算(第二版)》购买网址: 当当网: 京东商城: 解放军理工大学 刘鹏 教授主编 华东交通大学 刘鹏 制作

2 《云计算(第二版)》购买网址: 当当网 京东商城 姊妹力作《实战Hadoop》购买网址: 当当网 京东商城 《云计算(第二版)》购买网址:
当当网 京东商城 《云计算(第二版)》购买网址: 当当网: 京东商城: 姊妹力作《实战Hadoop》购买网址: 当当网 京东商城

3 提 纲  Google文件系统GFS  分布式数据处理MapReduce  分布式锁服务Chubby
提 纲  Google文件系统GFS  分布式数据处理MapReduce  分布式锁服务Chubby  分布式结构化数据表Bigtable  分布式存储系统Megastore  大规模分布式系统的监控基础架构Dapper  Google应用程序引擎

4 Google文件系统GFS  系统架构  容错机制  系统管理技术

5 秘密武器:云计算平台! Google业务 全球最大搜索引擎、Google Maps、Google Earth、Gmail、YouTube等
数据量巨大,且面向全球用户提供实时服务 秘密武器:云计算平台! Google云计算平台技术架构 文件存储,Google Distributed File System,GFS 并行数据处理MapReduce 分布式锁Chubby 分布式结构化数据表BigTable 分布式存储系统Megastore 分布式监控系统Dapper

6 是否可以在一堆廉价且不可靠的硬件上构建可靠的分布式文件系统?
GFS设计动机 Google需要一个支持海量存储的文件系统 购置昂贵的分布式文件系统与硬件? 是否可以在一堆廉价且不可靠的硬件上构建可靠的分布式文件系统? 为什么不使用当时现存的文件系统? Google所面临的问题与众不同 不同的工作负载,不同的设计优先级(廉价、不可靠的硬件) 需要设计与Google应用和负载相符的文件系统

7 GFS将容错的任务交给文件系统完成,利用软件的方法解决系统可靠性问题,使存储的成本成倍下降。GFS将服务器故障视为正常现象,并采用多种方法,从多个角度,使用不同的容错措施,确保数据存储的安全、保证提供不间断的数据存储服务 GFS架构是怎样的?

8 系统架构 Client(客户端):应用程序的访问接口
Master(主服务器):管理节点,在逻辑上只有一个,保存系统的元数据,负责整个文件系统的管理 Chunk Server(数据块服务器):负责具体的存储工作。数据以文件的形式存储在Chunk Server上

9 客户端首先访问Master节点,获取交互的Chunk Server信息,然后访问这些Chunk Server,完成数据存取工作。这种设计方法实现了控制流和数据流的分离。
Client与Master之间只有控制流,而无数据流,极大地降低了Master的负载。 Client与Chunk Server之间直接传输数据流,同时由于文件被分成多个Chunk进行分布式存储,Client可以同时访问多个Chunk Server,从而使得整个系统的I/O高度并行,系统整体性能得到提高。 实现机制 GFS特点有哪些?

10 GFS特点 采用中心服务器模式 不缓存数据 在用户态下实现 只提供专用接口 可以方便地增加Chunk Server
 Master掌握系统内所有Chunk Server的情况,方便进行负载均衡 不存在元数据的一致性问题 不缓存数据 文件操作大部分是流式读写,不存在大量重复读写,使用Cache对性能提高不大  Chunk Server上数据存取使用本地文件系统,若读取频繁,系统具有Cache 从可行性看,Cache与实际数据的一致性维护也极其复杂 在用户态下实现 利用POSIX编程接口存取数据降低了实现难度,提高通用性 POSIX接口提供功能更丰富 用户态下有多种调试工具 Master和Chunk Server都以进程方式运行,单个进程不影响整个操作系统 GFS和操作系统运行在不同的空间,两者耦合性降低 只提供专用接口 降低实现的难度 对应用提供一些特殊支持 降低复杂度

11 Google文件系统GFS  系统架构  容错机制  系统管理技术

12 Chunk副本的位置信息(默认有三个副本)
Master容错 Name Space,文件系统目录结构 Master Chunk与文件名的映射 Chunk副本的位置信息(默认有三个副本)

13 单个Master,对于前两种元数据,GFS通过操作日志来提供容错功能
第三种元数据信息保存在各个Chunk Server上,Master故障时,磁盘恢复 GFS还提供了Master远程的实时备份,防止Master彻底死机的情况 Name Space,文件系统目录结构 Master Chunk与文件名的映射 Chunk副本的位置信息

14 Chunk Server容错 采用副本方式实现Chunk Server容错
 每一个Chunk有多个存储副本(默认为三个),分布存储在不同的Chunk Server上用户态的GFS不会影响Chunk Server的稳定性  副本的分布策略需要考虑多种因素,如网络的拓扑、机架的分布、磁盘的利用率等  对于每一个Chunk,必须将所有的副本全部写入成功,才视为成功写入

15 尽管一份数据需要存储三份,好像磁盘空间的利用率不高,但综合比较多种因素,加之磁盘的成本不断下降,采用副本无疑是最简单、最可靠、最有效,而且实现的难度也最小的一种方法。
Simple, and good enough!

16  GFS中的每一个文件被划分成多个Chunk,Chunk的默认大小是64MB
Chunk Server存储的是Chunk的副本,副本以文件的形式进行存储 每个Chunk又划分为若干Block(64KB),每个Block对应一个32bit的校验码,保证数据正确(若某个Block错误,则转移至其他Chunk副本)

17 Google文件系统GFS  系统架构  容错机制  系统管理技术

18 GFS构建在不可靠廉价计算机之上的文件系统,由于节点数目众多,故障发生十分频繁
大规模集 群安装技术 故障检测技术 系统管理技术 Google采用了多种机制降低服务器能耗,如采用蓄电池代替昂贵的UPS 新的Chunk Server加入时 ,只需裸机加入,大大减少GFS维护工作量 节点动态加入技术 节能技术

19 小结 简单的,就是最好的!

20 讨论 GFS有什么问题吗?

21 分布式数据处理MapReduce 产生背景 编程模型 实现机制 案例分析

22 一种处理海量数据的并行编程模式,用于大规模数据集(通常大于1TB)的并行运算。
MapReduce 一种处理海量数据的并行编程模式,用于大规模数据集(通常大于1TB)的并行运算。 “Map(映射)”、“Reduce(化简)”的概念和主要思想,都是从函数式编程语言和矢量编程语言借鉴 适合非结构化和结构化的海量数据的搜索、挖掘、分析与机器智能学习等

23 Google拥有海量数据,并且需要快速处理
全球Web数据 邮件数据 地图数据 卫星照片 ……

24 简单的问题,计算并不简单! 待处理数据量巨大(PB级),只有分布在成百上千个节点上并行计算才能在可接受的时间内完成
计算问题简单,但求解困难 待处理数据量巨大(PB级),只有分布在成百上千个节点上并行计算才能在可接受的时间内完成 如何进行并行分布式计算? 如何分发待处理数据? 如何处理分布式计算中的错误? 简单的问题,计算并不简单!

25 Jeffery Dean设计一个新的抽象模型, 封装并行处理、容错处理、本地化计算、负载均衡的细节,还提供了一个简单而强大的接口
这就是MapReduce Google MapReduce 架构设计师 Jeffrey Dean

26 分布式数据处理MapReduce 产生背景 编程模型 实现机制 案例分析

27 MapReduce运行模型 Map函数——对一部分原始数据进行指定的操作。每个Map操作都针对不同的原始数据,因此Map与Map之间是互相独立的,这使得它们可以充分并行化 Reduce操作——对每个Map所产生的一部分中间结果进行合并操作,每个Reduce所处理的Map中间结果是互不交叉的,所有Reduce产生的最终结果经过简单连接就形成了完整的结果集

28 Map输入参数:in_key和in_value,它指明了Map需要处理的原始数据
开发者需编写 两个主要函数 Map: (in_key, in_value)  {(keyj, valuej) | j = 1…k} Reduce: (key, [value1,…,valuem])  (key, final_value) Map输入参数:in_key和in_value,它指明了Map需要处理的原始数据 Map输出结果:一组<key,value>对,这是经过Map操作后所产生的中间结果

29 Reduce输入参数:(key, [value1,…,valuem]) Reduce工作:对这些对应相同key的value值进行归并处理
开发者需编写 两个主要函数 Map: (in_key, in_value)  {(keyj, valuej) | j = 1…k} Reduce: (key, [value1,…,valuem])  (key, final_value) Reduce输入参数:(key, [value1,…,valuem]) Reduce工作:对这些对应相同key的value值进行归并处理 Reduce输出结果:(key, final_value),所有Reduce的结果并在一起就是最终结果

30 怎么用MapReduce计算一个大型文本文件中各单词出现次数?
Map的输入参数指明了需要处理哪部分数据,以“<在文本中的起始位置,需要处理的数据长度>”表示,经过Map处理,形成一批中间结果“<单词,出现次数>”。而Reduce函数处理中间结果,将相同单词出现的次数进行累加,得到每个单词总的出现次数

31 分布式数据处理MapReduce 产生背景 编程模型 实现机制 案例分析

32 MapReduce操作执行流程图

33 操作过程 (1)输入文件分成M块,每块大概16M~64MB(可以通过参数决定),接着在集群的机器上执行分派处理程序
(2)M个Map任务和R个Reduce任务需要分派,Master选择空闲Worker来分配这些Map或Reduce任务 (3)Worker读取并处理相关输入块,Map函数产生的中间结果<key,value>对暂时缓冲到内存 (4)中间结果定时写到本地硬盘,分区函数将其分成R个区。中间结果在本地硬盘的位置信息将被发送回Master,然后Master负责把这些位置信息传送给Reduce Worker

34 操作过程 (5)当Master通知执行Reduce的Worker关于中间<key,value>对的位置时,它调用远程过程,从Map Worker的本地硬盘上读取缓冲的中间数据。当Reduce Worker读到所有的中间数据,它就使用中间key进行排序,这样可使相同key的值都在一起 (6)Reduce Worker根据每一个唯一中间key来遍历所有的排序后的中间数据,并且把key和相关的中间结果值集合传递给用户定义的Reduce函数。Reduce函数的结果写到一个最终的输出文件 (7)当所有的Map任务和Reduce任务都完成的时候,Master激活用户程序。此时MapReduce返回用户程序的调用点

35 MapReduce容错 MapReduce容错
Master会周期性地设置检查点(checkpoint),并导出Master的数据。一旦某个任务失效,系统就从最近的一个检查点恢复并重新执行 Master周期性地给Worker发送ping命令,若没有应答,则认为Worker失效,终止其任务调度,把该任务调度到其他Worker上重新执行

36 分布式数据处理MapReduce 产生背景 编程模型 实现机制 案例分析

37 假设有一批海量的数据,每个数据都是由26个字母组成的字符串,原始的数据集合是完全无序的,怎样通过MapReduce完成排序工作,使其有序(字典序)呢?
排序通常用于衡量分布式数据处理框架的数据处理能力

38 对原始的数据进行分割(Split),得到N个不同的数据分块

39 每一个数据分块都启动一个Map进行处理。采用桶排序的方法,每个Map中按照首字母将字符串分配到26个不同的桶中

40 按照首字母将Map中不同桶中的字符串集合放置到相应的Reduce中进行处理。具体来说就是首字母为a的字符串全部放在Reduce1中处理,首字母为b的字符串全部放在Reduce2,以此类推

41 谢 谢!


Download ppt "电子工业出版社《云计算(第二版)》配套课件"

Similar presentations


Ads by Google