Chinaunix首页 | 论坛 | 博客
  • 博客访问: 180114
  • 博文数量: 148
  • 博客积分: 2615
  • 博客等级: 少校
  • 技术积分: 1645
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-23 13:43
文章分类

全部博文(148)

文章存档

2010年(1)

2009年(111)

2008年(36)

我的朋友
最近访客

分类:

2009-01-20 19:37:43

Google是伸缩性的王者。Google一直的目标就是构建高性能高伸缩性的基础组织来支持它们的产品。 平台 Linux 大量语言:Python,Java,C++ 状态 在2006年大约有450,000台廉价服务器 在2005年Google索引了80亿Web页面,现在没有人知道数目 目前在Google有超过200个GFS集群。一个集群可以有1000或者甚至5000台机器。成千上万的机器从运行着5000000000000000字节存储的GFS集群获取数据,集群总的读写吞吐量可以达到每秒40兆字节 目前在Google有6000个MapReduce程序,而且每个月都写成百个新程序 BigTable伸缩存储几十亿的URL,几百千千兆的卫星图片和几亿用户的参数选择 堆栈 Google形象化它们的基础组织为三层架构: 1,产品:搜索,广告,email,地图,视频,聊天,博客 2,分布式系统基础组织:GFS,MapReduce和BigTable 3,计算平台:一群不同的数据中心里的机器 4,确保公司里的人们部署起来开销很小 5,花费更多的钱在避免丢失日志数据的硬件上,其他类型的数据则花费较少 可信赖的存储机制GFS(Google File System) 1,可信赖的伸缩性存储是任何程序的核心需求。GFS就是Google的核心存储平台 2,Google File System - 大型分布式结构化日志文件系统,Google在里面扔了大量的数据 3,为什么构建GFS而不是利用已有的东西?因为可以自己控制一切并且这个平台与别的不一样,Google需要: -跨数据中心的高可靠性 -成千上万的网络节点的伸缩性 -大读写带宽的需求 -支持大块的数据,可能为上千兆字节 -高效的跨节点操作分发来减少瓶颈 4,系统有Master和Chunk服务器 -Master服务器在不同的数据文件里保持元数据。数据以64MB为单位存储在文件系统中。客户端与Master服务器交流来在文件上做元数据操作并且找到包含用户需要数据的那些Chunk服务器 -Chunk服务器在硬盘上存储实际数据。每个Chunk服务器跨越3个不同的Chunk服务器备份以创建冗余来避免服务器崩溃。一旦被Master服务器指明,客户端程序就会直接从Chunk服务器读取文件 6,一个上线的新程序可以使用已有的GFS集群或者可以制作自己的GFS集群 7,关键点在于有足够的基础组织来让人们对自己的程序有所选择,GFS可以调整来适应个别程序的需求 使用MapReduce来处理数据 1,现在你已经有了一个很好的存储系统,你该怎样处理如此多的数据呢?比如你有许多TB的数据存储在1000台机器上。数据库不能伸缩或者伸缩到这种级别花费极大,这就是MapReduce出现的原因 2,MapReduce是一个处理和生成大量数据集的编程模型和相关实现。用户指定一个map方法来处理一个键/值对来生成一个中间的键/值对,还有一个reduce方法来合并所有关联到同样的中间键的中间值。许多真实世界的任务都可以使用这种模型来表现。以这种风格来写的程序会自动并行的在一个大量机器的集群里运行。运行时系统照顾输入数据划分、程序在机器集之间执行的调度、机器失败处理和必需的内部机器交流等细节。这允许程序员没有多少并行和分布式系统的经验就可以很容易使用一个大型分布式系统资源 3,为什么使用MapReduce? -跨越大量机器分割任务的好方式 -处理机器失败 -可以与不同类型的程序工作,例如搜索和广告。几乎任何程序都有map和reduce类型的操作。你可以预先计算有用的数据、查询字数统计、对TB的数据排序等等 4,MapReduce系统有三种不同类型的服务器 -Master服务器分配用户任务到Map和Reduce服务器。它也跟踪任务的状态 -Map服务器接收用户输入并在其基础上处理map操作。结果写入中间文件 -Reduce服务器接收Map服务器产生的中间文件并在其基础上处理reduce操作 5,例如,你想在所有Web页面里的字数。你将存储在GFS里的所有页面抛入MapReduce。这将在成千上万台机器上同时进行并且所有的调整、工作调度、失败处理和数据传输将自动完成 -步骤类似于:GFS -> Map -> Shuffle -> [...]
阅读(348) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~