`
liuxinglanyue
  • 浏览: 565260 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

云计算背后的秘密(2)-GFS(转)

阅读更多

由于周日Linode在加州机房出现停电事故,所以这两天PeopleYun没法访问,在这里向大家表示歉意

由于搜索引擎需要处理海量的数据,所以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的架构图:

GFS

图1. GFS的架构图

接着,在设计上,GFS主要有八个特点:

  1.  
    1. 大文件和大数据块:数据文件的大小普遍在GB级别,而且其每个数据块默认大小为64MB,这样做的好处是减少了元数据的大小,从而能使Master节点能够非常方便地将元数据都放置在内存中以提升访问效率。
    2. 操作以添加为主:文件很少会被删减或者覆盖,通常只是进行添加或者读取操作,这样能充分考虑到硬盘线性吞吐量大,但随机读写慢的特点。
    3. 支持容错:首先,虽然当时为了设计方便,采用了单Master的方案,但是整个系统会保证Master节点会有其相对应的替身(Shadow),以便于当Master节点出现问题时进行切换。其次,在Chunk层,GFS已经在设计上将节点失败视为常态,所以能非常好地处理Chunk节点失效的问题。
    4. 高吞吐量:虽然以单个节点来看,GFS的性能无论是从吞吐量还是延迟都很普通,但因为其支持上千的节点,所以总的数据吞吐量是非常惊人的。
    5. 保护数据:文件被分割成固定尺寸的数据块以便于保存,而且每个数据块都会被系统至少复制三份。
    6. 扩展能力强:因为元数据偏小,使得一个Master节点能控制和管理上千个存数据的Chunk节点。
    7. 支持压缩:对于那些稍旧的文件,可以通过对它进行压缩,来节省硬盘空间,并且压缩率非常惊人,有时甚至接近90%。
    8. 基于用户空间:GFS主要运行于系统的用户空间(User Time),虽然在效率方面,用户空间比内核空间略低,但是更便于开发和测试,还有,就是能更好利用Linux的自带的一些POSIX API。

 

优劣点

由于GFS主要是为了存储海量搜索数据而设计的,所以它在吞吐量(Throughput)和伸缩性(Scalability)这两方面表现非常优异,可谓业界的“翘楚”,但是由于其主要以64MB数据块形式存储,所以在随机访问方面速度并不优秀,虽然这点可谓是它的“软肋”,但是这本身也是其当初为了吞吐量和伸缩性所做的权衡。

相关产品

和MapReduce相似的是,GFS在开源界也有其对应的产品,最出名的是HDFS分布式文件系统,在功能和设计上,HDFS从GFS身上借鉴了很多东西,而且由于其本身就是Hadoop系列的一部分,所以它为了更好Hadoop这个MapReduce框架做了很多优化。

实际用例

现在Google内部至少运行着200多个GFS集群,最大的集群有几千台服务器,数据量是PB级别的,并且服务于多个Google服务,包括Google搜索和Google Earth等。同时,在最近几年,由于上面提到的高延迟问题,所以GFS并不很适合新的一些Google产品,比YouTube、Gmail和非常强调实时性的Caffeine搜索引擎等,所以Google已经在开发下一代GFS,代号为“Colossus”,并且在设计方面有许多不同,比如,支持分布式Master节点来提升高可用性并支撑更多文件和chunk节点能支持1MB大小的chunk以支撑低延迟应用的需要等,希望等Colossus成熟的时候,Google也能像当初GFS那样,将其设计的细节和经验拿出来和大家分享。

分享到:
评论

相关推荐

    云计算技术的现状-云计算技术所面临的问题.pdf

    2. 云计算技术的特点 - 可靠性:通过冗余设计确保数据处理的可靠性,减少错误发生。 - 服务性:提供便捷的数字化服务,用户无需了解技术细节即可享用。 - 高可用性:在存储和计算能力上表现出色,智能检测和故障...

    云计算三大论文(GFS,MapReduce,BigTable),中文及英文

    本文将深入探讨云计算领域的三篇经典论文:Google File System (GFS)、MapReduce以及BigTable,这三者构成了现代云服务的基础架构。 GFS(Google File System)是由Google在2003年发表的一篇开创性论文,它描述了一...

    分布式系统与云计算复习资料2

    - MapReduce、Chubby和BigTable是Google云计算平台的一部分,而EC2属于Amazon的云计算服务。 21. GFS特点: - GFS采用中心服务器模式,不采用边缘服务器模式,且数据不缓存在客户端。 22. GFS实现原因: - 在...

    (完整word)云计算与大数据概论-教学大纲.doc

    第三章将聚焦于主流的云计算平台,如Google的云计算体系,包括GFS文件系统和Google App Engine;亚马逊的AWS服务,如EC2和弹性云;微软的Azure;阿里巴巴、百度和腾讯的云服务。通过对这些平台的了解,学生可以对比...

    云计算快速入门笔记 - 。。。。。。

    在技术实现层面,Google的云计算技术包括Google文件系统(GFS)、MapReduce和Chubby。GFS是一个大规模分布式文件系统,通过主服务器Master和数据块服务器ChunkServer,实现高可用性和容错性。MapReduce是并行数据...

    云计算与大数据技术-Hadoop分布式大数据系统.ppt

    6.2.1 HDFS文件系统的原型GFS 6.2.2 HDFS文件的基本结构 6.2.3 HDFS的存储过程 6.3 MapReduce编程框架 6.3.1 MapReduce的发展历史 6.3.2 MapReduce的基本工作过程 6.3.3 LISP中的MapReduce 6.3.4 MapReduce...

    RHEL5-GFS2

    本书提供有关配置及维护红帽 GFS2(红帽全局文件系统 2)的信息。

    Google三篇论文-GFS英文版.pdf

    ### Google三篇论文-GFS知识点解析 #### 一、引言与背景 《Google三篇论文-GFS英文版.pdf》是一份重要的技术文档,详细介绍了Google文件系统(Google File System, GFS)的设计原理和技术特点。这篇论文由Google...

    分布式文件系统-GFS1

    分布式文件系统-GFS1是一种专为大规模数据处理设计的文件系统,由Google开发,用于支撑其内部的大数据处理任务,如MapReduce和Bigtable。GFS的核心设计理念是基于大规模集群环境,采用简单的设计原则,以处理硬件...

    云计算的架构-–-从技术角度剖析云计算-.doc.doc

    云计算的架构是一个复杂而精细的设计,它涉及到多个层面的技术整合,以实现高效、灵活和可扩展的计算服务。本文将从技术角度详细解析这一架构,包括显示层、中间件层、基础设施层以及管理层。 首先,**显示层**是...

    linux-gfs集群

    基于linux的gfs文件系统集群手册,有兴趣的可以看看

    Google-GFS,Bigtable,Mapreduce三大论文英文原版+中文翻译

    《Google-GFS》、《Bigtable》和《MapReduce》是Google公司发布的三篇具有里程碑意义的学术论文,它们揭示了Google如何处理和管理海量数据的内部机制,为分布式计算和大数据处理领域奠定了坚实的基础。这三篇论文的...

    pcp-pmda-gfs2-5.3.5-2.el8.aarch64.rpm

    官方离线安装包,测试可用。请使用rpm -ivh [rpm完整包名] 进行安装

    pcp-pmda-gfs2-5.3.0-2.el8.aarch64.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    pcp-pmda-gfs2-5.3.4-2.el8.aarch64.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    pcp-pmda-gfs2-5.3.1-2.el8.aarch64.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    pcp-pmda-gfs2-5.3.5-2.el8.x86_64.rpm

    官方离线安装包,测试可用。请使用rpm -ivh [rpm完整包名] 进行安装

    pcp-pmda-gfs2-5.3.4-2.el8.x86_64.rpm

    官方离线安装包,测试可用。请使用rpm -ivh [rpm完整包名] 进行安装

    pcp-pmda-gfs2-5.3.0-2.el8.x86_64.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    pcp-pmda-gfs2-5.3.4-2.el8.ppc64le.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

Global site tag (gtag.js) - Google Analytics