当前位置:文档之家› google云计算

google云计算

1简介
1.1什么是google云计算?
Google的云计算技术实际上是针对Google特定的网络应用程序而定制的。

针对内部网络数据规模超大的特点,Google提出了一整套基于分布式并行集群方式的基础架构,利用软件的能力来处理集群中经常发生的节点失效问题。

1.2Google云计算平台
Google 提供了一个名为App Engine 的云计算平台,它基于的是Google 早就建立起来的底层平台。

这个平台包括GFS(Google File System)和Bigtable(构建于GFS 之上的数据库系统)。

Google App Engine 内的编程采用的是Python。

程序员用Python 编写应用程序,然后再在App Engine 框架上运行。

除Python 外的其他语言在将来也会得到支持。

出于开发的需要,可以下载App Engine 环境的一个本地仿真程序。

App Engine 可免费使用并且包括多达500 MB 的存储及足够的CPU 带宽来满足每天5 百万次页面浏览。

Google App Engine 提供了一些有用的基础设施,比如源自GFS 的数据存储和一个memcache实现。

然而,它并不提供开箱即用的排队机制。

不过,有了这样一个纯Python 的编程环境,就可以在App Engine 之上很容易地创建您自已的JMS 替代。

这个数据存储很适合于混合应用程序,并且只需很少的Python 编程就可以打造出一个面向您的队列的RESTful式接口。

2原理
2.1 GFS(Google文件系统)
2.1.1特点
采用廉价的商用机器构建分布式文件系统,将容错的任务交由文件系统来完成,利用软件的方法解决系统可靠性问题,从而使存储的成本下降;保证在频繁的故障中确保数据存储的安全,保证提供不间断的数据存储服务。

2.1.2系统架构
系统节点分为三类角色:Client,Master,Chunk Server
client为提供给外部的访问接口,为一组专业接口,以库文件方式提供。

master为管理节点,逻辑上只有一个,保存系统的元数据,负责整个文件系统的管理,as the head of GFS。

chunk server为具体负责存储工作的节点,数据以文件的方式存在在这类节点上,存储以块的方式划分,默认64MB,每个块都有对应的索引。

client和master之间只有控制流。

client和Chunk Server之间为数据流,而且一个Client可以同时跟多个Chunk Server同时通信,可以保证并行高效处理。

GFS采取中心服务器模式,即所有的GFS元数据都在Master管理,可以方便增加、调整Chunk Server;但是可能Master本身就会成为瓶颈。

对应的措施如下:控制元数据的规模,对Master进行远程备份,控制信息和数据分流等。

GFS只缓冲Master的元数据(直接在内存中进行,并且采用压缩机制降低内存空间),不缓冲Chunk Server的数据
针对GFS的文件系统,不是类似Linux的文件系统采用内核态实现的,而是在用户态下实现,具有如下好处:
1:直接利用POSIX编程接口就可以存储数据,而且接口丰富
2:便于调试
3:用户态下的Master和Chunk Server可以以进程的方式运行,单个进程不会影响到整个操作系统,可以很好的优化
4:有效降低GFS跟OS的耦合度,支持单独升级。

GFS采用的是专用文件系统访问接口,主要提供应用层次的实现,以方便应用来提供一些特殊支持;可以减少操作系统上下文的切换。

google的GFS的设计思路,一句话,根据应用的需求来设计分布式文件的系统的架构和接口,减少系统的耦合,减少调用复杂度。

2.2分布式编程模型MapReduce
Map (映射),Reduce(化简)具有函数式和矢量编程语言的共性,一般使用于非结构化海量数据的搜索、挖掘、分析和机器学习等。

MapReduce封装了并行处理、容错处理、本地化计算、负载均衡等细节,同时提供简单而强大的接口;即对数据集的大规模操作分发给一个主节点管理下的各个分节点来共同完成,并且依次实现任务的可靠执行与容错机制。

其实思想和简单,比如日常的一个公司,有N的Team,一个Project来后,就被划分给N份,分给每个Team由至少PM,至少》2个Pair的开发人员,每个Team 的任务再次进行拆分,以分派给每个Team的人员,在一个Team的内容完成后,首先在Team内部进行Reduce,然后将N个Team的Reduce的结果再Reduce就得到了最终的Project的输出结果;每个Team的PM就是主节点或者次级主节点,如果一个Team的成员请假,PM 就必须及时的调整安排任务,保证任务的容错性。

2.2.1编程模型
一个Map函数就是对一部分原始数据进行指定的操作
每个Map操作都针对不同的原始数据
不同的Map之间相互独立
一个Reduce就是对每个Map产生的结果进行合并操作
而每个Reduce处理的Map中间结果也是互不交叉的
所有的Reduce的结果经过简单的连接就形成了完整的结果集
2.2.2算法
Map:
(in_key,in_value) >----Map------> {(keyj,valuej) |j=1....k }
Reduce:
(key,[value1,...valuem])>------Reduce------>(key,final_value)
注意:Map的输入参数可以跟Reduce的输出结果类似,Reduce的输出参数是多个Map数据结果的合并
2.2.3实现机制
针对具体的实现过程中,需要有至少两类工作节点,两个管理节点
1:Map工作节点,Reduce工作节点
2:Map管理节点,Reduce管理节点
上述的工作节点必须考虑灵活的任务分派和调整机制,保证容错机制
2.3分布式结构化数据存储系统BigTable
构建于上述两项基础之上的第三个云计算平台就是Google关于将数据库系统扩展到分布式平台上的BigTable系统。

很多应用程序对于数据的组织还是非常有规则的。

一般来说,数据库对于处理格式化的数据还是非常方便的,但是由于关系数据库很强的一致性要求,很难将其扩展到很大的规模。

为了处理Google内部大量的格式化以及半格式化数据,Google 构建了弱一致性要求的大规模数据库系统BigT able。

据称,现在有很多Google的应用程序建立在BigT able之上,例如Search History、Maps、Orkut和RSS阅读器等。

3使用云平台的好处
1:把所有数据放到云端,不必担心数据丢失。

2:所有的计算资源集中起来,并由软件实现自动管理,无需人为参与。

3:可以节约成本,不用投资购买昂贵的硬件设备,负担频繁地维护与升级,企业不需要建立自己的数据中心、大型机房、服务器中心等并相应减少硬软件的运行维护费用。

4如何加入google云计算平台
只需创建一个google App Engine账户即可上传应用程序,
您可以从位于以下网址的App Engine 管理控制台创建以及管理App Engine 网络应用程序:/
每个Google App Engine 应用程序都会拥有足够的CPU、带宽和存储空间来免费支持每月五百万次左右的页面访问量。

开发人员如果希望自己的应用程序不受这些免费配额限制,可以为应用程序启用付费并使用Google Checkout 设置每日资源预算,这样便可在需要额外资源的时候购买资源。

App Engine 始终可以免费开始使用,并且在您为应用程序启用付费后,免费配额之内的所有资源的使用将继续保持免费。

计算资源的价格如下:。

相关主题