云计算(典藏版)课件 第2章 Google云计算原理与应用_第1页
云计算(典藏版)课件 第2章 Google云计算原理与应用_第2页
云计算(典藏版)课件 第2章 Google云计算原理与应用_第3页
云计算(典藏版)课件 第2章 Google云计算原理与应用_第4页
云计算(典藏版)课件 第2章 Google云计算原理与应用_第5页
已阅读5页,还剩173页未读 继续免费阅读

下载本文档

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

文档简介

第二章Google云计算原理与应用of311高级人工智能人才培养丛书2.1Google文件系统GFS2.2分布式数据处理MapReduce2.3分布式锁服务Chubby2.4分布式结构化数据表Bigtable2.5分布式存储系统Megastore2.6

大规模分布式系统的监控基础架构Dapper2.7海量数据的交互式分析工具Dremel2.8内存大数据分析系统PowerDrill2.9Google应用程序引擎全球最大搜索引擎、GoogleMaps、GoogleEarth、Gmail、YouTube等。这些应用的共性在于数据量巨大,且要面向全球用户提供实时服务。2.1Google文件系统GFS2.1.1系统架构2.1.2容错机制2.1.3系统管理技术GFS的系统架构应用程序GFS客户端(文件名,Chunk索引)(Chunk句柄Chunk位置)GFS主服务器文件命名空间/foo/barChunk2ef0向数据块服务器发出指令数据块服务器状态GFS数据块服务器Linux文件系统GFS数据块服务器Linux文件系统……(Chunk句柄,字节范围)Chunk数据…标注:数据信息控制信息42.1Google文件系统GFS《云计算》第三版配套PPT课件GFS将整个系统节点分为三类角色Client(客户端)Master(主服务器)ChunkServer(数据块服务器)Client是GFS提供给应用程序的访问接口,以库文件的形式提供Master是GFS的管理节点,负责整个文件系统的管理ChunkServer负责具体的存储工作系统节点GFS52.1Google文件系统GFS《云计算》第三版配套PPT课件GFS的实现机制客户端首先访问Master节点,获取交互的ChunkServer信息,然后访问这些ChunkServer,完成数据存取工作。这种设计方法实现了控制流和数据流的分离。Client与Master之间只有控制流,而无数据流,极大地降低了Master的负载。Client与ChunkServer之间直接传输数据流,同时由于文件被分成多个Chunk进行分布式存储,Client可以同时访问多个ChunkServer,从而使得整个系统的I/O高度并行,系统整体性能得到提高。62.1Google文件系统GFS《云计算》第三版配套PPT课件GFS的特点1采用中心服务器模式可以方便地增加ChunkServerMaster掌握系统内所有ChunkServer的情况,方便进行负载均衡不存在元数据的一致性问题72.1Google文件系统GFS《云计算》第三版配套PPT课件GFS的特点2不缓存数据文件操作大部分是流式读写,不存在大量重复读写,使用Cache对性能提高不大ChunkServer上数据存取使用本地文件系统从可行性看,Cache与实际数据的一致性维护也极其复杂82.1Google文件系统GFS《云计算》第三版配套PPT课件GFS的特点3在用户态下实现利用POSIX编程接口存取数据降低了实现难度,提高通用性POSIX接口提供功能更丰富用户态下有多种调试工具Master和ChunkServer都以进程方式运行,单个进程不影响整个操作系统GFS和操作系统运行在不同的空间,两者耦合性降低92.1Google文件系统GFS《云计算》第三版配套PPT课件2.1Google文件系统GFS2.1.1系统架构2.1.2容错机制2.1.3系统管理技术Master容错为了防止Master彻底死机的情况,GFS还提供了Master远程的实时备份Master命名空间(NameSpace),也就是整个文件系统的目录结构。Chunk与文件名的映射表。Chunk副本的位置信息,每一个Chunk默认有三个副本。日志直接保存在各个ChunkServer上当Master发生故障时,在磁盘数据保存完好的情况下,可以迅速恢复以上元数据112.1Google文件系统GFS《云计算》第三版配套PPT课件ChunkServer容错GFS采用副本的方式实现ChunkServer的容错每一个Chunk有多个存储副本(默认为三个)对于每一个Chunk,必须将所有的副本全部写入成功,才视为成功写入相关的副本出现丢失或不可恢复等情况,Master自动将该副本复制到其他ChunkServerGFS中的每一个文件被划分成多个Chunk,Chunk的默认大小是64MB每一个Chunk以Block为单位进行划分,大小为64KB,每一个Block对应一个32bit的校验和122.1Google文件系统GFS《云计算》第三版配套PPT课件2.1Google文件系统GFS2.1.1系统架构2.1.2容错机制2.1.3系统管理技术系统管理技术系统管理技术大规模集群安装技术故障检测技术节点动态加入技术节能技术GFS集群中通常有非常多的节点,需要相应的技术支撑GFS构建在不可靠廉价计算机之上的文件系统,由于节点数目众多,故障发生十分频繁新的ChunkServer加入时,只需裸机加入,大大减少GFS维护工作量Google采用了多种机制降低服务器能耗,如采用蓄电池代替昂贵的UPS142.1Google文件系统GFS《云计算》第三版配套PPT课件第二章Google云计算原理与应用of3115高级人工智能人才培养丛书2.1Google文件系统GFS2.2分布式数据处理MapReduce2.3分布式锁服务Chubby2.4分布式结构化数据表Bigtable2.5分布式存储系统Megastore2.6

大规模分布式系统的监控基础架构Dapper2.7海量数据的交互式分析工具Dremel2.8内存大数据分析系统PowerDrill2.9Google应用程序引擎2.2分布式数据处理MapReduce2.2.1产生背景2.2.2编程模型2.2.3实现机制2.2.4案例分析产生背景GoogleMapReduce架构设计师JeffreyDeanJefferyDean设计一个新的抽象模型,封装并行处理、容错处理、本地化计算、负载均衡的细节,还提供了一个简单而强大的接口。这就是MapReduce172.2分布式数据处理MapReduce《云计算》第三版配套PPT课件MapReduce这种并行编程模式思想最早是在1995年提出的。与传统的分布式程序设计相比,MapReduce封装了并行处理、容错处理、本地化计算、负载均衡等细节,还提供了一个简单而强大的接口。MapReduce把对数据集的大规模操作,分发给一个主节点管理下的各分节点共同完成,通过这种方式实现任务的可靠执行与容错机制。产生背景182.2分布式数据处理MapReduce《云计算》第三版配套PPT课件2.2分布式数据处理MapReduce2.2.1产生背景2.2.2编程模型2.2.3实现机制2.2.4案例分析编程模型MapMapMapReduceReduce原始数据1原始数据2原始数据M…结果1结果R…Map函数——对一部分原始数据进行指定的操作。每个Map操作都针对不同的原始数据,因此Map与Map之间是互相独立的,这使得它们可以充分并行化。Reduce操作——对每个Map所产生的一部分中间结果进行合并操作,每个Reduce所处理的Map中间结果是互不交叉的,所有Reduce产生的最终结果经过简单连接就形成了完整的结果集.202.2分布式数据处理MapReduce《云计算》第三版配套PPT课件编程模型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操作后所产生的中间结果

Reduce输入参数:(key,[value1,…,valuem])Reduce工作:对这些对应相同key的value值进行归并处理Reduce输出结果:(key,final_value),所有Reduce的结果并在一起就是最终结果212.2分布式数据处理MapReduce《云计算》第三版配套PPT课件2.2分布式数据处理MapReduce2.2.1产生背景2.2.2编程模型2.2.3实现机制2.2.4案例分析实现机制232.2分布式数据处理MapReduce《云计算》第三版配套PPT课件实现机制(1)MapReduce函数首先把输入文件分成M块(2)分派的执行程序中有一个主控程序Master(3)一个被分配了Map任务的Worker读取并处理相关的输入块(4)这些缓冲到内存的中间结果将被定时写到本地硬盘,这些数据通过分区函数分成R个区(5)当Master通知执行Reduce的Worker关于中间<key,value>对的位置时,它调用远程过程,从MapWorker的本地硬盘上读取缓冲的中间数据(6)ReduceWorker根据每一个唯一中间key来遍历所有的排序后的中间数据,并且把key和相关的中间结果值集合传递给用户定义的Reduce函数(7)当所有的Map任务和Reduce任务都完成的时候,Master激活用户程序242.2分布式数据处理MapReduce《云计算》第三版配套PPT课件容错机制由于MapReduce在成百上千台机器上处理海量数据,所以容错机制是不可或缺的。总的来说,MapReduce通过重新执行失效的地方来实现容错。Master失效Worker失效Master会周期性地设置检查点(checkpoint),并导出Master的数据。一旦某个任务失效,系统就从最近的一个检查点恢复并重新执行。由于只有一个Master在运行,如果Master失效了,则只能终止整个MapReduce程序的运行并重新开始。Master会周期性地给Worker发送ping命令,如果没有Worker的应答,则Master认为Worker失效,终止对这个Worker的任务调度,把失效Worker的任务调度到其他Worker上重新执行。252.2分布式数据处理MapReduce《云计算》第三版配套PPT课件2.2分布式数据处理MapReduce2.2.1产生背景2.2.2编程模型2.2.3实现机制2.2.4案例分析怎样通过MapReduce完成排序工作,使其有序(字典序)呢?第一个步骤对原始的数据进行分割(Split),得到N个不同的数据分块。282.2分布式数据处理MapReduce第二个步骤对每一个数据分块都启动一个Map进行处理。采用桶排序的方法,每个Map中按照首字母将字符串分配到26个不同的桶中。292.2分布式数据处理MapReduce第三个步骤对于Map之后得到的中间结果,启动26个Reduce。按照首字母将Map中不同桶中的字符串集合放置到相应的Reduce中进行处理。302.2分布式数据处理MapReduce本章未完待续第二章Google云计算原理与应用of3132高级人工智能人才培养丛书2.1Google文件系统GFS2.2分布式数据处理MapReduce2.3分布式锁服务Chubby2.4分布式结构化数据表Bigtable2.5分布式存储系统Megastore2.6

大规模分布式系统的监控基础架构Dapper2.7海量数据的交互式分析工具Dremel2.8内存大数据分析系统PowerDrill2.9Google应用程序引擎初步了解ChubbyChubby是Google设计的提供粗粒度锁服务的一个文件系统,它基于松耦合分布式系统,解决了分布的一致性问题。通过使用Chubby的锁服务,用户可以确保数据操作过程中的一致性Chubby作为一个稳定的存储系统存储包括元数据在内的小数据Google内部还使用Chubby进行名字服务(NameServer)332.3分布式锁服务Chubby《云计算》第三版配套PPT课件2.3分布式锁服务Chubby2.3.1Paxos算法2.3.2Chubby系统设计2.3.3Chubby中的Paxos2.3.4Chubby文件系统2.3.5通信协议2.3.6正确性与性能Paxos算法proposersacceptorslearners提出决议批准决议获取并使用已经通过的决议三个节点决议只有在被proposers提出后才能批准每次只批准一个决议只有决议确定被批准后learners才能获取这个决议三个条件352.3分布式锁服务Chubby《云计算》第三版配套PPT课件系统的约束条件p1:每个acceptor只接受它得到的第一个决议。p2:一旦某个决议得到通过,之后通过的决议必须和该决议保持一致。p2a:一旦某个决议v得到通过,之后任何acceptor再批准的决议必须是v。p2b:一旦某个决议v得到通过,之后任何proposer再提出的决议必须是v。p2c:如果一个编号为n的提案具有值v,那么存在一个“多数派”,要么它们中没有谁批准过编号小于n的任何提案,要么它们进行的最近一次批准具有值v。为了保证决议的唯一性,acceptors也要满足一个约束条件:当且仅当acceptors没有收到编号大于n的请求时,acceptors才批准编号为n的提案。362.3分布式锁服务Chubby《云计算》第三版配套PPT课件37一个决议分为两个阶段准备阶段12批准阶段proposers选择一个提案并将它的编号设为n将它发送给acceptors中的一个“多数派”acceptors收到后,如果提案的编号大于它已经回复的所有消息,则acceptors将自己上次的批准回复给proposers,并不再批准小于n的提案。当proposers接收到acceptors中的这个“多数派”的回复后,就向回复请求的acceptors发送accept请求,在符合acceptors一方的约束条件下,acceptors收到accept请求后即批准这个请求。2.3分布式锁服务Chubby《云计算》第三版配套PPT课件2.3分布式锁服务Chubby2.3.1Paxos算法2.3.2Chubby系统设计2.3.3Chubby中的Paxos2.3.4Chubby文件系统2.3.5通信协议2.3.6正确性与性能54639Chubby的设计目标主要有以下几点高可用性和高可靠性213高扩展性支持粗粒度的建议性锁服务服务信息的直接存储支持通报机制支持缓存机制2.3分布式锁服务Chubby《云计算》第三版配套PPT课件客户端应用程序客户端应用程序Chubby程序率Chubby程序率…远程过程调用Chubby单元的五个服务器主服务器客户端进程40Chubby的基本架构在客户这一端每个客户应用程序都有一个Chubby程序库(ChubbyLibrary),客户端的所有应用都是通过调用这个库中的相关函数来完成的。服务器一端称为Chubby单元,一般是由五个称为副本(Replica)的服务器组成的,这五个副本在配置上完全一致,并且在系统刚开始时处于对等地位。客户端服务器端2.3分布式锁服务Chubby《云计算》第三版配套PPT课件2.3分布式锁服务Chubby2.3.1Paxos算法2.3.2Chubby系统设计2.3.3Chubby中的Paxos2.3.4Chubby文件系统2.3.5通信协议2.3.6正确性与性能副本网络Chubby客户端网络Chubby协议快照互换(Sanpshotexchange)Paxos协议本地文件系统日志文件I/O快照容错的日志(Fault-tolerantLog)容错的数据库(Fault-tolerantDB)ChubbyRPC42单个Chubby副本结构文件传输2.3分布式锁服务Chubby《云计算》第三版配套PPT课件副本1副本2副本3值值值响应响应响应值提交客户端应用程序Paxos构架Paxos协议43容错日志的API2.3分布式锁服务Chubby《云计算》第三版配套PPT课件2.3分布式锁服务Chubby2.3.1Paxos算法2.3.2Chubby系统设计2.3.3Chubby中的Paxos2.3.4Chubby文件系统2.3.5通信协议2.3.6正确性与性能45单调递增的64位编号实例号InstanceNumber新节点实例号必定大于旧节点的实例号。1锁生成号LockGenerationNumber锁被用户持有时该号增加。内容生成号ContentGenerationNumber文件内容修改时该号增加。23ACL生成号ACLGenerationNumberACL名被覆写时该号增加。42.3分布式锁服务Chubby《云计算》第三版配套PPT课件

函数名称

用Open()打开某个文件或者目录来创建句柄Close()关闭打开的句柄,后续的任何操作都将中止Poison()中止当前未完成及后续的操作,但不关闭句柄GetContentsAndStat()返回文件内容及元数据GetStat()只返回文件元数据ReadDir()返回子目录名称及其元数据SetContents()向文件中写入内容SetACL()设置ACL名称Delete()如果该节点没有子节点的话则执行删除操作Acquire()获取锁Release()释放锁GetSequencer()返回一个sequencerSetSequencer()将sequencer和某个句柄进行关联CheckSequencer()检查某个sequencer是否有效46常用的句柄函数及作用2.3分布式锁服务Chubby2.3分布式锁服务Chubby2.3.1Paxos算法2.3.2Chubby系统设计2.3.3Chubby中的Paxos2.3.4Chubby文件系统2.3.5通信协议2.3.6正确性与性能48Chubby客户端与服务器端的通信过程2.3分布式锁服务Chubby49可能出现的两种故障2.3分布式锁服务Chubby客户端租约过期主服务器出错122.3分布式锁服务Chubby2.3.1Paxos算法2.3.2Chubby系统设计2.3.3Chubby中的Paxos2.3.4Chubby文件系统2.3.5通信协议2.3.6正确性与性能51一致性2.3分布式锁服务Chubby正确性与性能每个Chubby单元是由五个副本组成的,这五个副本中需要选举产生一个主服务器,这种选举本质上就是一个一致性问题安全性采用的是ACL形式的安全保障措施。只要不被覆写,子节点都是直接继承父节点的ACL名性能优化提高主服务器默认的租约期、使用协议转换服务将Chubby协议转换成较简单的协议、客户端一致性缓存等52Chubby的ACL机制2.3分布式锁服务Chubby用户chinacloud提出向文件CLOUD中写入内容的请求。CLOUD首先读取自身的写ACL名fun,接着在fun中查到了chinacloud这一行记录,于是返回信息允许chinacloud对文件进行写操作,此时chinacloud才被允许向CLOUD写入内容。其他的操作和写操作类似。第二章Google云计算原理与应用of3153高级人工智能人才培养丛书2.1Google文件系统GFS2.2分布式数据处理MapReduce2.3分布式锁服务Chubby2.4分布式结构化数据表Bigtable2.5分布式存储系统Megastore2.6

大规模分布式系统的监控基础架构Dapper2.7海量数据的交互式分析工具Dremel2.8内存大数据分析系统PowerDrill2.9Google应用程序引擎2.4分布式结构化数据表Bigtable2.4.1设计动机与目标2.4.2数据模型2.4.3系统架构2.4.4主服务器2.4.5子表服务器2.4.6性能优化552.4分布式结构化数据表BigtableBigtable的设计动机123需要存储的数据种类繁多海量的服务请求商用数据库

无法满足需求包括URL、网页内容、用户的个性化设置在内的数据都是Google需要经常处理的Google运行着目前世界上最繁忙的系统,它每时每刻处理的客户服务请求数量是普通的系统根本无法承受的一方面现有商用数据库的设计着眼点在于其通用性。另一方面对于底层系统的完全掌控会给后期的系统维护、升级带来极大的便利562.4分布式结构化数据表BigtableBigtable应达到的基本目标广泛的适用性很强的可扩展性高可用性简单性Bigtable是为了满足一系列Google产品而并非特定产品的存储要求。根据需要随时可以加入或撤销服务器确保几乎所有的情况下系统都可用底层系统的简单性既可以减少系统出错的概率,也为上层应用的开发带来便利2.4分布式结构化数据表Bigtable2.4.1设计动机与目标2.4.2数据模型2.4.3系统架构2.4.4主服务器2.4.5子表服务器2.4.6性能优化58Bigtable数据的存储格式2.4分布式结构化数据表BigtableBigtable是一个分布式多维映射表,表中的数据通过一个行关键字(RowKey)、一个列关键字(ColumnKey)以及一个时间戳(TimeStamp)进行索引Bigtable的存储逻辑可以表示为:(row:string,column:string,time:int64)→string592.4分布式结构化数据表Bigtable行列时间戳Bigtable的行关键字可以是任意的字符串,但是大小不能够超过64KB表中数据都是根据行关键字进行排序的,排序使用的是词典序同一地址域的网页会被存储在表中的连续位置倒排便于数据压缩,可以大幅提高压缩率将其组织成所谓的列族(ColumnFamily)族名必须有意义,限定词则可以任意选定组织的数据结构清晰明了,含义也很清楚族同时也是Bigtable中访问控制(AccessControl)的基本单元Bigtable中的时间戳是64位整型数,具体的赋值方式可以用户自行定义Google的很多服务比如网页检索和用户的个性化设置等都需要保存不同时间的数据,这些不同的数据版本必须通过时间戳来区分。2.4分布式结构化数据表Bigtable2.4.1设计动机与目标2.4.2数据模型2.4.3系统架构2.4.4主服务器2.4.5子表服务器2.4.6性能优化61Bigtable基本架构2.4分布式结构化数据表Bigtable622.4分布式结构化数据表BigtableBigtable中Chubby的主要作用作用一选取并保证同一时间内只有一个主服务器(MasterServer)。获取子表的位置信息。保存Bigtable的模式信息及访问控制列表。作用二作用三2.4分布式结构化数据表Bigtable2.4.1设计动机与目标2.4.2数据模型2.4.3系统架构2.4.4主服务器2.4.5子表服务器2.4.6性能优化642.4分布式结构化数据表Bigtable主服务器新子表分配子表服务器状态监控子服务器之间的负载均衡当一个新的子表产生时,主服务器通过一个加载命令将其分配给一个空间足够的子表服务器。创建新表、表合并以及较大子表的分裂都会产生一个或多个新子表。分割完成之后子服务器需要向主服务发出一个通知。主服务器必须对子表服务器的状态进行监控,以便及时检测到服务器的加入或撤销652.4分布式结构化数据表Bigtable从Chubby中获取一个独占锁,确保同一时间只有一个主服务器Bigtable中Chubby的主要作用扫描服务器目录,发现目前活跃的子表服务器与所有的活跃子表服务器取得联系以便了解所有子表的分配情况通过扫描元数据表(MetadataTable),发现未分配的子表并将其分配到合适的子表服务器步骤1

步骤3

步骤2

步骤42.4分布式结构化数据表Bigtable2.4.1设计动机与目标2.4.2数据模型2.4.3系统架构2.4.4主服务器2.4.5子表服务器2.4.6性能优化6764KB块64KB块…SSTable索引SSTable格式的基本示意2.4分布式结构化数据表BigtableSSTable是Google为Bigtable设计的内部数据存储格式。所有的SSTable文件都存储在GFS上,用户可以通过键来查询相应的值。68子表实际组成日志64KB块64KB块…SSTable索引64KB块64KB块…SSTable索引…2.4分布式结构化数据表Bigtable不同子表的SSTable可以共享每个子表服务器上仅保存一个日志文件Bigtable规定将日志的内容按照键值进行排序每个子表服务器上保存的子表数量可以从几十到上千不等,通常情况下是100个左右69Chubby文件根子表(元数据表中第一条记录)………………用户表1用户表N其他元数据子表······子表地址组成2.4分布式结构化数据表BigtableBigtable系统的内部采用的是一种类似B+树的三层查询体系……···70Bigtable数据存储及读/写操作2.4分布式结构化数据表Bigtable较新的数据存储在内存中一个称为内存表(Memtable)的有序缓冲里,较早的数据则以SSTable格式保存在GFS中。读和写操作有很大的差异性71三种形式压缩之间的关系2.4分布式结构化数据表BigtableSSTableSSTable内存表SSTable内存表内存表次压缩次压缩SSTableSSTable合并压缩SSTable主压缩………………2.4分布式结构化数据表Bigtable2.4.1设计动机与目标2.4.2数据模型2.4.3系统架构2.4.4主服务器2.4.5子表服务器2.4.6性能优化73局部性群组2.4分布式结构化数据表BigtableBigtable允许用户将原本并不存储在一起的数据以列族为单位,根据需要组织在一个单独的SSTable中,以构成一个局部性群组。用户可以只看自己感兴趣的内容。对于一些较小的且会被经常读取的局部性群组,明显地改善读取效率。742.4分布式结构化数据表Bigtable压缩12利用Bentley&McIlroy方式(BMDiff)在大的扫描窗口将常见的长串进行压缩采取Zippy技术进行快速压缩,它在一个16KB大小的扫描窗口内寻找重复数据,这个过程非常快压缩可以有效地节省空间,Bigtable中的压缩被应用于很多场合。首先压缩可以被用在构成局部性群组的SSTable中,可以选择是否对个人的局部性群组的SSTable进行压缩。752.4分布式结构化数据表Bigtable布隆过滤器Bigtable向用户提供了一种称为布隆过滤器的数学工具。布隆过滤器是巴顿•布隆在1970年提出的,实际上它是一个很长的二进制向量和一系列随机映射函数,在读操作中确定子表的位置时非常有用。布隆过滤器的速度快,省空间不会将一个存在的子表判定为不存在在某些情况下它会将不存在的子表判断为存在缺点优点本章未完待续第二章Google云计算原理与应用of3177高级人工智能人才培养丛书2.1Google文件系统GFS2.2分布式数据处理MapReduce2.3分布式锁服务Chubby2.4分布式结构化数据表Bigtable2.5分布式存储系统Megastore2.6

大规模分布式系统的监控基础架构Dapper2.7海量数据的交互式分析工具Dremel2.8内存大数据分析系统PowerDrill2.9Google应用程序引擎2.5分布式存储系统Megastore2.5.1设计目标及方案选择2.5.2Megastore数据模型2.5.3Megastore中的事务及并发控制2.5.4Megastore基本架构2.5.5核心技术——复制2.5.6产品性能及控制措施针对可用性的要求,实现了一个同步的、容错的、适合远距离传输的复制机制。针对可扩展性的要求,将整个大的数据分割成很多小的数据分区,每个数据分区连同它自身的日志存放在NoSQL数据库中,具体来说就是存放在Bigtable中。设计目标及方案选择2.5分布式存储系统Megastore设计一种介于传统的关系型数据库和NoSQL之间的存储技术,尽可能达到高可用性和高可扩展性的统一。方法一设计目标方法二79《云计算》第三版配套PPT课件数据的分区和复制2.5分布式存储系统Megastore在Megastore中,这些小的数据分区被称为实体组集(EntityGroups)。每个实体组集包含若干的实体组(EntityGroup,相当于分区中表的概念)。一个实体组中包含很多的实体(Entity,相当于表中记录的概念)。80《云计算》第三版配套PPT课件2.5分布式存储系统Megastore2.5.1设计目标及方案选择2.5.2Megastore数据模型2.5.3Megastore中的事务及并发控制2.5.4Megastore基本架构2.5.5核心技术——复制2.5.6产品性能及控制措施822.5分布式存储系统Megastore传统的关系型数据库不合适的三个原因传统的关系型数据库是通过连接(Join)来满足用户的需求的,但是就Megastore而言,这种数据模型是不合适的,主要有以下三个原因:原因1对于高负载的交互式应用来说,可预期的性能提升要比使用一种代价高昂的查询语言所带来的好处多原因2Megastore所面对的应用是读远多于写,因此好的选择是将读操作所需要做的工作尽可能地转移到写操作上原因3在Bigtable这样的键/值存储系统中存储和查询级联数据(HierarchicalData)是很方便的《云计算》第三版配套PPT课件Megastore数据模型怎么设计?842.5分布式存储系统Megastore细粒度控制的数据模型和模式语言同关系型数据库一样,Megastore的数据模型是在模式(schema)中定义的且是强类型的(stronglytyped)每个模式都由一系列的表(tables)构成,表又包含有一系列的实体(entities),每实体中包含一系列属性(properties)属性是命名的且具有类型,这些类型包括字符型(strings)、数字类型(numbers)或者Google的ProtocolBuffers。Google团队设计的Megastore数据模型《云计算》第三版配套PPT课件852.5分布式存储系统Megastore照片共享服务数据模型实例表Photo就是一个子表,因为它声明了一个外键User则是一个根表一个Megastore实例中可以有若干个不同的根表,表示不同类型的实体组集三种不同属性设置,既有必须的(如user_id),也有可选的(如thumbnail_url)Photo中的可重复类型的tag属性《云计算》第三版配套PPT课件862.5分布式存储系统MegastoreMegastore索引局部索引定义在单个实体组中,作用域仅限于单个实体组(如PhotosByTime)可以横跨多个实体组集进行数据读取操作(如PhotosByTag)全局索引主要两类额外索引STORING子句(STORINGClause)可重复的索引(RepeatedIndexes)内联索引(InlineIndexes)《云计算》第三版配套PPT课件872.5分布式存储系统MegastoreBigtable中存储情况行键(RowKey)UPhoto.timePhoto.tagPhoto._url101John101,50012:30:01Dinner,Paris…101,50212:15:22Betty,Paris…102MaryBigtable的列名实际上是表名和属性名结合在一起得到,不同表中实体可存储在同一个Bigtable行中《云计算》第三版配套PPT课件2.5分布式存储系统Megastore2.5.1设计目标及方案选择2.5.2Megastore数据模型2.5.3Megastore中的事务及并发控制2.5.4Megastore基本架构2.5.5核心技术——复制2.5.6产品性能及控制措施89Megastore提供的三种读currentsnapshotinconsistent总是在单个实体组中完成总是在单个实体组中完成系统取出已知的最后一个完整提交的事务的时间戳,接着从这个位置读数据忽略日志的状态直接读取最新的值2.5分布式存储系统Megastore《云计算》第三版配套PPT课件90完整的事务周期读应用逻辑提交生效清除获取最后一次提交的事务的时间戳和日志位置从Bigtable读取且聚集数据到日志入口使用Paxos达到一致,将个入口追加到日志将数据更新到Bigtable中的实体和索引清理不再需要的数据2.5分布式存储系统Megastore《云计算》第三版配套PPT课件912.5分布式存储系统MegastoreMegastore中的事务机制《云计算》第三版配套PPT课件2.5分布式存储系统Megastore2.5.1设计目标及方案选择2.5.2Megastore数据模型2.5.3Megastore中的事务及并发控制2.5.4Megastore基本架构2.5.5核心技术——复制2.5.6产品性能及控制措施932.5分布式存储系统MegastoreMegastore基本架构完整副本(FullReplica)见证者副本(WitnessReplica)只读副本(Read-onlyReplica)在Megastore中共有三种副本《云计算》第三版配套PPT课件942.5分布式存储系统Megastore快速读与快速写快速读快速写利用本地读取实现快速读,带来更好的用户体验及更低的延迟关键是保证选择的副本上数据是最新的协调者是一个服务,该服务分布在每个副本的数据中心里面。它的主要作用就是跟踪一个实体组集合协调者的状态是由写算法来保证如果一次写成功,那么下一次写的时候就跳过准备过程,直接进入接受阶段Megastore没有使用专门的主服务器,而是使用leadersleader主要是来裁决哪个写入的值可以获取0号提议客户端、网络及Bigtable的故障都会导致一个写操作处于不确定的状态《云计算》第三版配套PPT课件2.5分布式存储系统Megastore2.5.1设计目标及方案选择2.5.2Megastore数据模型2.5.3Megastore中的事务及并发控制2.5.4Megastore基本架构2.5.5核心技术——复制2.5.6产品性能及控制措施962.5分布式存储系统Megastore复制的日志每个副本都存有记录所有更新的数据。Megastore允许副本不按顺序接受日志,这些日志将独立的存储在Bigtable中。预写式日志《云计算》第三版配套PPT课件972.5分布式存储系统Megastore数据读取本地查询发现位置追赶验证查询数据《云计算》第三版配套PPT课件982.5分布式存储系统Megastore数据写入接受leader准备接受失效生效《云计算》第三版配套PPT课件992.5分布式存储系统Megastore协调者的可用性协调者在系统中是比较重要的——协调者的进程运行在每个数据中心。每次的写操作中都要涉及协调者,因此协调者的故障将会导致系统的不可用Megastore使用了Chubby锁服务,为了处理请求,一个协调者必须持有多数锁。一旦因为出现问题导致它丢失了大部分锁,协调者就会恢复到一个默认保守状态除了可用性问题,对于协调者的读写协议必须满足一系列的竞争条件《云计算》第三版配套PPT课件2.5分布式存储系统Megastore2.5.1设计目标及方案选择2.5.2Megastore数据模型2.5.3Megastore中的事务及并发控制2.5.4Megastore基本架构2.5.5核心技术——复制2.5.6产品性能及控制措施1012.5分布式存储系统Megastore可用性的分布情况Megastore在Google中已经部署和使用了若干年,有超过100个产品使用Megastore作为其存储系统从图中可以看出,绝大多数产品具有极高的可用性(>99.999%)。这表明Megastore系统的设计是非常成功的,基本达到了预期目标《云计算》第三版配套PPT课件102产品延迟情况的分布2.5分布式存储系统Megastore应用程序的平均读取延迟在万分之一毫秒之内,平均写入延迟在100至400毫秒之间避免Megastore的性能下降,可采取以下三种应对方法:(1)重新选择路由使客户端绕开出现问题的副本(2)将出现问题副本上的协调者禁用,确保问题的影响降至最小。(3)禁用整个副本《云计算》第三版配套PPT课件2.6

大规模分布式系统的监控基础架构Dapper第二章Google云计算原理与应用of31103高级人工智能人才培养丛书2.1Google文件系统GFS2.2分布式数据处理MapReduce2.3分布式锁服务Chubby2.4分布式结构化数据表Bigtable2.5分布式存储系统Megastore2.7海量数据的交互式分析工具Dremel2.8内存大数据分析系统PowerDrill2.9Google应用程序引擎2.6大规模分布式系统的监控

基础架构Dapper2.6.1基本设计目标2.6.2Dapper监控系统简介2.6.3关键性技术2.6.4常用Dapper工具2.6.5Dapper使用经验在我们看来很简单的一次搜索实际上涉及了众多Google后台子系统,这些子系统的运行状态都需要进行监控用户的平均每一次前台搜索会导致Google的后台发生1011次的处理1062.6大规模分布式系统的监控基础架构Dapper两个基本要求设计出的监控系统应当能够对尽可能多的Google服务进行监控Google的服务是全天候的,如果不能对Google的后台同样进行全天候的监控很可能会错过某些无法再现的关键性故障监控系统设计两个基本要求1.广泛可部署性(UbiquitousDeployment)2.不间断的监控《云计算》第三版配套PPT课件1072.6大规模分布式系统的监控基础架构Dapper三个基本设计目标低开销这个是广泛可部署性的必然要求。监控系统的开销越低,对于原系统的影响就越小,系统的开发人员也就越愿意接受这个监控系统。对应用层透明监控系统对程序员应当是不可见的。如果监控系统的使用需要程序开发人员对其底层的一些细节进行调整才能正常工作的话,这个监控系统肯定不是一个完善的监控系统。可扩展性Google的服务增长速度是惊人的,设计出的系统至少在未来几年里要能够满足Google服务和集群的需求。《云计算》第三版配套PPT课件2.6大规模分布式系统的监控

基础架构Dapper2.6.1基本设计目标2.6.2Dapper监控系统简介2.6.3关键性技术2.6.4常用Dapper工具2.6.5Dapper使用经验1092.6大规模分布式系统的监控基础架构DapperDapper监控系统的基本概念典型分布式系统的请求及应答过程用户ABCDE请求X应答XRPC1中间层RPC2前端后台RPC4RPC3在监控系统中记录下所有这些消息不难,如何将这些消息记录同特定的请求(本例中的X)关联起来才是分布式监控系统设计中需要解决的关键性问题之一。《云计算》第三版配套PPT课件1102.6大规模分布式系统的监控基础架构DapperDapper监控系统的三个基本概念监控树(TraceTree)区间(Span)注释(Annotation)一个同特定事件相关的所有消息区间实际上就是一条记录注释主要用来辅助推断区间关系,也可以包含一些自定义的内容《云计算》第三版配套PPT课件1112.6大规模分布式系统的监控基础架构Dapper区间Helper.Call的详细信息区间包含了来自客户端的注释信息:“<Start>”、“ClientSend”、“ClientRecv”和“<End>”,也包含了来自服务器端的注释信息:“ServerRecv”、“foo”和“ServerSend”《云计算》第三版配套PPT课件1122.6大规模分布式系统的监控基础架构Dapper监控信息的汇总(1)将区间的数据写入到本地的日志文件(2)所有机器上的本地日志文件汇集(3)汇集后的数据写入到Bigtable存储库中《云计算》第三版配套PPT课件2.6大规模分布式系统的监控

基础架构Dapper2.6.1基本设计目标2.6.2Dapper监控系统简介2.6.3关键性技术2.6.4常用Dapper工具2.6.5Dapper使用经验1142.6大规模分布式系统的监控基础架构Dapper轻量级核心功能库最关键的代码基础是基本RPC、线程和控制流函数库的实现主要功能是实现区间创建、抽样和在本地磁盘上记录日志。将复杂的功能实现限制在一个轻量级的核心功能库中保证了Dapper的监控过程基本对应用层透明。小规模库通用线程(UbiquitousThreading)控制流(ControlFlow)RPC代码库(RPCLibraryCode)《云计算》第三版配套PPT课件1152.6大规模分布式系统的监控基础架构Dapper二次抽样技术利用二次抽样技术成功地解决了低开销及广泛可部署性的问题。第一次抽样第二次抽样实践中,设计人员发现当抽样率低至1/1024时也能够产生足够多的有效监控数据,即在1024个请求中抽取1个进行监控也是可行的,从而可以捕获有效数据发生在数据写入Bigtable前,具体方法是将监控id散列成一个标量z(0≤z≤1),如果某个区间的z小于事先定义好的汇总抽样系数,则保留这个区间并将它写入Bigtable,否则丢弃《云计算》第三版配套PPT课件2.6大规模分布式系统的监控

基础架构Dapper2.6.1基本设计目标2.6.2Dapper监控系统简介2.6.3关键性技术2.6.4常用Dapper工具2.6.5Dapper使用经验1172.6大规模分布式系统的监控基础架构DapperDapper存储APIDapper的“存储API”简称为DAPI,提供了对分散在区域Dapper存储库(DEPOTS)的监控记录的直接访问。一般有以下三种方式访问这些记录。(1)通过监控id访问(AccessbyTraceid)(2)块访问(BulkAccess)(3)索引访问(IndexedAccess)利用全局唯一的监控id直接访问所需的监控数据借助MapReduce对数以十亿计的Dapper监控数据的并行访问Dapper存储库支持单索引(SingleIndex)《云计算》第三版配套PPT课件118Dapper用户界面(1)选择监控对象(2)用户对这些执行模式进行排序并选择查看更多细节(3)分布式执行模式图形化描述呈现给用户《云计算》第三版配套PPT课件2.6大规模分布式系统的监控基础架构Dapper119Dapper用户界面(4)根据最初选择的开销度量标准,Dapper以频度直方图的形式将步骤(3)中选中的执行模式的开销分布展示出来(5)用户选择了某个监控样例后,就会进入所谓的监控审查视图(TraceInspectionView)《云计算》第三版配套PPT课件2.6大规模分布式系统的监控基础架构Dapper2.6大规模分布式系统的监控

基础架构Dapper2.6.1基本设计目标2.6.2Dapper监控系统简介2.6.3关键性技术2.6.4常用Dapper工具2.6.5Dapper使用经验1212.6大规模分布式系统的监控基础架构DapperDapper使用经验新服务部署中Dapper的使用利用Dapper对系统延迟情况进行一系列的跟踪,进而发现存在的问题定位长尾延迟(AddressingLongTailLatency)端到端性能和关键路径上的网络延迟有着极大的关系12《云计算》第三版配套PPT课件1222.6大规模分布式系统的监控基础架构DapperDapper使用经验推断服务间的依存关系(InferringServiceDependencies)Google的“服务依存关系”项目使用监控注释和DPAI的MapReduce接口实现了服务依存关系确定的自动化确定不同服务的网络使用情况利用Dapper平台构建了一个连续不断更新的控制台,用来显示内部集群网络通信中最活跃的应用层终端34分层的共享式存储系统没有Dapper之类的工具的情况下对于这种共享式服务资源的争用也同样难以调试利用Dapper进行“火拼”(FirefightingwithDapper)Dapper用户可以通过和Dapper守护进程的直接通信,将所需的最新数据汇总在一起56《云计算》第三版配套PPT课件本章未完待续第二章Google云计算原理与应用of31124高级人工智能人才培养丛书2.1Google文件系统GFS2.2分布式数据处理MapReduce2.3分布式锁服务Chubby2.4分布式结构化数据表Bigtable2.5分布式存储系统Megastore2.6

大规模分布式系统的监控基础架构Dapper2.7海量数据的交互式分析工具Dremel2.8内存大数据分析系统PowerDrill2.9Google应用程序引擎数据本身不会产生价值只有经过分析才有可能产生价值2.7海量数据的交互式分析工具Dremel2.7.1产生背景2.7.2数据模型2.7.3嵌套式的列存储2.7.4查询语言与执行2.7.5性能分析2.7.6小结127产生背景2.7海量数据的交互式分析工具DremelMapReduce优点:便携缺点:效率低Google的团队结合其自身的实际需求,借鉴搜索引擎和并行数据库的一些技术,开发出了实时的交互式查询系统Dremel。《云计算》第三版配套PPT课件2.7海量数据的交互式分析工具DremelDremel支持的典型应用Web文档的分析Android市场的应用安装数据的跟踪Google产品的错误报告Google图书的光学字符识别欺诈信息的分析Google地图的调试Bigtable实例上的tablet迁移Google分布式构建系统的测试结果分析磁盘I/O信息的统计Google数据中心上运行任务的资源监控Google代码库的符号和依赖关系分析128《云计算》第三版配套PPT课件2.7海量数据的交互式分析工具Dremel2.7.1产生背景2.7.2数据模型2.7.3嵌套式的列存储2.7.4查询语言与执行2.7.5性能分析2.7.6小结130两方面的技术支撑两方面的技术支撑一方面:统一的存储平台另一方面:统一的数据存储格式实现高效的数据存储,Dremel使用的底层数据存储平台是GFS存储的数据才可以被不同的平台所使用2.7海量数据的交互式分析工具Dremel《云计算》第三版配套PPT课件1312.7海量数据的交互式分析工具Dremel面向记录和面向列的存储Google的Dremel是第一个在嵌套数据模型基础上实现列存储的系统。列存储更利于数据的压缩处理时只需要使用涉及的列数据好处一:好处二:《云计算》第三版配套PPT课件1322.7海量数据的交互式分析工具Dremel嵌套模型的形式化定义原子类型(AtomicType)原子类型允许的取值类型包括整型、浮点型、字符串等记录类型(RecordType)记录类型则可以包含多个域记录型数据包括三种类型:必须的(Required)、可重复的(Repeated)以及可选的(Optional)《云计算》第三版配套PPT课件1332.7海量数据的交互式分析工具Dremel嵌套结构的模式和实例文档的模式(Schema)定义符合该模式的两条记录利用该数据模型,可以使用Java语言,也可以使用C++语言来处理数据,甚至可以用Java编写的MapReduce程序直接处理C++语言产生的数据集。这种跨平台的优良特性正是Google所需要的。《云计算》第三版配套PPT课件2.7海量数据的交互式分析工具Dremel2.7.1产生背景2.7.2数据模型2.7.3嵌套式的列存储2.7.4查询语言与执行2.7.5性能分析2.7.6小结1352.7海量数据的交互式分析工具Dremel数据结构的无损表示带有重复深度和定义深度的r1与r2的列存储重复深度主要关注的是可重复类型,而定义深度同时关注可重复类型和可选类型(optional)每一列最终会被存储为块(Block)的集合,每个块包含重复深度和定义深度且包含字段值。《云计算》第三版配套PPT课件1362.7海量数据的交互式分析工具Dremel高效的数据编码计算重复和定义深度的基础算法Dremel利用图中算法创建一个树状结构树的节点为字段的writer,它的结构与模式中的字段层级匹配。核心的想法是只在字段writer有自己的数据时执行更新,非绝对必要时不尝试往下传递父节点状态。子节点writer继承父节点的深度值。当任意值被添加时,子writer将深度值同步到父节点。《云计算》第三版配套PPT课件1372.7海量数据的交互式分析工具Dremel数据重组Dremel数据重组方法的核心思想是为每个字段创建一个有限状态机(FSM),读取字段值和重复深度,然后顺序地将值添加到输出结果上。《云计算》第三版配套PPT课件138当前FSM写入值下一个重复深度值动作DocId(开始)100跳转至Links.BackwardLinks.BackwardNULL0跳转至Links.ForwardLinks.Forward201停留在Links.ForwardLinks.Forward401停留在Links.ForwardLinks.Forward600跳转至Name.Language.CodeName.Language.Codeen-us2跳转至Name.Language.CountryName.Language.Countryus2跳转至Name.Language.CodeName.Language.Codeen1跳转至Name.Language.CountryName.Language.CountryNULL1跳转至Name.UrlName.Urlhttp://A1跳转至Name.Language.CodeName.Language.CodeNULL1跳转至Name.Language.CountryName.Language.CountryNULL1跳转至Name.UrlName.Urlhttp://B1跳转至Name.Language.CodeName.Language.Codeen-gb0跳转至Name.Language.CountryName.Language.Countrygb0跳转至Name.UrlName.UrlNULL0结束2.7海量数据的交互式分析工具Dremel数据重组r1的完整数据重组过程《云计算》第三版配套PPT课件1392.7海量数据的交互式分析工具Dremel数据重组如果具体的查询中不是涉及所有列,而是仅涉及很少的列的话,上述数据重组的过程会更加便利,下图中仅仅涉及DocId和Name.Language.Country的有限状态机。《云计算》第三版配套PPT课件1402.7海量数据的交互式分析工具Dremel数据重组核心的思想如下:设置t为当前字段读取器的当前值f所返回的下一个重复深度。在模式树中,找到它在深度t的祖先,然后选择该祖先节点的第一个叶子字段n。由此得到一个FSM状态变化(f,t)->n。有限状态机的构造算法《云计算》第三版配套PPT课件2.7海量数据的交互式分析工具Dremel2.7.1产生背景2.7.2数据模型2.7.3嵌套式的列存储2.7.4查询语言与执行2.7.5性能分析2.7.6小结1422.7海量数据的交互式分析工具Dremel查询语言与执行Dremel的SQL查询输入的是一个或多个嵌套结构的表以及相应的模式,而输出的结果是一个嵌套结构的表以及相应的模式。嵌套子查询记录内聚合top-kjoins自定义函数……《云计算》第三版配套PPT课件1432.7海量数据的交互式分析工具DremelDremel利用多层级服务树(multi-levelservicetree)的概念来执行查询操作根服务器接受客户端发出的请求,读取相应的元数据,将请求转发至中间服务器。中间服务器负责查询中间结果的聚集叶子服务器负责执行数据来源查询语言与执行《云计算》第三版配套PPT课件144查询语言与执行Dremel中的数据都是分布式存储的,因此每一层查询涉及的数据实际都被水平划分后存储在多个服务器上。Dremel是一个多用户系统,因此同一时刻往往会有多个用户进行查询。查询分发器有一个很重要参数,它表示在返回结果之前一定要扫描百分之多少的tablet2.7海量数据的交互式分析工具Dremel《云计算》第三版配套PPT课件2.7海量数据的交互式分析工具Dremel2.7.1产生背景2.7.2数据模型2.7.3嵌套式的列存储2.7.4查询语言与执行2.7.5性能分析2.7.6小结146表名记录数(亿)规模(未压缩,TB)域数目数据中心复制因子T185087270A3T224013530A3T340701200A3T4>1000010550B3T5>100002050B22.7海量数据的交互式分析工具Dremel由于Dremel并不开源,我们只能通过Google论文中的分析大致了解其性能。Google的实验数据集规模如下图:性能分析《云计算》第三版配套PPT课件1472.7海量数据的交互式分析工具Dremel性能分析MR从面向记录转换到列状存储后性能提升了一个数量级(从小时到分钟),而使用Dremel则又提升了一个数量级(从分钟到秒)《云计算》第三版配套PPT课件2.7海量数据的交互式分析工具Dremel2.7.1产生背景2.7.2数据模型2.7.3嵌套式的列存储2.7.4查询语言与执行2.7.5性能分析2.7.6小结1492.7海量数据的交互式分析工具Dremel小结Dremel和MapReduce并不是互相替代,而是相互补充的技术。在不同的应用场景下各有其用武之地。Drill的设计目标就是复制一个开源的Dremel,但是从目前来看,该项目无论是进展还是影响力都达不到Hadoop的高度。希望未来能出现一个真正有影响力的开源系统实现Dremel的主要功能并被广泛采用。123《云计算》第三版配套PPT课件第二章Google云计算原理与应用of31150高级人工智能人才培养丛书2.1Google文件系统GFS2.2分布式数据处理MapReduce2.3分布式锁服务Chubby2.4分布式结构化数据表Bigtable2.5分布式存储系统Megastore2.6

大规模分布式系统的监控基础架构Dapper2.7海量数据的交互式分析工具Dremel2.8内存大数据分析系统PowerDr

温馨提示

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

评论

0/150

提交评论