Google云计算原理与应用(一)

这篇具有很好参考价值的文章主要介绍了Google云计算原理与应用(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。



  Google(谷歌)拥有全球最强大的搜索引擎。除了搜索业务,Google 还有 Google Maps、Google Earth、Gmail、YouTube 等其他业务。这些应用的共性在于数据量巨大,且要面向全球用户提供实时服务,因此 Google 必须解决海量数据存储和快速处理问题。Google 研发出了简单而又高效的技术,让多达百万台的廉价计算机协同工作,共同完成这些任务,这些技术在诞生几年后才被命名为 Google 云计算技术。Google 云计算技术包括:Google 文件系统 GFS、分布式计算编程模型 MapReduce、分布式锁服务 Chubby、分布式结构化数据表 Bigtable、分布式存储系统 Megastore、分布式监控系统 Dapper、海量数据的交互式分析工具 Dremel,以及内存大数据分析系统 PowerDrill 等。

一、Google文件系统GFS

  Google 文件系统(Google File System,GFS)是一个大型的分布式文件系统。它为 Google 云计算提供海量存储,并且与 Chubby、MapReduce 及 Bigtable 等技术结合十分紧密,处于所有核心技术的底层。GFS 不是一个开源的系统,我们仅能从 Google 公布的技术文档来获得相关知识。

  当前主流分布式文件系统有 RedHat 的GFS(Global File System)、IBM 的 GPFS、Sun 的 Lustre 等。这些系统通常用于高性能计算或大型数据中心,对硬件设施条件要求较高。以 Lustre 文件系统为例,它只对元数据管理器 MDS 提供容错解决方案,而对于具体的数据存储节点 OST 来说,则依赖其自身来解决容错的问题。例如,Lustre 推荐 OST 节点采用 RAID 技术或 SAN 存储区域网来容错,但由于 Lustre 自身不能提供数据存储的容错,一旦 OST 发生故障就无法恢复,因此对 OST 的稳定性就提出了相当高的要求,从而大大增加了存储的成本,而且成本会随着规模的扩大线性增长。

  Google GFS 的新颖之处在于它采用廉价的商用机器构建分布式文件系统,同时将 GFS 的设计与 Google 应用的特点紧密结合,简化实现,使之可行,最终达到创意新颖、有用、可行的完美组合。GFS 将容错的任务交给文件系统完成,利用软件的方法解决系统可靠性问题,使存储的成本成倍下降。GFS 将服务器故障视为正常现象,并采用多种方法,从多个角度,使用不同的容错措施,确保数据存储的安全、保证提供不间断的数据存储服务。

(一)系统架构

  GFS 的系统架构如下图所示。GFS 将整个系统的节点分为三类角色:Client(客户端0、Master(主服务器)和 Chunk Server(数据块服务器)。Client 是 GFS 提供给应用程序的访问接口,它是一组专用接口,不遵守 POSIX 规范,以库文件的形式提供。应用程序直接调用这些库函数,并与该库链接在一起。Master 是 GFS 的管理节点,在逻辑上只有一个,它保存系统的元数据,负责整个文件系统的管理,是 GFS 文件系统中的 “大脑” 。Chunk Server 负责具体的存储工作。数据以文件的形式存储在 Chunk Server 上,Chunk Server 的个数可以有多个,它的数目直接决定了GFS 的规模。GFS 将文件按照固定大小进行分块,默认是64MB,每一块称为一个Chunk(数据块),每个 Chunk 都有一个对应的索引号(Index)。

Google云计算原理与应用(一),分布式系统与云计算,云计算,Google,googlecloud,GFS,mapreduce
GFS将整个系统节点分为三类角色:

Google云计算原理与应用(一),分布式系统与云计算,云计算,Google,googlecloud,GFS,mapreduce
GFS的实现机制:

  • 客户端首先访问Master节点,获取交互的Chunk Server信息,然后访问这些Chunk Server,完成数据存取工作。这种设计方法实现了控制流和数据流的分离。
  • Client与Master之间只有控制流,而无数据流,极大地降低了Master的负载。
  • Client与Chunk Server之间直接传输数据流,同时由于文件被分成多个Chunk进行分布式存储,Client可以同时访问多个Chunk Server,从而使得整个系统的I/O高度并行,系统整体性能得到提高。

GFS的特点:

1、采用中心服务器模式

  • 可以方便地增加Chunk Server
  • Master掌握系统内所有Chunk Server的情况,方便进行负载均衡
  • 不存在元数据的一致性问题

2、不缓存数据

  • 文件操作大部分是流式读写,不存在大量重复读写,使用Cache对性能提高不大
  • Chunk Server上数据存取使用本地文件系统从可行性看,Cache与实际数据的一致性维护也极其复杂

3、在用户态下实现

  • 利用POSIX编程接口存取数据降低了实现难度,提高通用性
  • POSIX接口提供功能更丰富
  • 用户态下有多种调试工具
  • Master和Chunk Server都以进程方式运行,单个进程不影响整个操作系统
  • GFS和操作系统运行在不同的空间,两者耦合性降低

4、只提供专用接口

  • 降低了实现的难度。通常与 POSIX 兼容的接口需要在操作系统内核一级实现,而 GFS 是在应用层实现的。
  • 采用专用接口可以根据应用的特点对应用提供一些特殊支持,如支持多个文件并发追加的接口等。
  • 专用接口直接和 Client、 Master、Chunk Server 交互,减少了操作系统之间上下文的切换,降低了复杂度,提高了效率。

(二)容错机制

1、Master容错

  • 命名空间(Name Space),也就是整个文件系统的目录结构。
  • Chunk与文件名的映射表。
  • Chunk副本的位置信息,每一个Chunk默认有三个副本。

Google云计算原理与应用(一),分布式系统与云计算,云计算,Google,googlecloud,GFS,mapreduce
  当Master发生故障时,在磁盘数据保存完好的情况下,可以迅速恢复以上元数据。为了防止Master彻底死机的情况,GFS还提供了Master远程的实时备份。

2、Chunk Server容错

  • GFS采用副本的方式实现Chunk Server的容错
  • 每一个Chunk有多个存储副本(默认为三个)
  • 对于每一个Chunk,必须将所有的副本全部写入成功,才视为成功写入
  • 相关的副本出现丢失或不可恢复等情况,Master自动将该副本复制到其他Chunk Server
  • GFS中的每一个文件被划分成多个Chunk,Chunk的默认大小是64MB
  • 每一个Chunk以Block为单位进行划分,大小为64KB,每一个Block对应一个32bit的校验和

(三)系统管理技术

  GFS 是一个分布式文件系统,包含从硬件到软件的整套解决方案。除了上面提到的 GFS 的一些关键技术外,还有相应的系统管理技术来支持整个 GFS 的应用,这些技术可能不一定为 GFS 独有。

Google云计算原理与应用(一),分布式系统与云计算,云计算,Google,googlecloud,GFS,mapreduce

二、分布式数据处理MapReduce

  MapReduce 是 Google 提出的一个软件架构,是一种处理海量数据的并行编程模式,用于大规模数据集(通常大于1TB)的并行运算。Map(映射)、Reduce(化简)的概念和主要思想,都是从函数式编程语言和矢量编程语言借鉴来的。正是由于 MapReduce 有函数式和矢量编程语言的共性,使得这种编程模式特别适合于非结构化和结构化的海量数据的搜索、挖掘、分析与机器智能学习等。

(一)产生背景

Google云计算原理与应用(一),分布式系统与云计算,云计算,Google,googlecloud,GFS,mapreduce
  Jeffery Dean 设计一个新的抽象模型, 封装并行处理、容错处理、本地化计算、负载均衡的细节,还提供了一个简单而强大的接口。这就是MapReduce。

  MapReduce 这种并行编程模式思想最早是在1995年提出的。与传统的分布式程序设计相比,MapReduce 封装了并行处理、容错处理、本地化计算、负载均衡等细节,还提供了一个简单而强大的接口。MapReduce 把对数据集的大规模操作,分发给一个主节点管理下的各分节点共同完成,通过这种方式实现任务的可靠执行与容错机制。

(二)编程模型

  • Map函数——对一部分原始数据进行指定的操作。每个 Map 操作都针对不同的原始数据,因此 Map 与 Map 之间是互相独立的,这使得它们可以充分并行化。
  • Reduce操作——对每个 Map 所产生的一部分中间结果进行合并操作,每个 Reduce 所处理的 Map 中间结果是互不交叉的,所有 Reduce 产生的最终结果经过简单连接就形成了完整的结果集。

Google云计算原理与应用(一),分布式系统与云计算,云计算,Google,googlecloud,GFS,mapreduce

Map: (in_key, in_value) → {(keyj, valuej) | j = 1…k}
Reduce: (key, [value1,…,valuem]) → (key, final_value)

  • Map输入参数:in_key 和 in_value,它指明了 Map 需要处理的原始数据

  • Map输出结果:一组 <key,value> 对,这是经过 Map 操作后所产生的中间结果

  • Reduce输入参数:(key,[value1,…,valuem])

  • Reduce工作:对这些对应相同 key 的 value 值进行归并处理

  • Reduce输出结果:(key, final_value),所有 Reduce 的结果并在一起就是最终结果

(三)实现机制

Google云计算原理与应用(一),分布式系统与云计算,云计算,Google,googlecloud,GFS,mapreduce
(1)MapReduce 函数首先把输入文件分成M块

(2)分派的执行程序中有一个主控程序 Master

(3)一个被分配了 Map 任务的 Worker 读取并处理相关的输入块

(4)这些缓冲到内存的中间结果将被定时写到本地硬盘,这些数据通过分区函数分成R个区

(5)当 Maste r通知执行 Reduce 的 Worker 关于中间 <key,value> 对的位置时,它调用远程过程,从 Map Worker 的本地硬盘上读取缓冲的中间数据

(6)Reduce Worker 根据每一个唯一中间 key 来遍历所有的排序后的中间数据,并且把 key 和相关的中间结果值集合传递给用户定义的 Reduce 函数

(7)当所有的 Map 任务和 Reduce 任务都完成的时候,Master 激活用户程序

  由于MapReduce在成百上千台机器上处理海量数据,所以容错机制是不可或缺的。总的来说,MapReduce通过重新执行失效的地方来实现容错。

1、Master失效

  Master会周期性地设置检查点(checkpoint),并导出Master的数据。一旦某个任务失效,系统就从最近的一个检查点恢复并重新执行。由于只有一个Master在运行,如果Master失效了,则只能终止整个MapReduce程序的运行并重新开始。

2、Worker失效

  Master会周期性地给Worker发送ping命令,如果没有Worker的应答,则Master认为Worker失效,终止对这个Worker的任务调度,把失效Worker的任务调度到其他Worker上重新执行。

(四)案例分析

第一个步骤

  对原始的数据进行分割(Split),得到N个不同的数据分块。

Google云计算原理与应用(一),分布式系统与云计算,云计算,Google,googlecloud,GFS,mapreduce
第二个步骤

  对每一个数据分块都启动一个Map进行处理。采用桶排序的方法,每个Map中按照首字母将字符串分配到26个不同的桶中。

Google云计算原理与应用(一),分布式系统与云计算,云计算,Google,googlecloud,GFS,mapreduce
第三个步骤

  对于Map之后得到的中间结果,启动26个Reduce。按照首字母将Map中不同桶中的字符串集合放置到相应的Reduce中进行处理。

Google云计算原理与应用(一),分布式系统与云计算,云计算,Google,googlecloud,GFS,mapreduce
  从上述过程可以看出,由于能够实现处理过程的完全并行化,因此利用 MapReduce 处理海量数据是非常适合的。文章来源地址https://www.toymoban.com/news/detail-842816.html

到了这里,关于Google云计算原理与应用(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云计算】云计算八股与云开发核心技术(虚拟化、分布式、容器化)

    【云计算】云计算八股与云开发核心技术(虚拟化、分布式、容器化) 1、云计算的架构(基础设施,平台,软件) 国内做公有云的主要有:腾讯云,阿里云,华为云(对外销售) 做垂直私有云的有:米哈游,字节火山,等等 云计算的三种服务模式(企业卖的东西) IaaS:

    2024年04月23日
    浏览(45)
  • 分布式集群框架——Google文件系统GFS

    Google 文件系统 GFS         Google 文件系统( Google File System , GFS )是一个大型的分布式文件系统。它为 Google 云计算提供海量存储,并且与 Chubby 、 MapReduce 以及 Bigtable 等技术结合十分紧密,处于所有核心技术的底层。 由于 GFS 并不是一个开源的系统,我们仅仅能从 Goog

    2024年02月10日
    浏览(41)
  • 除了上述提到的应用场景,分布式系统在云计算中还有如下一些应用场景

    除了上述提到的应用场景,分布式系统在云计算中还有如下一些应用场景: 大规模视频和图像存储:分布式云存储可以为企业提供大规模视频和图像存储的解决方案,帮助企业存储和管理海量的视频和图像数据,提高数据的可靠性和安全性。 机器学习:在机器学习中,需要

    2024年01月19日
    浏览(46)
  • 大数据技术原理与应用 概念、存储、处理、分析和应用(林子雨)——第三章 分布式文件系统HDFS

    大数据要解决数据存储问题,所以有了分布式文件系统(DFS),但可能不符合当时的一些应用需求,于是谷歌公司开发了GFS(Google file System)。GFS是闭源的,而HDFS是对GFS的开源实现。 1.GFS和DFS有什么区别? GFS(Google File System)和DFS(Distributed File System)都是分布式文件系统,

    2024年02月03日
    浏览(80)
  • 《大数据技术原理与应用(第3版)》期末复习——第三章分布式文件系统HDFS习题

    分布式文件系统的结构 1、 名称节点 (“主节点”): 负责文件和目录的创建、删除和重命名等,同时管理着数据节点和文件块之间的映射关系。 2、 数据节点 (“从节点”): 负责数据的存储和读取。在存储时,由名称节点分配存储位置,然后由客户端把数据直接写入相应

    2024年02月12日
    浏览(47)
  • 1+X 云计算运维与开发(中级)案例实战——分布式部署集群应用商城系统

    学而不思则罔,思而不学则殆。 IP 主机名 节点 192.168.200.10 mycat Mycat 中间件服务节点 192.168.200.20 db1 MariaDB 数据库集群主节点 192.168.200.30 db2 MariaDB 数据库集群从节点 192.168.200.40 zookeeper1 集群节点 192.168.200.50 zookeeper2 集群节点 192.168.200.60 zookeeper3 集群节点 192.168.200.70 redis 消息队

    2023年04月23日
    浏览(67)
  • 分布式链路追踪与云原生可观测性

    Dapper, a Large-Scale Distributed Systems Tracing Infrastructure - Google Dapper,大规模分布式系统的跟踪系统 大规模分布式系统的跟踪系统:Dapper设计给我们的启示 阿里巴巴鹰眼技术解密 - 周小帆 京东云分布式链路追踪在金融场景的最佳实践 分布式链路追踪在字节跳动的实践 可视化全链路

    2024年04月11日
    浏览(33)
  • 分布式系统原理

    高可用是指系统无中断的执行功能的能力,代表了系统的可用程度,是进行系统设计时必须要遵守的准则之一。 而高可用的实现方案,无外乎就是冗余,就存储的高可用而言,问题不在于如何进行数据备份,而在于如何规避数据不一致对业务造成的影响。 对于分布式系统而

    2024年02月05日
    浏览(44)
  • 解析RocketMQ:高性能分布式消息队列的原理与应用

    什么是消息队列 消息队列是一种消息传递机制,用于在应用程序和系统之间传递消息,实现解耦和异步通信。它通过将消息发送到一个中间代理(消息队列),然后由消费者从该队列中获取消息并处理。 RocketMQ简介 RocketMQ是阿里巴巴开源的一款高性能分布式消息队列系统。它

    2024年02月14日
    浏览(50)
  • 分布式光纤测温系统的工作原理及传感过程

    分布式光纤测温系统依据后向散射原理可以分为三种:基于瑞利散射、基于拉曼散射和基于布里渊散射。目前发展比较成熟,且有产品应用于工程的是基于拉曼散射的分布式光纤测温系统。它的传感原理主要依据的是光纤的光时域反射(OTDR)原理和光纤的后向拉曼散射温度效应

    2024年02月07日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包