Google的核心技术.doc

上传人:hw****26 文档编号:3220682 上传时间:2019-05-26 格式:DOC 页数:6 大小:323KB
下载 相关 举报
Google的核心技术.doc_第1页
第1页 / 共6页
Google的核心技术.doc_第2页
第2页 / 共6页
Google的核心技术.doc_第3页
第3页 / 共6页
Google的核心技术.doc_第4页
第4页 / 共6页
Google的核心技术.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、分布式基础设施GFS由于搜索引擎需要处理海量的数据,所以 Google 的两位创始人 Larry Page 和 Sergey Brin在创业初期设计一套名为“BigFiles”的文件系统,而 GFS(全称为“Google File System”)这套分布式文件系统则是“BigFiles”的延续。首先,介绍它的架构,GFS 主要分为两类节点:Master 节点:主要存储与数据文件相关的元数据,而不是 Chunk(数据块) 。元数据包括一个能将 64 位标签映射到数据块的位置及其组成文件的表格,数据块副本位置和哪个进程正在读写特定的数据块等。还有 Master 节点会周期性地接收从每个 Chun

2、k 节点来的更新(”Heart- beat”)来让元数据保持最新状态。 Chunk 节点:顾名思义,肯定用来存储 Chunk,数据文件通过被分割为每个默认大小为64MB 的 Chunk 的方式存储,而且每个 Chunk 有唯一一个 64 位标签,并且每个 Chunk 都会在整个分布式系统被复制多次,默认为 3 次。 下图就是 GFS 的架构图:图 1. GFS 的架构图(参片15)接着,在设计上,GFS 主要有八个特点:大文件和大数据块:数据文件的大小普遍在 GB 级别,而且其每个数据块默认大小为64MB,这样做的好处是减少了元数据的大小,能使 Master 节点能够非常方便地将元数据放置在内

3、存中以提升访问效率。 操作以添加为主:因为文件很少被删减或者覆盖,通常只是进行添加或者读取操作,这样能充分考虑到硬盘线性吞吐量大和随机读写慢的特点。 支持容错:首先,虽然当时为了设计方便,采用了单 Master 的方案,但是整个系统会保证每个 Master 都会有其相对应的复制品,以便于在 Master 节点出现问题时进行切换。其次,在 Chunk 层,GFS 已经在设计上将节点失败视为常态,所以能非常好地处理 Chunk 节点失效的问题。 高吞吐量:虽然其单个节点的性能无论是从吞吐量还是延迟都很普通,但因为其支持上千的节点,所以总的数据吞吐量是非常惊人的。 保护数据:首先,文件被分割成固定尺

4、寸的数据块以便于保存,而且每个数据块都会被系统复制三份。 扩展能力强:因为元数据偏小,使得一个 Master 节点能控制上千个存数据的 Chunk 节点。 支持压缩:对于那些稍旧的文件,可以通过对它进行压缩,来节省硬盘空间,并且压缩率非常惊人,有时甚至接近 90%。 用户空间:虽然在用户空间运行在运行效率方面稍差,但是更便于开发和测试,还有能更好利用 Linux 的自带的一些 POSIX API。 现在 Google 内部至少运行着 200 多个 GFS 集群,最大的集群有几千台服务器,并且服务于多个 Google 服务,比如 Google 搜索。但由于 GFS 主要为搜索而设计,所以不是很适

5、合新的一些 Google 产品,比 YouTube、Gmail 和更强调大规模索引和实时性的 Caffeine 搜索引擎等,所以 Google 已经在开发下一代 GFS,代号为“Colossus”,并且在设计方面有许多不同,比如:支持分布式 Master 节点来提升高可用性并能支撑更多文件,chunk 节点能支持 1MB 大小的 chunk 以支撑低延迟应用的需要。Chubby简单的来说,Chubby 属于分布式锁服务,通过 Chubby,一个分布式系统中的上千个 client都能够对于某项资源进行“加锁”或者“ 解锁”,常用于 BigTable 的协作工作,在实现方面是通过对文件的创建操作来

6、实现“加锁”,并基于著名科学家 Leslie Lamport 的 Paxos 算法。Protocol BufferProtocol Buffer,是 Google 内部使用一种语言中立,平台中立和可扩展的序列化结构化数据的方式,并提供 java、c+ 和 python 这三种语言的实现,每一种实现都包含了相应语言的编译器以及库文件,而且它是一种二进制的格式,所以其速度是使用 xml 进行数据交换的 10 倍左右。它主要用于两个方面:其一是 RPC 通信,它可用于分布式应用之间或者异构环境下的通信。其二是数据存储方面,因为它自描述,而且压缩很方便,所以可用于对数据进行持久化,比如存储日志信息,并

7、可被 Map Reduce 程序处理。与 Protocol Buffer 比较类似的产品还有 Facebook 的 Thrift,而且 Facebook 号称 Thrift 在速度上还有一定的优势。分布式大规模数据处理MapReduce首先,在 Google 数据中心会有大规模数据需要处理,比如被网络爬虫(Web Crawler)抓取的大量网页等。由于这些数据很多都是 PB 级别,导致处理工作不得不尽可能的并行化,而 Google 为了解决这个问题,引入了 MapReduce 这个编程模型,MapReduce 是源自函数式语言,主要通过“Map (映射) “和“Reduce(化简)“ 这两个步

8、骤来并行处理大规模的数据集。Map 会先对由很多独立元素组成的逻辑列表中的每一个元素进行指定的操作,且原始列表不会被更改,会创建多个新的列表来保存 Map 的处理结果。也就意味着,Map 操作是高度并行的。当 Map 工作完成之后,系统会先对新生成的多个列表进行清理(Shuffle)和排序,之后会这些新创建的列表进行 Reduce 操作,也就是对一个列表中的元素根据 Key值进行适当的合并。下图为 MapReduce 的运行机制:图 2. MapReduce 的运行机制(参19)接下来,将根据上图来举一个 MapReduce 的例子:比如,通过搜索 Spider 将海量的 Web页面抓取到本地

9、的 GFS 集群中,然后 Index 系统将会对这个 GFS 集群中多个数据 Chunk进行平行的 Map 处理,生成多个 Key 为 URL,value 为 html 页面的键值对(Key-Value Map) ,接着系统会对这些刚生成的键值对进行 Shuffle(清理) ,之后系统会通过 Reduce 操作来根据相同的 key 值(也就是 URL)合并这些键值对。最后,通过 MapReduce 这么简单的编程模型,不仅能用于处理大规模数据,而且能将很多繁琐的细节隐藏起来,比如自动并行化,负载均衡和机器宕机处理等,这样将极大地简化程序员的开发工作。MapReduce 可用于包括“分布 gre

10、p,分布排序,web 访问日志分析,反向索引构建,文档聚类,机器学习,基于统计的机器翻译,生成 Google 的整个搜索的索引“等大规模数据处理工作。Yahoo 也推出 MapReduce 的开源版本 Hadoop,而且 Hadoop 在业界也已经被大规模使用。SawzallSawzall 可以被认为是构建在 MapReduce 之上的采用类似 Java 语法的 DSL(Domain-Specific Language) ,也可以认为它是分布式的 AWK。它主要用于对大规模分布式数据进行筛选和聚合等高级数据处理操作,在实现方面,是通过解释器将其转化为相对应的MapReduce 任务。除了 Go

11、ogle 的 Sawzall 之外,yahoo 推出了相似的 Pig 语言,但其语法类似于 SQL。分布式数据库技术BigTable由于在 Google 的数据中心存储 PB 级以上的非关系型数据时候,比如网页和地理数据等,为了更好地存储和利用这些数据,Google 开发了一套数据库系统,名为“BigTable”。BigTable 不是一个关系型的数据库,它也不支持关联(join )等高级 SQL 操作,取而代之的是多级映射的数据结构,并是一种面向大规模处理、容错性强的自我管理系统,拥有 TB级的内存和 PB 级的存储能力,使用结构化的文件来存储数据,并每秒可以处理数百万的读写操作。什么是多级

12、映射的数据结构呢?就是一个稀疏的,多维的,排序的 Map,每个 Cell 由行关键字,列关键字和时间戳三维定位Cell 的内容是一个不解释的字符串,比如下表存储每个网站的内容与被其他网站的反向连接的文本。 反向的 URL n.www 是这行的关键字;contents 列存储网页内容,每个内容有一个时间戳,因为有两个反向连接,所以 archor的 Column Family 有两列:anchor: 和 anchhor:my.look.ca。Column Family 这个概念,使得表可以轻松地横向扩展。下面是它具体的数据模型图:图 3. BigTable 数据模型图(参4)在结构上,首先,Bi

13、gTable 基于 GFS 分布式文件系统和 Chubby 分布式锁服务。其次BigTable 也分为两部分:其一是 Master 节点,用来处理元数据相关的操作并支持负载均衡。其二是 tablet 节点,主要用于存储数据库的分片 tablet,并提供相应的数据访问,同时tablet 是基于名为 SSTable 的格式,对压缩有很好的支持。图 4. BigTable 架构图(参15)BigTable 正在为 Google 六十多种产品和项目提供存储和获取结构化数据的支撑平台,其中包括有 Google Print, Orkut,Google Maps,Google Earth 和 Blogger

14、 等,而且 Google 至少运行着 500 个 BigTable 集群。随着 Google 内部服务对需求的不断提高和技术的不断地发展,导致原先的 BigTable 已经无法满足用户的需求,而 Google 也正在开发下一代 BigTable,名为“Spanner(扳手) ”,它主要有下面这些 BigTable 所无法支持的特性:支持多种数据结构,比如 table,familie ,group 和 coprocessor 等。 基于分层目录和行的细粒度的复制和权限管理。 支持跨数据中心的强一致性和弱一致性控制。 基于 Paxos 算法的强一致性副本同步,并支持分布式事务。 提供许多自动化操作

15、。 强大的扩展能力,能支持百万台服务器级别的集群。 用户可以自定义诸如延迟和复制次数等重要参数以适应不同的需求。 数据库 ShardingSharding 就是分片的意思,虽然非关系型数据库比如 BigTable 在 Google 的世界中占有非常重要的地位,但是面对传统 OLTP 应用,比如广告系统,Google 还是采用传统的关系型数据库技术,也就是 MySQL,同时由于 Google 所需要面对流量非常巨大,所以 Google 在数据库层采用了分片(Sharding)的水平扩展(Scale Out)解决方案,分片是在传统垂直扩展(Scale Up)的分区模式上的一种提升,主要通过时间,范

16、围和面向服务等方式来将一个大型的数据库分成多片,并且这些数据片可以跨越多个数据库和服务器来实现水平扩展。Google 整套数据库分片技术主要有下面这些优点:扩展性强:在 Google 生产环境中,已经有支持上千台服务器的 MySQL 分片集群。 吞吐量惊人:通过巨大的 MySQL 分片集群能满足巨量的查询请求。 全球备份:不仅在一个数据中心还是在全球的范围,Google 都会对 MySQL 的分片数据进行备份,这样不仅能保护数据,而且方便扩展。 在实现方面,主要可分为两块:其一是在 MySQL InnoDB 基础上添加了数据库分片的技术。其二是在 ORM 层的 Hibernate 的基础上也添

17、加了相关的分片技术,并支持虚拟分片(Virtual Shard)来便于开发和管理。同时 Google 也已经将这两方面的代码提交给相关组织。数据中心优化技术数据中心高温化大中型数据中心的 PUE(Power Usage Effectiveness)普遍在 2 左右,也就是在服务器等计算设备上耗 1 度电,在空调等辅助设备上也要消耗一度电。对一些非常出色的数据中心,最多也就能达到 1.7,但是 Google 通过一些有效的设计使部分数据中心到达了业界领先的1.2,在这些设计当中,其中最有特色的莫过于数据中心高温化,也就是让数据中心内的计算设备运行在偏高的温度下,Google 的能源方面的总监 E

18、rik Teetzel 在谈到这点的时候说:“普通的数据中心在 70 华氏度(21 摄氏度)下面工作,而我们则推荐 80 华氏度(27 摄氏度) “。但是在提高数据中心的温度方面会有两个常见的限制条件:其一是服务器设备的崩溃点,其二是精确的温度控制。如果做好这两点,数据中心就能够在高温下工作,因为假设数据中心的管理员能对数据中心的温度进行正负 1/2 度的调节,这将使服务器设备能在崩溃点 5 度之内工作,而不是常见的 20 度之内,这样既经济,又安全。还有,业界传言Intel 为 Google 提供抗高温设计的定制芯片,但云计算界的顶级专家 James Hamilton 认为不太可能,因为虽然

19、处理器也非常惧怕热量,但是与内存和硬盘相比还是强很多,所以处理器在抗高温设计中并不是一个核心因素。同时他也非常支持使数据中心高温化这个想法,而且期望将来数据中心甚至能运行在 40 摄氏度下,这样不仅能节省空调方面的成本,而且对环境也很有利。12V 电池由于传统的 UPS 在资源方面比较浪费,所以 Google 在这方面另辟蹊径,采用了给每台服务器配一个专用的 12V 电池的做法来替换了常用的 UPS,如果主电源系统出现故障,将由该电池负责对服务器供电。虽然大型 UPS 可以达到 92%到 95%的效率,但是比起内置电池的 99.99%而言是非常捉襟见肘的,而且由于能量守恒的原因,导致那么未被

20、UPS 充分利用的电力会被转化成热能,这将导致用于空调的能耗相应地攀升,从而走入一个恶性循环。同时在电源方面也有类似的“神来之笔”,普通的服务器电源会同时提供 5V 和 12V 的直流电。但是 Google 设计的服务器电源只输出 12V 直流电,必要的转换在主板上进行,虽然这种设计会使主板的成本增加 1 美元到 2 美元,但是它不仅能使电源能在接近其峰值容量的情况下运行,而且在铜线上传输电流时效率更高。服务器整合谈到虚拟化的杀手锏时,第一个让人想到肯定是服务器整合,而且普遍能实现 1:8 的整合率来降低各方面的成本。有趣的是,Google 在硬件方面也引入类似服务器整合的想法,它的做法是在一个机箱大小的空间内放置两台服务器,这些做的好处有很多,首先,减小了占地面积。其次,通过让两台服务器共享诸如电源等设备,来降低设备和能源等方面的投入。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。