- 浏览: 130953 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
saieuler:
最近想学,标记一下
Programming.Collective.Intelligence中对常用机器学习算法的总结 -
backsnow:
Primal中,显式计算Hessian矩阵的复杂度为nd^2, ...
svm的复杂度 -
backsnow:
调试运行时报~/workspace/mahout/exampl ...
mahout在eclipse下的开发环境 -
backsnow:
真见鬼,之前中文论文用latex打开变成乱码,把编码改一下再改 ...
Latex简历模板下载位置 -
backsnow:
我在将当前用户加入hadoop组的时候发现原来所属的组不见了, ...
ubuntu中用户组的问题
Google的十大核心技术
作者:互联网的那点事
本系列是基于公开资料对Google App Engine是如何实现的这个话题进行深度探讨。而且在切入Google App Engine之前,首先会对Google的核心技术和其整体架构进行分析,以帮助大家之后更好地理解Google App Engine的实现。
本篇将主要介绍Google的十个核心技术,而且可以分为四大类:
分布式基础设施:GFS,Chubby和Protocol Buffer。
分布式大规模数据处理:MapReduce和Sawzall。
分布式数据库技术:BigTable和数据库Sharding。
数据中心优化技术:数据中心高温化,12V电池和服务器整合。
分布式基础设施
GFS
由于搜索引擎需要处理海量的数据,所以Google的两位创始人Larry Page和Sergey Brin在创业初期设计一套名为“BigFiles”的文件系统,而GFS(全称为“Google File System”)这套分布式文件系统则是“BigFiles”的延续。
首先,介绍它的架构,GFS主要分为两类节点:
Master节点:主要存储与数据文件相关的元数据,而不是Chunk(数据块)。元数据包括一个能将64位标签映射到数据块的位置及其组成文件 的表格,数据块副本位置和哪个进程正在读写特定的数据块等。还有Master节点会周期性地接收从每个Chunk节点来的更新(”Heart- beat”)来让元数据保持最新状态。
Chunk节点:顾名思义,肯定用来存储Chunk,数据文件通过被分割为每个默认大小为64MB的Chunk的方式存储,而且每个Chunk有 唯一一个64位标签,并且每个Chunk都会在整个分布式系统被复制多次,默认为3次。
下图就是GFS的架构图:
图1. GFS的架构图(参片[15])
接着,在设计上,GFS主要有八个特点:
大文件和大数据块:数据文件的大小普遍在GB级别,而且其每个数据块默认大小为64MB,这样做的好处是减少了元数据的大小,能使Master节 点能够非常方便地将元数据放置在内存中以提升访问效率。
操作以添加为主:因为文件很少被删减或者覆盖,通常只是进行添加或者读取操作,这样能充分考虑到硬盘线性吞吐量大和随机读写慢的特点。
支持容错:首先,虽然当时为了设计方便,采用了单Master的方案,但是整个系统会保证每个Master都会有其相对应的复制品,以便于在 Master节点出现问题时进行切换。其次,在Chunk层,GFS已经在设计上将节点失败视为常态,所以能非常好地处理Chunk节点失效的问题。
高吞吐量:虽然其单个节点的性能无论是从吞吐量还是延迟都很普通,但因为其支持上千的节点,所以总的数据吞吐量是非常惊人的。
保护数据:首先,文件被分割成固定尺寸的数据块以便于保存,而且每个数据块都会被系统复制三份。
扩展能力强:因为元数据偏小,使得一个Master节点能控制上千个存数据的Chunk节点。
支持压缩:对于那些稍旧的文件,可以通过对它进行压缩,来节省硬盘空间,并且压缩率非常惊人,有时甚至接近90%。
用户空间:虽然在用户空间运行在运行效率方面稍差,但是更便于开发和测试,还有能更好利用Linux的自带的一些POSIX API。
现在Google内部至少运行着200多个GFS集群,最大的集群有几千台服务器,并且服务于多个Google服务,比如 Google搜索。但由于GFS主要为搜索而设计,所以不是很适合新的一些Google产品,比YouTube、Gmail和更强调大规模索引和实时性的 Caffeine搜索引擎等,所以Google已经在开发下一代GFS,代号为“Colossus”,并且在设计方面有许多不同,比如:支持分布式 Master节点来提升高可用性并能支撑更多文件,chunk节点能支持1MB大小的chunk以支撑低延迟应用的需要。
Chubby
简单的来说,Chubby属于分布式锁服务,通过Chubby,一个分布式系统中的上千个client都能够对于某项资源进行“加锁”或者“解 锁”,常用于BigTable的协作工作,在实现方面是通过对文件的创建操作来实现“加锁”,并基于著名科学家Leslie Lamport的Paxos算法。
Protocol Buffer
Protocol Buffer,是Google内部使用一种语言中立,平台中立和可扩展的序列化结构化数据的方式,并提供java、c++ 和python这三种语言的实现,每一种实现都包含了相应语言的编译器以及库文件,而且它是一种二进制的格式,所以其速度是使用xml进行数据交换的10 倍左右。它主要用于两个方面:其一是RPC通信,它可用于分布式应用之间或者异构环境下的通信。其二是数据存储方面,因为它自描述,而且压缩很方便,所以 可用于对数据进行持久化,比如存储日志信息,并可被Map Reduce程序处理。与Protocol Buffer比较类似的产品还有Facebook的Thrift,而且Facebook号称Thrift在速度上还有一定的优势。
分布式大规模数据处理
MapReduce
首先,在Google数据中心会有大规模数据需要处理,比如被网络爬虫(Web Crawler)抓取的大量网页等。由于这些数据很多都是PB级别,导致处理工作不得不尽可能的并行化,而Google为了解决这个问题,引入了 MapReduce这个编程模型,MapReduce是源自函数式语言,主要通过”Map(映射)”和”Reduce(化简)”这两个步骤来并行处理大规 模的数据集。Map会先对由很多独立元素组成的逻辑列表中的每一个元素进行指定的操作,且原始列表不会被更改,会创建多个新的列表来保存Map的处理结 果。也就意味着,Map操作是高度并行的。当Map工作完成之后,系统会先对新生成的多个列表进行清理(Shuffle)和排序,之后会这些新创建的列表 进行Reduce操作,也就是对一个列表中的元素根据Key值进行适当的合并。
下图为MapReduce的运行机制:
图2. MapReduce的运行机制(参[19])
接下来,将根据上图来举一个MapReduce的例子:比如,通过搜索Spider将海量的Web页面抓取到本地的GFS 集群中,然后Index系统将会对这个GFS集群中多个数据Chunk进行平行的Map处理,生成多个Key为URL,value为html页面的键值对 (Key-Value Map),接着系统会对这些刚生成的键值对进行Shuffle(清理),之后系统会通过Reduce操作来根据相同的key值(也就是URL)合并这些键 值对。
最后,通过MapReduce这么简单的编程模型,不仅能用于处理大规模数据,而且能将很多繁琐的细节隐藏起来,比如自动并行化,负载均衡和机器宕 机处理等,这样将极大地简化程序员的开发工作。MapReduce可用于包括“分布grep,分布排序,web访问日志分析,反向索引构建,文档聚类,机 器学习,基于统计的机器翻译,生成Google的整个搜索的索引“等大规模数据处理工作。Yahoo也推出MapReduce的开源版本Hadoop,而 且Hadoop在业界也已经被大规模使用。
Sawzall
Sawzall可以被认为是构建在MapReduce之上的采用类似Java语法的DSL(Domain-Specific Language),也可以认为它是分布式的AWK。它主要用于对大规模分布式数据进行筛选和聚合等高级数据处理操作,在实现方面,是通过解释器将其转化 为相对应的MapReduce任务。除了Google的Sawzall之外,yahoo推出了相似的Pig语言,但其语法类似于SQL。
分布式数据库技术
BigTable
由于在Google的数据中心存储PB级以上的非关系型数据时候,比如网页和地理数据等,为了更好地存储和利用这些数据,Google开发了一套数 据库系统,名为“BigTable”。BigTable不是一个关系型的数据库,它也不支持关联(join)等高级SQL操作,取而代之的是多级映射的数 据结构,并是一种面向大规模处理、容错性强的自我管理系统,拥有TB级的内存和PB级的存储能力,使用结构化的文件来存储数据,并每秒可以处理数百万的读 写操作。
什么是多级映射的数据结构呢?就是一个稀疏的,多维的,排序的Map,每个Cell由行关键字,列关键字和时间戳三维定位.Cell的内容是一个不 解释的字符串,比如下表存储每个网站的内容与被其他网站的反向连接的文本。 反向的URL com.cnn.www是这行的关键字;contents列存储网页内容,每个内容有一个时间戳,因为有两个反向连接,所以archor的Column Family有两列:anchor: cnnsi.com和anchhor:my.look.ca。Column Family这个概念,使得表可以轻松地横向扩展。下面是它具体的数据模型图:
图3. BigTable数据模型图(参[4])
在结构上,首先,BigTable基于GFS分布式文件系统和Chubby分布式锁服务。其次BigTable也分为两部分:其一是Master节 点,用来处理元数据相关的操作并支持负载均衡。其二是tablet节点,主要用于存储数据库的分片tablet,并提供相应的数据访问,同时tablet 是基于名为SSTable的格式,对压缩有很好的支持。
图4. BigTable架构图(参[15])
BigTable正在为Google六十多种产品和项目提供存储和获取结构化数据的支撑平台,其中包括有Google Print, Orkut,Google Maps,Google Earth和Blogger等,而且Google至少运行着500个BigTable集群。
随着Google内部服务对需求的不断提高和技术的不断地发展,导致原先的BigTable已经无法满足用户的需求,而 Google也正在开发下一代BigTable,名为“Spanner(扳手)”,它主要有下面这些BigTable所无法支持的特性:
支持多种数据结构,比如table,familie,group和coprocessor等。
基于分层目录和行的细粒度的复制和权限管理。
支持跨数据中心的强一致性和弱一致性控制。
基于Paxos算法的强一致性副本同步,并支持分布式事务。
提供许多自动化操作。
强大的扩展能力,能支持百万台服务器级别的集群。
用户可以自定义诸如延迟和复制次数等重要参数以适应不同的需求。
数据库Sharding
Sharding就是分片的意思,虽然非关系型数据库比如BigTable在Google的世界中占有非常重要的地位,但 是面对传统OLTP应用,比如广告系统,Google还是采用传统的关系型数据库技术,也就是MySQL,同时由于Google所需要面对流量非常巨大, 所以Google在数据库层采用了分片(Sharding)的水平扩展(Scale Out)解决方案,分片是在传统垂直扩展(Scale Up)的分区模式上的一种提升,主要通过时间,范围和面向服务等方式来将一个大型的数据库分成多片,并且这些数据片可以跨越多个数据库和服务器来实现水平 扩展。
Google整套数据库分片技术主要有下面这些优点:
扩展性强:在Google生产环境中,已经有支持上千台服务器的MySQL分片集群。
吞吐量惊人:通过巨大的MySQL分片集群能满足巨量的查询请求。
全球备份:不仅在一个数据中心还是在全球的范围,Google都会对MySQL的分片数据进行备份,这样不仅能保护数据,而且方便扩展。
在实现方面,主要可分为两块:其一是在MySQL InnoDB基础上添加了数据库分片的技术。其二是在ORM层的Hibernate的基础上也添加了相关的分片技术,并支持虚拟分片(Virtual Shard)来便于开发和管理。同时Google也已经将这两方面的代码提交给相关组织。
数据中心优化技术
数据中心高温化
大中型数据中心的PUE(Power Usage Effectiveness)普遍在2左右,也就是在服务器等计算设备上耗1度电,在空调等辅助设备上也要消耗一度电。对一些非常出色的数据中心,最多也 就能达到1.7,但是Google通过一些有效的设计使部分数据中心到达了业界领先的1.2,在这些设计当中,其中最有特色的莫过于数据中心高温化,也就 是让数据中心内的计算设备运行在偏高的温度下,Google的能源方面的总监Erik Teetzel在谈到这点的时候说:“普通的数据中心在70华氏度(21摄氏度)下面工作,而我们则推荐80华氏度(27摄氏度)“。但是在提高数据中心 的温度方面会有两个常见的限制条件:其一是服务器设备的崩溃点,其二是精确的温度控制。如果做好这两点,数据中心就能够在高温下工作,因为假设数据中心的 管理员能对数据中心的温度进行正负1/2度的调节,这将使服务器设备能在崩溃点5度之内工作,而不是常见的20度之内,这样既经济,又安全。还有,业界传 言Intel为Google提供抗高温设计的定制芯片,但云计算界的顶级专家James Hamilton认为不太可能,因为虽然处理器也非常惧怕热量,但是与内存和硬盘相比还是强很多,所以处理器在抗高温设计中并不是一个核心因素。同时他也 非常支持使数据中心高温化这个想法,而且期望将来数据中心甚至能运行在40摄氏度下,这样不仅能节省空调方面的成本,而且对环境也很有利。
12V电池
由于传统的UPS在资源方面比较浪费,所以Google在这方面另辟蹊径,采用了给每台服务器配一个专用的12V电池的做 法来替换了常用的UPS,如果主电源系统出现故障,将由该电池负责对服务器供电。虽然大型UPS可以达到92%到95%的效率,但是比起内置电池的 99.99%而言是非常捉襟见肘的,而且由于能量守恒的原因,导致那么未被UPS充分利用的电力会被转化成热能,这将导致用于空调的能耗相应地攀升,从而 走入一个恶性循环。同时在电源方面也有类似的“神来之笔”,普通的服务器电源会同时提供5V和12V的直流电。但是Google设计的服务器电源只输出 12V直流电,必要的转换在主板上进行,虽然这种设计会使主板的成本增加1美元到2美元,但是它不仅能使电源能在接近其峰值容量的情况下运行,而且在铜线 上传输电流时效率更高。
服务器整合
谈到虚拟化的杀手锏时,第一个让人想到肯定是服务器整合,而且普遍能实现1:8的整合率来降低各方面的成本。有趣的是,Google在硬件方面也引 入类似服务器整合的想法,它的做法是在一个机箱大小的空间内放置两台服务器,这些做的好处有很多,首先,减小了占地面积。其次,通过让两台服务器共享诸如 电源等设备,来降低设备和能源等方面的投入。
作者:互联网的那点事
本系列是基于公开资料对Google App Engine是如何实现的这个话题进行深度探讨。而且在切入Google App Engine之前,首先会对Google的核心技术和其整体架构进行分析,以帮助大家之后更好地理解Google App Engine的实现。
本篇将主要介绍Google的十个核心技术,而且可以分为四大类:
分布式基础设施:GFS,Chubby和Protocol Buffer。
分布式大规模数据处理:MapReduce和Sawzall。
分布式数据库技术:BigTable和数据库Sharding。
数据中心优化技术:数据中心高温化,12V电池和服务器整合。
分布式基础设施
GFS
由于搜索引擎需要处理海量的数据,所以Google的两位创始人Larry Page和Sergey Brin在创业初期设计一套名为“BigFiles”的文件系统,而GFS(全称为“Google File System”)这套分布式文件系统则是“BigFiles”的延续。
首先,介绍它的架构,GFS主要分为两类节点:
Master节点:主要存储与数据文件相关的元数据,而不是Chunk(数据块)。元数据包括一个能将64位标签映射到数据块的位置及其组成文件 的表格,数据块副本位置和哪个进程正在读写特定的数据块等。还有Master节点会周期性地接收从每个Chunk节点来的更新(”Heart- beat”)来让元数据保持最新状态。
Chunk节点:顾名思义,肯定用来存储Chunk,数据文件通过被分割为每个默认大小为64MB的Chunk的方式存储,而且每个Chunk有 唯一一个64位标签,并且每个Chunk都会在整个分布式系统被复制多次,默认为3次。
下图就是GFS的架构图:
图1. GFS的架构图(参片[15])
接着,在设计上,GFS主要有八个特点:
大文件和大数据块:数据文件的大小普遍在GB级别,而且其每个数据块默认大小为64MB,这样做的好处是减少了元数据的大小,能使Master节 点能够非常方便地将元数据放置在内存中以提升访问效率。
操作以添加为主:因为文件很少被删减或者覆盖,通常只是进行添加或者读取操作,这样能充分考虑到硬盘线性吞吐量大和随机读写慢的特点。
支持容错:首先,虽然当时为了设计方便,采用了单Master的方案,但是整个系统会保证每个Master都会有其相对应的复制品,以便于在 Master节点出现问题时进行切换。其次,在Chunk层,GFS已经在设计上将节点失败视为常态,所以能非常好地处理Chunk节点失效的问题。
高吞吐量:虽然其单个节点的性能无论是从吞吐量还是延迟都很普通,但因为其支持上千的节点,所以总的数据吞吐量是非常惊人的。
保护数据:首先,文件被分割成固定尺寸的数据块以便于保存,而且每个数据块都会被系统复制三份。
扩展能力强:因为元数据偏小,使得一个Master节点能控制上千个存数据的Chunk节点。
支持压缩:对于那些稍旧的文件,可以通过对它进行压缩,来节省硬盘空间,并且压缩率非常惊人,有时甚至接近90%。
用户空间:虽然在用户空间运行在运行效率方面稍差,但是更便于开发和测试,还有能更好利用Linux的自带的一些POSIX API。
现在Google内部至少运行着200多个GFS集群,最大的集群有几千台服务器,并且服务于多个Google服务,比如 Google搜索。但由于GFS主要为搜索而设计,所以不是很适合新的一些Google产品,比YouTube、Gmail和更强调大规模索引和实时性的 Caffeine搜索引擎等,所以Google已经在开发下一代GFS,代号为“Colossus”,并且在设计方面有许多不同,比如:支持分布式 Master节点来提升高可用性并能支撑更多文件,chunk节点能支持1MB大小的chunk以支撑低延迟应用的需要。
Chubby
简单的来说,Chubby属于分布式锁服务,通过Chubby,一个分布式系统中的上千个client都能够对于某项资源进行“加锁”或者“解 锁”,常用于BigTable的协作工作,在实现方面是通过对文件的创建操作来实现“加锁”,并基于著名科学家Leslie Lamport的Paxos算法。
Protocol Buffer
Protocol Buffer,是Google内部使用一种语言中立,平台中立和可扩展的序列化结构化数据的方式,并提供java、c++ 和python这三种语言的实现,每一种实现都包含了相应语言的编译器以及库文件,而且它是一种二进制的格式,所以其速度是使用xml进行数据交换的10 倍左右。它主要用于两个方面:其一是RPC通信,它可用于分布式应用之间或者异构环境下的通信。其二是数据存储方面,因为它自描述,而且压缩很方便,所以 可用于对数据进行持久化,比如存储日志信息,并可被Map Reduce程序处理。与Protocol Buffer比较类似的产品还有Facebook的Thrift,而且Facebook号称Thrift在速度上还有一定的优势。
分布式大规模数据处理
MapReduce
首先,在Google数据中心会有大规模数据需要处理,比如被网络爬虫(Web Crawler)抓取的大量网页等。由于这些数据很多都是PB级别,导致处理工作不得不尽可能的并行化,而Google为了解决这个问题,引入了 MapReduce这个编程模型,MapReduce是源自函数式语言,主要通过”Map(映射)”和”Reduce(化简)”这两个步骤来并行处理大规 模的数据集。Map会先对由很多独立元素组成的逻辑列表中的每一个元素进行指定的操作,且原始列表不会被更改,会创建多个新的列表来保存Map的处理结 果。也就意味着,Map操作是高度并行的。当Map工作完成之后,系统会先对新生成的多个列表进行清理(Shuffle)和排序,之后会这些新创建的列表 进行Reduce操作,也就是对一个列表中的元素根据Key值进行适当的合并。
下图为MapReduce的运行机制:
图2. MapReduce的运行机制(参[19])
接下来,将根据上图来举一个MapReduce的例子:比如,通过搜索Spider将海量的Web页面抓取到本地的GFS 集群中,然后Index系统将会对这个GFS集群中多个数据Chunk进行平行的Map处理,生成多个Key为URL,value为html页面的键值对 (Key-Value Map),接着系统会对这些刚生成的键值对进行Shuffle(清理),之后系统会通过Reduce操作来根据相同的key值(也就是URL)合并这些键 值对。
最后,通过MapReduce这么简单的编程模型,不仅能用于处理大规模数据,而且能将很多繁琐的细节隐藏起来,比如自动并行化,负载均衡和机器宕 机处理等,这样将极大地简化程序员的开发工作。MapReduce可用于包括“分布grep,分布排序,web访问日志分析,反向索引构建,文档聚类,机 器学习,基于统计的机器翻译,生成Google的整个搜索的索引“等大规模数据处理工作。Yahoo也推出MapReduce的开源版本Hadoop,而 且Hadoop在业界也已经被大规模使用。
Sawzall
Sawzall可以被认为是构建在MapReduce之上的采用类似Java语法的DSL(Domain-Specific Language),也可以认为它是分布式的AWK。它主要用于对大规模分布式数据进行筛选和聚合等高级数据处理操作,在实现方面,是通过解释器将其转化 为相对应的MapReduce任务。除了Google的Sawzall之外,yahoo推出了相似的Pig语言,但其语法类似于SQL。
分布式数据库技术
BigTable
由于在Google的数据中心存储PB级以上的非关系型数据时候,比如网页和地理数据等,为了更好地存储和利用这些数据,Google开发了一套数 据库系统,名为“BigTable”。BigTable不是一个关系型的数据库,它也不支持关联(join)等高级SQL操作,取而代之的是多级映射的数 据结构,并是一种面向大规模处理、容错性强的自我管理系统,拥有TB级的内存和PB级的存储能力,使用结构化的文件来存储数据,并每秒可以处理数百万的读 写操作。
什么是多级映射的数据结构呢?就是一个稀疏的,多维的,排序的Map,每个Cell由行关键字,列关键字和时间戳三维定位.Cell的内容是一个不 解释的字符串,比如下表存储每个网站的内容与被其他网站的反向连接的文本。 反向的URL com.cnn.www是这行的关键字;contents列存储网页内容,每个内容有一个时间戳,因为有两个反向连接,所以archor的Column Family有两列:anchor: cnnsi.com和anchhor:my.look.ca。Column Family这个概念,使得表可以轻松地横向扩展。下面是它具体的数据模型图:
图3. BigTable数据模型图(参[4])
在结构上,首先,BigTable基于GFS分布式文件系统和Chubby分布式锁服务。其次BigTable也分为两部分:其一是Master节 点,用来处理元数据相关的操作并支持负载均衡。其二是tablet节点,主要用于存储数据库的分片tablet,并提供相应的数据访问,同时tablet 是基于名为SSTable的格式,对压缩有很好的支持。
图4. BigTable架构图(参[15])
BigTable正在为Google六十多种产品和项目提供存储和获取结构化数据的支撑平台,其中包括有Google Print, Orkut,Google Maps,Google Earth和Blogger等,而且Google至少运行着500个BigTable集群。
随着Google内部服务对需求的不断提高和技术的不断地发展,导致原先的BigTable已经无法满足用户的需求,而 Google也正在开发下一代BigTable,名为“Spanner(扳手)”,它主要有下面这些BigTable所无法支持的特性:
支持多种数据结构,比如table,familie,group和coprocessor等。
基于分层目录和行的细粒度的复制和权限管理。
支持跨数据中心的强一致性和弱一致性控制。
基于Paxos算法的强一致性副本同步,并支持分布式事务。
提供许多自动化操作。
强大的扩展能力,能支持百万台服务器级别的集群。
用户可以自定义诸如延迟和复制次数等重要参数以适应不同的需求。
数据库Sharding
Sharding就是分片的意思,虽然非关系型数据库比如BigTable在Google的世界中占有非常重要的地位,但 是面对传统OLTP应用,比如广告系统,Google还是采用传统的关系型数据库技术,也就是MySQL,同时由于Google所需要面对流量非常巨大, 所以Google在数据库层采用了分片(Sharding)的水平扩展(Scale Out)解决方案,分片是在传统垂直扩展(Scale Up)的分区模式上的一种提升,主要通过时间,范围和面向服务等方式来将一个大型的数据库分成多片,并且这些数据片可以跨越多个数据库和服务器来实现水平 扩展。
Google整套数据库分片技术主要有下面这些优点:
扩展性强:在Google生产环境中,已经有支持上千台服务器的MySQL分片集群。
吞吐量惊人:通过巨大的MySQL分片集群能满足巨量的查询请求。
全球备份:不仅在一个数据中心还是在全球的范围,Google都会对MySQL的分片数据进行备份,这样不仅能保护数据,而且方便扩展。
在实现方面,主要可分为两块:其一是在MySQL InnoDB基础上添加了数据库分片的技术。其二是在ORM层的Hibernate的基础上也添加了相关的分片技术,并支持虚拟分片(Virtual Shard)来便于开发和管理。同时Google也已经将这两方面的代码提交给相关组织。
数据中心优化技术
数据中心高温化
大中型数据中心的PUE(Power Usage Effectiveness)普遍在2左右,也就是在服务器等计算设备上耗1度电,在空调等辅助设备上也要消耗一度电。对一些非常出色的数据中心,最多也 就能达到1.7,但是Google通过一些有效的设计使部分数据中心到达了业界领先的1.2,在这些设计当中,其中最有特色的莫过于数据中心高温化,也就 是让数据中心内的计算设备运行在偏高的温度下,Google的能源方面的总监Erik Teetzel在谈到这点的时候说:“普通的数据中心在70华氏度(21摄氏度)下面工作,而我们则推荐80华氏度(27摄氏度)“。但是在提高数据中心 的温度方面会有两个常见的限制条件:其一是服务器设备的崩溃点,其二是精确的温度控制。如果做好这两点,数据中心就能够在高温下工作,因为假设数据中心的 管理员能对数据中心的温度进行正负1/2度的调节,这将使服务器设备能在崩溃点5度之内工作,而不是常见的20度之内,这样既经济,又安全。还有,业界传 言Intel为Google提供抗高温设计的定制芯片,但云计算界的顶级专家James Hamilton认为不太可能,因为虽然处理器也非常惧怕热量,但是与内存和硬盘相比还是强很多,所以处理器在抗高温设计中并不是一个核心因素。同时他也 非常支持使数据中心高温化这个想法,而且期望将来数据中心甚至能运行在40摄氏度下,这样不仅能节省空调方面的成本,而且对环境也很有利。
12V电池
由于传统的UPS在资源方面比较浪费,所以Google在这方面另辟蹊径,采用了给每台服务器配一个专用的12V电池的做 法来替换了常用的UPS,如果主电源系统出现故障,将由该电池负责对服务器供电。虽然大型UPS可以达到92%到95%的效率,但是比起内置电池的 99.99%而言是非常捉襟见肘的,而且由于能量守恒的原因,导致那么未被UPS充分利用的电力会被转化成热能,这将导致用于空调的能耗相应地攀升,从而 走入一个恶性循环。同时在电源方面也有类似的“神来之笔”,普通的服务器电源会同时提供5V和12V的直流电。但是Google设计的服务器电源只输出 12V直流电,必要的转换在主板上进行,虽然这种设计会使主板的成本增加1美元到2美元,但是它不仅能使电源能在接近其峰值容量的情况下运行,而且在铜线 上传输电流时效率更高。
服务器整合
谈到虚拟化的杀手锏时,第一个让人想到肯定是服务器整合,而且普遍能实现1:8的整合率来降低各方面的成本。有趣的是,Google在硬件方面也引 入类似服务器整合的想法,它的做法是在一个机箱大小的空间内放置两台服务器,这些做的好处有很多,首先,减小了占地面积。其次,通过让两台服务器共享诸如 电源等设备,来降低设备和能源等方面的投入。
发表评论
-
pageRank计算公式的由来
2011-10-05 14:10 2098经常看到各种介绍pageran ... -
Sphinx Mysql Full-Search速成指南
2011-08-26 11:41 831Sphinx Mysql Full-Searc ... -
mahout在eclipse下的开发环境
2011-07-30 11:27 4778首先将源码转移到~/workspace下,目标文件夹为maho ... -
mahout安装配置
2011-07-27 20:41 1638http://log.medcl.net/item/2011/ ... -
通过实际应用学习hadoop
2011-05-15 18:58 0我首先从ivory这个开源的信息检索研究工具开始研究,对它感兴 ... -
备份记录
2011-04-06 09:13 742/nutch-1.2做了一个备份到~/petrelli/nut ... -
nutch的配置文件理解
2011-03-21 11:55 1173nutch的配置文件我们可以从Crawl.java中看起,在m ... -
自己安装的路径
2011-03-14 22:03 9811,今天在利用nutch和solr集成的环境建立索引时,bin ... -
集成nutch和solr,并加入中文分词的过程
2011-03-04 16:51 9564准备工作 安装nutch 安装solr 加入中文分词 ... -
Setting up Apache Solr in Eclipse(转)
2011-03-02 22:31 1094在eclipse中建立solr工程的时候,遇到的错误快把我 ... -
使用 solr搭建你的全文检索(转)
2011-03-01 09:02 969Solr 是一个可供企业使用的、基于 Lucene 的 ... -
solr配置相关
2011-02-26 14:57 1038首先去官方网站看了一下solr的tutorial文档,里面给出 ... -
推荐的一些想法
2010-11-02 16:29 1017在读写网一篇评论推荐 ... -
少数人的智慧(The Wisdom of the Few) (转)
2010-10-12 20:26 963看 到这么个有吸引力的名字,你不会觉得它是一篇学术论文,但实际 ... -
基于LUCENE实现自己的推荐引擎(转)
2010-10-01 23:37 9091、常用推荐引擎算法问题 1)、相对成熟、完整、现成的开源解 ... -
海量数据分析:Sawzall并行处理(中文版论文)
2010-08-24 16:37 1834Google的工程师为了方便 ... -
MapReduce 中文版论文
2010-08-20 16:51 1209MapReduce 中文版论文 作 ...
相关推荐
无线网络的发展一直是无线通信行业的核心,虽然谷歌尝试通过竞拍700MHz频谱进入市场,但在与传统无线运营商如AT&T和Verizon Wireless的竞争中,其成功的机会不大。这主要是因为传统运营商拥有更丰富的经验和资源,...
### Google的用户体验设计原则 在当今数字化时代,用户体验(UX)设计成为了衡量产品成功与否的重要标准之一。作为全球领先的科技公司之一,Google始终坚持以人为本的设计理念,不断探索和实践着一套独特的用户体验...
PageRank算法是Google用于网页排名的技术,它根据网页之间的链接关系来评估网页的重要性。PageRank算法的优点是独立于查询,可离线计算,但缺点是忽略了网页的时效性,并且可能给予老旧网页过高的排名。 7. ...
报告还指出,区块链数据的不可篡改性和集体维护特性,以及信息的公开透明性,是该技术的核心特点。 综上所述,中国信息通信研究院的行业报告提供了一个关于全球区块链应用未来发展的详细图景。从2017年的报告中我们...
10. PageRank算法:PageRank是Google搜索引擎中的核心算法,用于评估网页的重要性。通过模拟网络用户随机浏览网页的行为,计算每个页面的“排名”,并与链接关系相结合,得出全局的排序结果。 这些算法各有特色,...
以上介绍的十大算法只是众多算法中的一部分,但它们在现代信息技术的发展中扮演着至关重要的角色。无论是数据排序、信号处理、路由选择、加密解密还是网络分析,这些算法都在不断推动着技术的进步和社会的发展。未来...
在探讨Gartner 2020年十大科技趋势时,我们需要对其中涉及的核心概念、技术发展以及其对行业的影响进行深入分析。Gartner作为一家全球知名的信息技术研究和顾问公司,其发布的科技趋势报告对业界有着重要的指导作用...
6. **同济大学计算机前沿技术概论 第4章 - 人工智能.pdf**:人工智能是当今计算机科学的热点,这个章节可能涉及机器学习、深度学习、自然语言处理等AI核心技术,并探讨其在自动驾驶、医疗诊断、图像识别等领域的应用...
### 大数据技术分享:数据挖掘中十大经典算法解析 #### 一、C4.5 算法 C4.5 算法是一种基于决策树的学习算法,由 Ross Quinlan 开发,它是 ID3 算法的一个升级版本。C4.5 算法的核心在于通过构建决策树来进行分类...
PageRank是Google用于网页排名的算法,核心思想是通过网络中的链接关系评估网页的重要性。PageRank算法的优点是完全独立于查询,只依赖于网页间的链接结构,可以离线计算。但它忽略了时效性和新页面的排名问题,旧...
TTS5.0课程体系涵盖了Unix/Linux平台技术、Java EE核心技术、Oracle企业级数据库技术、Android 3G技术、架构级组件编程技术以及主流开源框架等十大核心热点技术。这些技术的深度学习旨在让学员具备全面的IT技能,为...
数据挖掘是一种利用机器学习、统计学和数据库技术提取数据中隐藏知识的过程。数据挖掘十大算法是该领域内影响力和应用范围最广的算法集合,对于数据分析师和数据科学工程师而言,掌握这些算法是必要的技能之一。 1....
云计算是信息技术领域的一项创新,它改变了传统计算模式,提供了...综上所述,云计算的这十大特点共同塑造了其高效、灵活、经济和可靠的服务模式,使其成为当今信息化社会不可或缺的一部分,并持续推动信息技术的发展。
Gartner评选的2010年十大具有战略意义的技术中,云计算位居榜首,反映了其在企业信息技术领域的核心地位。此外,高级分析、客户端计算、绿色IT等技术也因其创新性和实用性被列为重点关注领域。 ### 结论 综上所述...
这篇文档列举了全美最有价值的十大公司,其中包括科技、电信、消费产品、零售、集团企业、互联网、石油和科技行业的领军企业。这些公司的市值反映了它们在市场上的影响力和投资者对其未来盈利能力的信心。 首先,...
1. **PageRank**:这是Google搜索引擎的核心算法之一,用于评估网页的重要性。PageRank的基本思想是,一个网页被其他高质量网页引用的次数越多,其重要性就越高。网页的影响力不仅取决于入链的数量,还取决于这些入...