Transcript Google云计算原理
1 Google云计算背景 分布式文件系统GFS 并行数据处理模型MapReduce 分布式锁服务Chubby 分布式数据库BigTable Google AppEngine Google云计算技术小结 2 Google云计算的背景 3 4 Google和微软之间日益激烈的对立将是一场史诗 般的企业战争,将对两家公司的成功和发展产生重 要影响,并规定着消费者和企业如何工作、购物、 通讯,以及“他们过的数字生活” Google认为这一切将发生在遥远的数据中心中的 服务器,用户可以通过许多有线和无线设备访问这 些服务,这就是所谓的“云计算” 微软也认为未来在于Web,但它的重心仍然是其桌 面PC软件 5 90%计算任务都能够通过“云计算”技术 完成 桌面软件正在向Web软件转型 云计算是开放标准 ,业界不会有公司独裁 中小企业、大学、消费者会相对迅速地转 向基于Web的“云计算”技术 新的赢利模式 ◦ 低廉的云计算给Google带来更多的流量,进而 带来更多的广告收入 Google CEO 埃立克.施米特 承认“云计算”不会在一夜之间普及 ◦ 大公司通常会慢慢地改变自己的习惯 ◦ 其它问题,例如“飞机问题”,以及在不能上网 时用户如何工作。 6 在计算机上安装的传统软件是微软的根本 比尔·盖茨(Bill Gates)接受媒体采访时曾 提出:“我们致力于推动PC成为一切的 孰优孰劣,等待市场检验! 中心” 微软将自身的战略称为“软件加服务” 微软将Google的乐观称作是一厢情愿。 ◦ 利用Web软件收发电子邮件、处理文档和电子 表格、进行协作很方便吗? ◦ 高速宽带连接会象Google断言的那样普及和 可靠吗? ◦ 企业、大学、消费者会让Google保存他们的 资料吗? Microsoft CEO 史蒂夫.鲍尔默 7 应用规模对于系统架构设计的重要性 Google应用的特性 ◦ 海量用户+海量数据 ◦ 需要具备较强的可伸缩性 ◦ 如何又快又好地提供服务? 秘密武器:云计算平台 8 应用向互联 网迁移 数据向互联 网迁移 计算能力向 互联网迁移 存储空间向 互联网迁移 “浏览器=操作系统” 9 SaaS Google Docs PaaS Google App Engine Google Maps Gmail Google Calendar Google Wave ……… 10 Google在线文档 11 Google地图 12 Google邮件 13 Google日历 14 Google Wave ◦ 信息分享、协作、发布平台 15 隶属于PaaS的Google云计算 ◦ 属于部署在云端的应用执行环境 ◦ 支持Python和Java两种语言 ◦ 通过SDK提供Google的各种服务,如图形、MAIL和数据 存储等 ◦ 用户可快速、廉价(可免费使用限定的流量和存储)地部 署自己开发的应用(如创新的网站、游戏等) 16 应用场景特点 应用(功能实现)在云端 存储在云端 计算在云端 17 Google云计算平台技术架构 ◦ ◦ ◦ ◦ 文件存储,Google Distributed File System,GFS 并行数据处理MapReduce 分布式锁Chubby 结构化数据表BigTable Google云计算应用 MapReduce GFS BigTable Chubb y 18 分布式文件系统GFS Google Distributed File System 19 什么是文件系统? ◦ FAT, FAT32, NTFS, EXT, …… ◦ 用于持久地存储数据的系统 通常覆盖在底层的物理存储介质上 ◦ 硬盘、CD、磁带等 数据组织的基本单元:文件 ◦ 具有文件名(1.txt) ◦ 通常支持层次化嵌套(目录结构) 20 文件路径 ◦ 文件与目录的结合,用于定位文件 ◦ 绝对路径,/home/aaron/foo.txt ◦ 相对路径,docs/someFile.doc 规范路径 ◦ 定位文件的最短绝对路径 ◦ /home/aaron/foo.txt, /home/../home/aaron/./foo.txt ◦ 所有规范路径的集合构成了文件系统的目录结构 21 文件系统的存储内容 ◦ 主要内容:用户的实际数据 ◦ 元数据:驱动器元数据与文件元数据 驱动器元数据 文件元数据 • 可用空间 • 文件名 • 格式信息 • 创建者 • 字符集 • 修改者 • …….. • 创建时间 • 修改时间 • ……… 22 文件分块存储 A B C (free space) A B C A (free space) A (free space) C A (free space) A D C A D (free) 23 文件系统设计的考虑因素 ◦ 最小存储单元 较小可减少浪费空间,较大则可提高文件顺序读取速度(随 机访问呢?) ◦ 文件系统的设计目标是提高访问速度还是提高使用率? 文件系统的安全性 ◦ 多用户环境下的文件安全 ◦ 读/写权限分配 ◦ 文件附带访问控制列表(ACL) 文件系统缓存 ◦ 提高文件系统读写效率 24 Google需要一个支持海量存储的文件系统 ◦ 购置昂贵的分布式文件系统与硬件? 是否可以在一堆廉价且不可靠的硬件上构建 可靠的分布式文件系统? 25 为什么不使用当时现存的文件系统? ◦ Google所面临的问题与众不同 不同的工作负载,不同的设计优先级(廉价、不可靠的硬件) ◦ 需要设计与Google应用和负载相符的文件系统 26 硬件出错是正常而非异常 ◦ 系统应当由大量廉价、易损的硬件组成 ◦ 必须保持文件系统整体的可靠性 主要负载是流数据读写 ◦ 主要用于程序处理批量数据,而非与用户的交互或随机读 写 ◦ 数据写主要是“追加写”,“插入写”非常少 需要存储大尺寸的文件 ◦ 存储的文件尺寸可能是GB或TB量级,而且应当能支持存 储成千上万的大尺寸文件 27 将文件划分为若干块(Chunk)存储 ◦ 每个块固定大小(64M) 通过冗余来提高可靠性 ◦ 每个数据块至少在3个数据块服务器上冗余 ◦ 数据块损坏概率? 通过单个master来协调数据访问、元数据存储 ◦ 结构简单,容易保持元数据一致性 无缓存 ◦ Why? 28 单一Master, 若干ChunkServer GFS的架构有什么问题吗? 1、文件存储方式 2、数据读写流程 29 分布式系统设计告诉我们: ◦ 这是单点故障 ◦ 这是性能瓶颈 GFS的解决办法 ◦ 单点故障问题 采用多个(如3个)影子Master节点进行热备,一 旦主节点损坏,立刻选举一个新的主节点服务 30 GFS的解决办法 ◦ 性能瓶颈问题 尽可能减少数据存取中Master的参与程度 不使用Master读取数据,仅用于保存元数据 Simple, and good enough! 客户端缓存元数据 采用大尺寸的数据块(64M) 数据修改顺序交由Primary Chunk Server完成 31 存储元数据 文件系统目录管理与加锁 与ChunkServer进行周期性通信 ◦ 发送指令,搜集状态,跟踪数据块的完好性 数据块创建、复制及负载均衡 ◦ 对ChunkServer的空间使用和访问速度进行负载均衡,平 滑数据存储和访问请求的负载 ◦ 对数据块进行复制、分散到ChunkServer上 ◦ 一旦数据块冗余数小于最低数,就发起复制操作 32 垃圾回收 ◦ 在日志中记录删除操作,并将文件改名隐藏 ◦ 缓慢地回收隐藏文件 ◦ 与传统文件删除相比更简单、更安全 陈旧数据块删除 ◦ 探测陈旧的数据块,并删除 33 采用中心服务器模式 ◦ 可以方便地增加Chunk Server ◦ Master掌握系统内所有Chunk Server的情况,方便进行 负载均衡 ◦ 不存在元数据的一致性问题 34 不缓存数据 ◦ GFS的文件操作大部分是流式读写,不存在大量的重复读 写,使用Cache对性能提高不大 ◦ Chunk Server上的数据存取使用本地文件系统,如果某 个Chunk读取频繁,文件系统具有Cache ◦ 从可行性看,Cache与实际数据的一致性维护也极其复杂 ? 35 在用户态下实现 ◦ 直接利用Chunk Server的文件系统存取Chunk,实现简 单 ◦ 用户态应用调试较为简单,利于开发 ◦ 用户态的GFS不会影响Chunk Server的稳定性 提供专用的访问接口 ◦ 未提供标准的POSIX访问接口 ◦ 降低GFS的实现复杂度 36 GFS的容错机制 ◦ Chunk Server容错 每个Chunk有多个存储副本(通常是3个),分别存储于不通 的服务器上 每个Chunk又划分为若干Block(64KB),每个Block对应一 个32bit的校验码,保证数据正确(若某个Block错误,则转 移至其他Chunk副本) 37 GFS的容错机制 ◦ Master容错 三类元数据:命名空间(目录结构)、Chunk与文件名的映 射以及Chunk副本的位置信息 前两类通过日志提供容错,Chunk副本信息存储于Chunk Server,Master出现故障时可恢复 38 超过50个GFS集群 每个集群包含数千个存储节点 管理着PB(1015Byte)级的数据 巨型、廉价、稳定的数据中心 39 简单的,就是最好的! 40