您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 工学 > 复旦大学高级web技术课件08云计算之Google平台
主要内容Google云计算背景分布式文件系统GFS并行数据处理模型MapReduce分布式锁服务Chubby分布式数据库BigTableGoogleAppEngine3分布式文件系统GFSGFS的容错措施有哪些?GFS的容错方法GFS的容错机制ChunkServer容错每个Chunk有多个存储副本(通常是3个),分别存储于不同的服务器上每个Chunk又划分为若干Block(64KB),每个Block对应一个32bit的校验码,保证数据正确(若某个Block错误,则转移至其他Chunk副本)Master容错(影子节点热备)三类元数据:命名空间(目录结构)、Chunk与文件名的映射以及Chunk副本的位置信息前两类通过日志提供容错,Chunk副本信息存储于ChunkServer,Master出现故障时可恢复5并行数据处理模型MapReduce1、处理流程2、分片方式灵活的MapReduce所有步骤均可控,可灵活处理各类分布式问题分布式锁服务Chubby8Chubby是什么?主要用于解决分布式一致性问题◦在一个分布式系统中,有一组的Process,它们需要确定一个Value。于是每个Process都提出了一个Value,一致性就是指只有其中的一个Value能够被选中作为最后确定的值,并且当这个值被选出来以后,所有的Process都需要被通知到粗粒度的分布式锁服务◦Chubby是Google为解决分布式一致性问题而设计的提供粗粒度锁服务的文件系统◦其他分布式系统可以使用它对共享资源的访问进行同步9Chubby的设计目标需要实现的特性高可用性高可靠性支持粗粒度的建议性锁服务支持小规模文件直接存储不作考虑的特性高性能存储能力10Chubby的系统架构11客户端应用程序Chubby程序库...客户端应用程序Chubby程序库客户端进程主服务器Chubby单元的5个服务器远程过程调用Chubby文件系统Chubby系统本质上就是一个分布式的、存储大量小文件的文件系统Chubby中的锁就是文件在GFS的例子中,创建文件就是进行“加锁”操作,创建文件成功的那个server其实就是抢占到了“锁”用户通过打开、关闭和存取文件,获取共享锁或者独占锁;并且通过通信机制,向用户发送更新信息12Client与Chubby的通信协议1312345678旧的主服务器新的主服务器宽限期旧的主服务器故障选出新的主服务器客户端租约期M1租约期M2租约期M3租约期C1租约期C2租约期C3无主服务器危险状态临界点安全状态临界点KeepAlivesChubby的应用主节点选举独占锁共享锁数据存取应用获取GFSChunkServer信息元数据存储……14分布式数据表BigTable15BigTable为什么需要设计BigTable?Google需要存储的数据种类繁多网页,地图数据,邮件……如何使用统一的方式存储各类数据?海量的服务请求如何快速地从海量信息中寻找需要的数据?BigTable:基于GFS和Chubby的分布式存储系统对数据进行结构化存储和管理与GFS的联系16Google的需求数据存储可靠性高速数据检索与读取存储海量的记录(若干TB)可以保存记录的多个版本17假设与写操作相比,数据记录读操作占绝大多数工作负载单个节点故障损坏是常见的磁盘是廉价的可以不提供标准接口Google既能控制数据库设计,又能进行应用系统设计18设计目标具有广泛的适应性支持Google系列产品的存储需求具有很强的可扩展性根据需要随时加入或撤销服务器应对不断增多的访问请求高可用性单个节点易损,但要确保几乎所有的情况下系统都可用简单性简单的底层系统可减少系统出错概率,为上层开发带来便利19逻辑视图总体上,与关系数据库中的表类似20RowKeyTimeStampColumnContentsColumnAnchorColumn“mime”cnnsi.commy.look.ca“com.cnn.”T9CNNT8CNN.COMT6“html..“Text/htmlT5“html..“t3“html..“关系数据库中的表是什么样的?有什么特征?关系数据库中的表设计需要遵循什么原则?数据模型行每行数据有一个可排序的关键字和任意列项字符串、整数、二进制串甚至可串行化的结构都可以作为行键表按照行键的“逐字节排序”顺序对行进行有序化处理表内数据非常‘稀疏’,不同的行的列的数完全目可以大不相同URL是较为常见的行键,存储时需要倒排统一地址域的网页连续存储,便于查找、分析和压缩21mp3.baidu.com/index.asp→com.baidu.mp3/index.asp数据模型列特定含义的数据的集合,如图片、链接等可将多个列归并为一组,称为族(family)采用族:限定词的语法规则进行定义fileattr:owning_group”,“fileattr:owning_user”,etc同一个族的数据被压缩在一起保存族是必须的,是BigTable中访问控制的基本单元22数据模型时间戳保存不同时期的数据,如“网页快照”“Abigtable”表中的列可以不受限制地增长表中的数据几乎可以无限地增加23通过(row,col,timestamp)查询通过(row,col,MOST_RECENT)查询数据模型无数据校验每行都可存储任意数目的列BigTable不对列的最少数目进行约束任意类型的数据均可存储BigTable将所有数据均看作为字符串数据的有效性校验由构建于其上的应用系统完成一致性针对同一行的多个操作可以分组合并不支持对多行进行修改的操作符24物理视图25RowKeyTimeStampColumn:ContentsCom.cnn.“html..”T5“html..”T3“html..”RowKeyTimeStampColumn:AnchorCom.cnn.:my.look.caCNN.COMRowKeyTimeStampColumn:mimeCom.cnn.“mime”cnnsi.commy.look.ca“com.cnn.”T9CNNT8CNN.COMT6“html..“Text/htmlT5“html..“t3“html..“物理视图逻辑上的“表”被划分为若干子表(Tablet)每个Tablet由多个SSTable文件组成SSTable文件存储在GFS之上每个子表存储了table的一部分行元数据:起始行键、终止行键如果子表体积超过了阈值(如200M),则进行分割26体系结构27HeadnodeTabletserverGFSChunkserverSSTableSSTableSSTableTabletTabletTabletTabletserverGFSChunkserverSSTable(replica)SSTableSSTableTabletTabletTablet(replica)SSTableLogicalview:Physicallayout:SSTableChubbyServer主节点的职责为每个子表服务器分配子表,对外提供服务与GFS垃圾回收进行交互,收回废弃的SSTable探测子表服务器的故障与恢复负载均衡28有效缓解单点故障子表服务器故障TabletserverGFSChunkserverSSTableSSTableSSTableTabletTabletTabletTabletserverGFSChunkserverSSTable(replica)SSTableSSTableTabletTabletTablet(replica)SSTableLogicalview:Physicallayout:SSTableChubbyServerHeadnode29子表服务器故障ChubbyServerTabletserverGFSChunkserverSSTableSSTableSSTableTabletTabletTabletTabletserverGFSChunkserverSSTable(replica)SSTableSSTableTabletTabletTablet(replica)SSTableLogicalview:Physicallayout:SSTableXXXXXHeadnode30子表服务器故障TabletserverGFSChunkserverSSTableSSTableSSTableTabletTabletTablet(replica)SSTableLogicalview:Physicallayout:Tablet(othertabletserversdraftedtoserveother“abandoned”tablets)BackupcopyoftabletmadeprimaryMessagesenttotabletserverbyheadnodeExtrareplicaoftabletcreatedautomaticallybyGFSChubbyServerHeadnode31数据访问方式32数据写的流程任何对子表的写操作都会记录到一个存储在GFS之上的commitlog中每个子表服务器上所有子表变化对应于一个commitlog新的数据存储到子表服务器的内存(memtable)中次压缩旧数据存储在SSTable中,而新数据存放在memtable中当memtable体积超过一定阈值,将形成SSTable,并写入GFS每个tablet对应多个SSTable33合并压缩tablet含有多个SSTable导致查询效率低合并压缩操作读取多个SSTable,创建一个新的SSTable来保持其中的最新数据旧的SSTable删除如果合并压缩操作完成后,tablet只包含一个SSTable,那么该操作也称为主压缩34SSTableSSTable内存表SSTable内存表内存表次压缩次压缩........SSTableSSTable合并压缩....SSTable主压缩数据存储与读取流程35内存表写操作读操作子表日志内存GFSSSTable文件子表服务器故障恢复新的故障子表服务器内存中的memtable丢失恢复方法按照tablet将该服务器对应的日志分片为每个失效tablet分配新的子表服务器新子表服务器读取对应的分段commitlog,并按照日志修改tablet删除commitlog中已实施的内容重新对外提供服务36性能优化局部性群组(LocalityGroup)根据需要,将原本不存储在一起的数据,以列族为单位存储至单独的子表如用户对网站排名、语言等分析信息感兴趣,那么可以将这些列族放至单独的子表,减少无用信息读取,改善存取效率布隆过滤器(BloomFilter)什么是布隆过滤器?判断某个元素是否隶属于集合优点:误判概率低,其存储空间仅为Hash表的1/8至1/4用于判断列键是否位于SSTable中,快速确定某个列键的位置37BigTable小结38Bigtable主服务器Bigtable客户端Bigtable客户端程序库Bigtable子表服务器Bigtable子表服务器Bigtable子表服务器处理数据处理数据处理数据GoogleWorkQueueGFSChubby执行Open()操作负责故障处理及监控保存子表数据及日志负责元数据存储及主服务器的选择执行元数据操作及负载平衡综合讨论Google云计算架构中GFS、MapReduce和BigTable中是否存在集群节点复用的情况?如何复用?节
本文标题:复旦大学高级web技术课件08云计算之Google平台
链接地址:https://www.777doc.com/doc-10674047 .html