云计算课件:4-1 Google云计算原理_第1页
云计算课件:4-1 Google云计算原理_第2页
云计算课件:4-1 Google云计算原理_第3页
云计算课件:4-1 Google云计算原理_第4页
云计算课件:4-1 Google云计算原理_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、全球最大搜索引擎、Google Maps、Google Earth、Gmail、YouTube等。这些应用的共性在于数据量巨大,且要面向全球用户提供实时服务。2.1 Google文件系统GFS2.1.1 系统架构2.1.2 容错机制2.1.3 系统管理技术GFS的系统架构应用程序GFS客户端(文件名,Chunk索引)(Chunk句柄 Chunk位置)GFS主服务器文件命名空间/foo/barChunk2ef0向数据块服务器发出指令数据块服务器状态GFS数据块服务器Linux文件系统GFS数据块服务器Linux文件系统(Chunk句柄,字节范围)Chunk数据标注:数据信息控制信息32.1 Go

2、ogle文件系统GFSGFS将整个系统节点分为三类角色Client(客户端)Master(主服务器)Chunk Server(数据块服务器)Client是GFS提供给应用程序的访问接口,以库文件的形式提供Master是GFS的管理节点,负责整个文件系统的管理Chunk Server负责具体的存储工作系统节点GFS42.1 Google文件系统GFSGFS的实现机制客户端首先访问Master节点,获取交互的Chunk Server信息,然后访问这些Chunk Server,完成数据存取工作。这种设计方法实现了控制流和数据流的分离。Client与Master之间只有控制流,而无数据流,极大地降低了

3、Master的负载。Client与Chunk Server之间直接传输数据流,同时由于文件被分成多个Chunk进行分布式存储,Client可以同时访问多个Chunk Server,从而使得整个系统的I/O高度并行,系统整体性能得到提高。 52.1 Google文件系统GFSGFS的特点1采用中心服务器模式可以方便地增加Chunk ServerMaster掌握系统内所有Chunk Server的情况,方便进行负载均衡不存在元数据的一致性问题62.1 Google文件系统GFSGFS的特点2不缓存数据 文件操作大部分是流式读写,不存在大量重复读写,使用Cache对性能提高不大Chunk Serve

4、r上数据存取使用本地文件系统从可行性看,Cache与实际数据的一致性维护也极其复杂72.1 Google文件系统GFSGFS的特点3在用户态下实现利用POSIX编程接口存取数据降低了实现难度,提高通用性 POSIX接口提供功能更丰富 用户态下有多种调试工具 Master和Chunk Server都以进程方式运行,单个进程不影响整个操作系统 GFS和操作系统运行在不同的空间,两者耦合性降低 82.1 Google文件系统GFS2.1 Google文件系统GFS2.1.1 系统架构2.1.2 容错机制2.1.3 系统管理技术Master容错为了防止Master彻底死机的情况,GFS还提供了Mast

5、er远程的实时备份Master命名空间(Name Space),也就是整个文件系统的目录结构。Chunk与文件名的映射表。Chunk副本的位置信息,每一个Chunk默认有三个副本。日志直接保存在各个Chunk Server上当Master发生故障时,在磁盘数据保存完好的情况下,可以迅速恢复以上元数据102.1 Google文件系统GFSChunk Server容错GFS采用副本的方式实现Chunk Server的容错每一个Chunk有多个存储副本(默认为三个)对于每一个Chunk,必须将所有的副本全部写入成功,才视为成功写入相关的副本出现丢失或不可恢复等情况,Master自动将该副本复制到其他

6、Chunk ServerGFS中的每一个文件被划分成多个Chunk,Chunk的默认大小是64MB每一个Chunk以Block为单位进行划分,大小为64KB,每一个Block对应一个32bit的校验和112.1 Google文件系统GFS2.1 Google文件系统GFS2.1.1 系统架构2.1.2 容错机制2.1.3 系统管理技术系统管理技术系统管理技术大规模集群安装技术故障检测技术 节点动态加入技术 节能技术 GFS集群中通常有非常多的节点,需要相应的技术支撑 GFS构建在不可靠廉价计算机之上的文件系统,由于节点数目众多,故障发生十分频繁 新的Chunk Server加入时 ,只需裸机加

7、入,大大减少GFS维护工作量 Google采用了多种机制降低服务器能耗,如采用蓄电池代替昂贵的UPS132.1 Google文件系统GFS2.2分布式数据处理MapReduce2.2.1 产生背景2.2.2 编程模型2.2.3 实现机制2.2.3 案例分析产生背景Google MapReduce架构设计师Jeffrey DeanJeffery Dean设计一个新的抽象模型, 封装并行处理、容错处理、本地化计算、负载均衡的细节,还提供了一个简单而强大的接口。这就是MapReduce152.2 分布式数据处理MapReduceMapReduce这种并行编程模式思想最早是在1995年提出的。与传统的

8、分布式程序设计相比,MapReduce封装了并行处理、容错处理、本地化计算、负载均衡等细节,还提供了一个简单而强大的接口。MapReduce把对数据集的大规模操作,分发给一个主节点管理下的各分节点共同完成,通过这种方式实现任务的可靠执行与容错机制。产生背景162.2 分布式数据处理MapReduce2.2分布式数据处理MapReduce2.2.1 产生背景2.2.2 编程模型2.2.3 实现机制2.2.3 案例分析编程模型MapMapMapReduceReduce原始数据 1原始数据 2原始数据 M结果 1结果 RMap函数对一部分原始数据进行指定的操作。每个Map操作都针对不同的原始数据,因

9、此Map与Map之间是互相独立的,这使得它们可以充分并行化。Reduce操作对每个Map所产生的一部分中间结果进行合并操作,每个Reduce所处理的Map中间结果是互不交叉的,所有Reduce产生的最终结果经过简单连接就形成了完整的结果集.182.2 分布式数据处理MapReduce编程模型Map: (in_key, in_value) (keyj, valuej) | j = 1kReduce: (key, value1,valuem) (key, final_value) Map输入参数:in_key和in_value,它指明了Map需要处理的原始数据 Map输出结果:一组对,这是经过Ma

10、p操作后所产生的中间结果 Reduce输入参数:(key,value1,valuem)Reduce工作:对这些对应相同key的value值进行归并处理Reduce输出结果:(key, final_value),所有Reduce的结果并在一起就是最终结果 192.2 分布式数据处理MapReduce2.2分布式数据处理MapReduce2.2.1 产生背景2.2.2 编程模型2.2.3 实现机制2.2.3 案例分析实现机制212.2 分布式数据处理MapReduce实现机制(1)MapReduce函数首先把输入文件分成M块(2)分派的执行程序中有一个主控程序Master(3)一个被分配了Map任

11、务的Worker读取并处理相关的输入块(4)这些缓冲到内存的中间结果将被定时写到本地硬盘,这些数据通过分区函数分成R个区(5)当Master通知执行Reduce的Worker关于中间对的位置时,它调用远程过程,从Map Worker的本地硬盘上读取缓冲的中间数据(6)Reduce Worker根据每一个唯一中间key来遍历所有的排序后的中间数据,并且把key和相关的中间结果值集合传递给用户定义的Reduce函数(7)当所有的Map任务和Reduce任务都完成的时候,Master激活用户程序222.2 分布式数据处理MapReduce容错机制由于MapReduce在成百上千台机器上处理海量数据,

12、所以容错机制是不可或缺的。总的来说,MapReduce通过重新执行失效的地方来实现容错。Master失效Worker失效Master会周期性地设置检查点(checkpoint),并导出Master的数据。一旦某个任务失效,系统就从最近的一个检查点恢复并重新执行。由于只有一个Master在运行,如果Master失效了,则只能终止整个MapReduce程序的运行并重新开始。Master会周期性地给Worker发送ping命令,如果没有Worker的应答,则Master认为Worker失效,终止对这个Worker的任务调度,把失效Worker的任务调度到其他Worker上重新执行。232.2 分布式

13、数据处理MapReduce优化机制任务备份机制:在临近结束的时候,启动多个进程来执行尚未完成的任务,提高执行效率 。本地处理跳过问题记录Master向GFS询问获得输入文件blocks副本的位置信息,按照blocks所在的机器或机器所在机架的范围 进行调度 。在每个worker里运行一个信号处理程序,捕获map或reduce任务崩溃时发出的信号,一旦捕获,就会向master报告,同时报告输入记录的编号信息。如果master看到一条记录有两次崩溃信息,那么就会对该记录进行标记,下次运行的时候,跳过该记录 。242.2 分布式数据处理MapReduce2.2分布式数据处理MapReduce2.2.

14、1 产生背景2.2.2 编程模型2.2.3 实现机制2.2.3 案例分析怎样通过MapReduce完成排序工作,使其有序(字典序)呢?第一个步骤对原始的数据进行分割(Split),得到N个不同的数据分块 。272.2 分布式数据处理MapReduce第二个步骤对每一个数据分块都启动一个Map进行处理。采用桶排序的方法,每个Map中按照首字母将字符串分配到26个不同的桶中。282.2 分布式数据处理MapReduce第三个步骤对于Map之后得到的中间结果,启动26个Reduce。按照首字母将Map中不同桶中的字符串集合放置到相应的Reduce中进行处理。292.2 分布式数据处理MapReduc

15、e2.3 分布式结构化数据表Bigtable2.3.1 设计动机与目标2.3.2 数据模型2.3.3 系统架构2.3.4 主服务器2.3.5 子表服务器2.3.6 性能优化312.3 分布式结构化数据表BigtableBigtable 的设计动机123需要存储的数据种类繁多海量的服务请求商用数据库 无法满足需求包括URL、网页内容、用户的个性化设置在内的数据都是Google需要经常处理的Google运行着目前世界上最繁忙的系统,它每时每刻处理的客户服务请求数量是普通的系统根本无法承受的一方面现有商用数据库的设计着眼点在于其通用性。另一方面对于底层系统的完全掌控会给后期的系统维护、升级带来极大的

16、便利322.3 分布式结构化数据表BigtableBigtable 应达到的基本目标广泛的适用性很强的可扩展性高可用性简单性Bigtable是为了满足一系列Google产品而并非特定产品的存储要求。根据需要随时可以加入或撤销服务器确保几乎所有的情况下系统都可用底层系统的简单性既可以减少系统出错的概率,也为上层应用的开发带来便利2.3 分布式结构化数据表Bigtable2.3.1 设计动机与目标2.3.2 数据模型2.3.3 系统架构2.3.4 主服务器2.3.5 子表服务器2.3.6 性能优化34Bigtable数据的存储格式2.3 分布式结构化数据表BigtableBigtable是一个分布

17、式多维映射表,表中的数据通过一个行关键字(Row Key)、一个列关键字(Column Key)以及一个时间戳(Time Stamp)进行索引Bigtable的存储逻辑可以表示为:(row:string, column:string, time:int64)string352.3 分布式结构化数据表Bigtable行列时间戳Bigtable的行关键字可以是任意的字符串,但是大小不能够超过64KB表中数据都是根据行关键字进行排序的,排序使用的是词典序同一地址域的网页会被存储在表中的连续位置倒排便于数据压缩,可以大幅提高压缩率将其组织成所谓的列族(Column Family)族名必须有意义,限定词

18、则可以任意选定组织的数据结构清晰明了,含义也很清楚族同时也是Bigtable中访问控制(Access Control)的基本单元Bigtable中的时间戳是64位整型数,具体的赋值方式可以用户自行定义Google的很多服务比如网页检索和用户的个性化设置等都需要保存不同时间的数据,这些不同的数据版本必须通过时间戳来区分。362.3 分布式结构化数据表Bigtable逻辑上的“表”被划分为若干子表(Tablet), 每个Tablet由多个SSTable文件组成,SSTable文件存储在GFS之上。每个子表存储了table的一部分行,如果子表体积超过了阈值,则进行分割。 Bigtable的物理视图2

19、.3 分布式结构化数据表Bigtable2.3.1 设计动机与目标2.3.2 数据模型2.3.3 系统架构2.3.4 主服务器2.3.5 子表服务器2.3.6 性能优化38Bigtable 基本架构2.3 分布式结构化数据表Bigtable392.3 分布式结构化数据表BigtableBigtable 中 Chubby 的主要作用作用一选取并保证同一时间内只有一个主服务器(Master Server)。获取子表的位置信息。保存Bigtable的模式信息(列族信息)及访问控制列表。作用二作用三2.3 分布式结构化数据表Bigtable2.3.1 设计动机与目标2.3.2 数据模型2.3.3 系统

20、架构2.3.4 主服务器2.3.5 子表服务器2.3.6 性能优化412.3 分布式结构化数据表Bigtable主服务器新子表分配子表服务器状态监控子服务器之间的负载均衡当一个新的子表产生时,主服务器通过一个加载命令将其分配给一个空间足够的子表服务器。创建新表、表合并以及较大子表的分裂都会产生一个或多个新子表。分割完成之后子表服务器需要向主服务发出一个通知。主服务器必须对子表服务器的状态进行监控,以便及时检测到服务器的加入或撤销422.3 分布式结构化数据表Bigtable子表服务器故障检测步骤一子表服务器启动,在chubby特定目录(服务器目录)下创建文件,获得专用锁 主服务器监视服务器目录

21、,发现子表服务器 主服务器定期轮询子表服务器的锁状态 步骤二步骤三子表服务器无应答或报告锁状态丢失,主服务器尝试回收锁 步骤四回收子表服务器的子表并归类到未分配子表 步骤五432.3 分布式结构化数据表Bigtable从Chubby中获取一个独占锁,确保同一时间只有一个主服务器主服务器启动过程扫描服务器目录,发现目前活跃的子表服务器与所有的活跃子表服务器取得联系以便了解所有子表的分配情况通过扫描元数据表(Metadata Table),发现未分配的子表并将其分配到合适的子表服务器步骤 1 步骤 3 步骤 2 步骤 42.3 分布式结构化数据表Bigtable2.3.1 设计动机与目标2.3.2

22、 数据模型2.3.3 系统架构2.3.4 主服务器2.3.5 子表服务器2.3.6 性能优化4564KB块64KB块SSTable索引SSTable 格式的基本示意2.3 分布式结构化数据表BigtableSSTable是Google为Bigtable设计的内部数据存储格式。所有的SSTable文件都存储在GFS上,用户可以通过键来查询相应的值。46子表实际组成日志64KB块64KB块SSTable索引64KB块64KB块SSTable索引2.3 分布式结构化数据表Bigtable不同子表的SSTable可以共享每个子表服务器上仅保存一个日志文件Bigtable规定将日志的内容按照键值进行排序

23、每个子表服务器上保存的子表数量可以从几十到上千不等,通常情况下是100个左右47Chubby文件根子表(元数据表中第一条记录)用户表1用户表N其他元数据子表子表地址组成2.3 分布式结构化数据表BigtableBigtable系统的内部采用的是一种类似B+树的三层查询体系482.3 分布式结构化数据表Bigtable子表地址查询缓存(Cache)子表地址缓存在客户端,寻址时首先在缓存信息中进行查找每次访问元数据表时读取多个子表的元数据预取(Prefetch)49Bigtable 数据存储及读/写操作2.3 分布式结构化数据表Bigtable较新的数据存储在内存中一个称为内存表(Memtable)的有序缓冲里,较早

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论