资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第,7,章,Google,云计算原理与应用,第7章 Google云计算原理与应用,提,纲,?,Google,文件系统,GFS,?,分布式数据处理,MapReduce,?,分布式锁服务,Chubby,?,分布式结构化数据表,Bigtable,?,分布式存储系统,Megastore,?,大规模分布式系统的监控基础架构,Dapper,?,Google,应用程序引擎,提 纲?Google文件系统GFS?分布式数据处,Google,文件系统,GFS,?,系统架构,?,容错机制,?,系统管理技术,Google文件系统GFS?系统架构?容错机制,Google,业务,?,全球最大搜索引擎、,Google Maps,、,Google Earth,、,Gmail,、,YouTube,等,数据量巨大,且面,向全球用户提供实时,服务,Google,云计算平台技术架构,?,文件存储,,Google Distributed File System,,,GFS,?,并行数据处理,MapReduce,?,分布式锁,Chubby,?,分布式结构化数据表,BigTable,?,分布式存储系统,Megastore,?,分布式监控系统,Dapper,秘密武器:云计算平台!,Google业务?全球最大搜索引擎、Google Maps,GFS,设计动机,?,Google,需要一个支持海量存储的文件系统,?,购置昂贵的分布式文件系统与硬件?,?,为什么不使用当时现存的文件系统?,?,Google,所面临的问题与众不同,?,不同的工作负载,不同的设计优先级(廉价、不可靠的硬件),?,需要设计与,Google,应用和负载相符的文件系统,是否可以在一堆廉价且不可靠的硬件上构建,可靠的分布式文件系统?,GFS设计动机?Google需要一个支持海量存储的文件系,GFS,将容错的任务交给文件系统完成,利用软件的方法解决系,统可靠性问题,使存储的成本成倍下降。,GFS,将服务器故障视,为正常现象,并采用多种方法,从多个角度,使用不同的容错,措施,确保数据存储的安全、保证提供不间断的数据存储服务,GFS,架构是怎样的?,GFS将容错的任务交给文件系统完成,利用软件的方法解决系统可,系统架构,Client,(客户端),:应用程序的,访问接口,Master,(主服务器),:,管理节点,,在逻辑上只有一个,保存系统的元数据,负,责整个文件系统的管理,Chunk Server,(数据块服务器),:负责具体的,存储,工作。数据以文件的形式存,储在,Chunk Server,上,系统架构 Client(客户端):应用程序的访问接口 Ma,实,现,机,制,?,客户端首先访问,Master,节点,获取交互的,Chunk Server,信息,然后访,问这些,Chunk Server,,完成数据存取工作。这种设计方法实现了控制流,和数据流的分离。,?,Client,与,Master,之间只有控制流,而无数据流,极大地降低了,Master,的负载。,?,Client,与,Chunk Server,之间直接传输数据流,同时由于文件被分成多,个,Chunk,进行分布式存储,,Client,可以同时访问多个,Chunk Server,,从而,使得整个系统的,I/O,高度并行,系统整体性能得到提高。,GFS,特点有哪些?,实现机制?客户端首先访问Master节点,获取交互的Chu,GFS,特点,采用中心服务器模式,?,可以方便地增加,Chunk Server,?,Master,掌握系统内所有,Chunk Server,的情况,方便进行负载均衡,?,不存在元数据的一致性问题,不缓存数据,?,文件操作大部分是流式读写,不存在大量重复读写,使用,Cache,对性能提高不大,?,Chunk Server,上数据存取使用本地文件系统,若读取频繁,系统具有,Cache,?,从可行性看,,Cache,与实际数据的一致性维护也极其复杂,在用户态下实现,?,利用,POSIX,编程接口存取数据降低了实现难度,提高通用性,?,POSIX,接口提供功能更丰富,?,用户态下有多种调试工具,?,Master,和,Chunk Server,都以进程方式运行,单个进程不影响整个操作系统,?,GFS,和操作系统运行在不同的空间,两者耦合性降低,只提供专用接口,?,降低实现的难度,?,对应用提供一些特殊支持,?,降低复杂度,GFS特点 采用中心服务器模式?可以方便地增加Chunk,Google,文件系统,GFS,?,系统架构,?,容错机制,?,系统管理技术,Google文件系统GFS?系统架构?容错机制,Master,容错,Master,Name Space,,文件系统目录结构,Chunk,与文件名的映射,Chunk,副本的位置信息,(,默认有三个副本,),Master容错 Master Name Space,文件,Name Space,,文件系统目录结构,Chunk,与文件名的映射,Chunk,副本的位置信息,Master,单个,Master,,对于前两种元数据,,GFS,通过操作日志来提供容错功能,第三种元数据信息保存在各个,Chunk Server,上,,Master,故障时,,磁盘恢复,GFS,还提供了,Master,远程的实时备份,防,止,Master,彻底死机的情况,Name Space,文件系统目录结构 Chunk与文件名,Chunk Server,容错,?,采用副本方式实现,Chunk Server,容错,?,每一个,Chunk,有多个存储副本(默认为三个),分布存,储在不同的,Chunk Server,上用户态的,GFS,不会影响,Chunk,Server,的稳定性,?,副本的分布策略需要考虑多种因素,如网络的拓扑、机,架的分布、磁盘的利用率等,?,对于每一个,Chunk,,必须将所有的副本全部写入成功,,才视为成功写入,Chunk Server容错?采用副本方式实现Chunk,尽管一份数据需要存储三份,好像磁盘空间的利用率不高,,但综合比较多种因素,加之磁盘的成本不断下降,采用副,本无疑是最简单、最可靠、最有效,而且实现的难度也最,小的一种方法。,Simple,and good enough!,尽管一份数据需要存储三份,好像磁盘空间的利用率不高,但综合比,?,GFS,中的每一个文件被划分成多个,Chunk,,,Chunk,的默认,大小是,64MB,?,Chunk Server,存储的是,Chunk,的副本,副本以文件的形,式进行存储,?,每个,Chunk,又划分为若干,Block,(,64KB,),每个,Block,对,应一个,32bit,的校验码,保证数据正确(若某个,Block,错,误,则转移至其他,Chunk,副本),?GFS中的每一个文件被划分成多个Chunk,Chunk,Google,文件系统,GFS,?,系统架构,?,容错机制,?,系统管理技术,Google文件系统GFS?系统架构?容错机制,大规模集群,安装技术,故障检测技术,节点动态加,入技术,节能技术,新的,Chunk Server,加入时,,只需裸,机加入,大大减少,GFS,维护工作量,GFS,构建在不可靠廉,价计算机之上的文件,系统,由于节点数目,众多,故障发生十分,频繁,Google,采用了多种,机制降低服务器能,耗,如采用蓄电池,代替昂贵的,UPS,系统管理,技术,GFS,集群中通常,有非常多的节,点,需要相应,的技术支撑,大规模集群安装技术 故障检测技术 节点动态加入技术 节,小结,简单的,就是最好的!,小结 简单的,就是最好的!,讨论,GFS,有什么问题吗?,讨论 GFS有什么问题吗?,分布式数据处理,MapReduce,?,产生背景,?,编程模型,?,实现机制,?,案例分析,分布式数据处理MapReduce?产生背景?编程模型,MapReduce,?,一种处理海量数据的并行编程模式,用于大规模数据集,(通常大于,1TB,)的并行运算。,?,“,Map,(映射)”、“,Reduce,(化简)”的概念和主要,思想,都是从函数式编程语言和矢量编程语言借鉴,适合非结构化和结构化的,海量数据的搜索、挖掘、,分析与机器智能学习等,MapReduce?一种处理海量数据的并行编程模式,用于,?,Google,拥有海量数据,并且需要快速处理,?Google拥有海量数据,并且需要快速处理,?,计算问题简单,但求解困难,?,待处理数据量巨大(,PB,级),只有分布在成百上千个,节点上并行计算才能在可接受的时间内完成,?,如何进行并行分布式计算?,?,如何分发待处理数据?,?,如何处理分布式计算中的错误?,简单的问题,计算并不简单!,?计算问题简单,但求解困难?待处理数据量巨大(PB,Jeffery Dean,设计一个新的抽象模,型,,封装并行处理、容错处理、本,地化计算、负载均衡的细节,还提,供了一个简单而强大的接口,这就是,MapReduce,Google MapReduce,架构设计师,Jeffrey Dean,Jeffery Dean设计一个新的抽象模型,封装并行处理,分布式数据处理,MapReduce,?,产生背景,?,编程模型,?,实现机制,?,案例分析,分布式数据处理MapReduce?产生背景?编程模型,Map,Reduce,Map,Map,原始数据,1,原始数据,2,原始数据,M,结果,1,结果,R,Reduce,MapReduce,运行模型,Map,函数,对一部分原始数,据进行指定的操作。每个,Map,操作都针对不同的原始数据,,因此,Map,与,Map,之间是互相独,立的,这使得它们可以充分并,行化,Reduce,操作,对每个,Map,所产生的一部分中间结果进行,合并操作,每个,Reduce,所处理,的,Map,中间结果是互不交叉的,,所有,Reduce,产生的最终结果经,过简单连接就形成了完整的结,果集,Map Reduce Map Map 原始数据1,Map:(in_key,in_value),?,(key,j,valuej)|,j,=1,k,Reduce:(key,value1,value,m,),?,(key,final_value),开发者需编写,两个主要函数,Map,输入参数,:,in_key,和,in_value,,它指明了,Map,需要,处理的原始数据,Map,输出结果,:一组,对,这是经过,Map,操作,后所产生的中间结果,Map:(in_key,in_value)?(ke,Map:(in_key,in_value),?,(key,j,valuej)|,j,=1,k,Reduce:(key,value1,value,m,),?,(key,final_value),开发者需编写,两个主要函数,Reduce,输入参数,:(,key,value1,value,m,),Reduce,工作,:对这些对应相同,key,的,value,值进行归并处理,Reduce,输出结果,:(,key,final_value,),所有,Reduce,的,结果并在一起就是最终结果,Map:(in_key,in_value)?(ke,Map,的输入参数指明了需要处理哪部分数据,以“,”表示,经过,Map,处理,形成,一批中间结果“,”。而,Reduce,函数处理中间,结果,将相同单词出现的次数进行累加,得到每个单词总的出,现次数,怎么用,MapReduce,计算一个大型文本文件中各,单词出现次数?,Map的输入参数指明了需要处理哪部分数据,以“在文本中的起,分布式数据处理,MapReduce,?,产生背景,?,编程模型,?,实现机制,?,案例分析,分布式数据处理MapReduce?产生背景?编程模型,MapReduce,操作执行流程图,MapReduce操作执行流程图,
展开阅读全文