Google业务 Ø全球最大搜索引擎、Google Maps、Google Earth、Gmail、YouTube等——特点:数据量庞大、面向全球用户提供实时服务

Google云计算平台技术架构

¢文件存储,Google Distributed File System,GFS

¢并行数据处理MapReduce

¢分布式锁Chubby

¢分布式结构化数据表BigTable

¢分布式存储系统Megastore

¢分布式监控系统Dapper

一、Google文件系统GFS

分三大块来讲的,系统架构、容错机制、系统管理技术

1、系统架构

Client客户端):应用程序的访问接口

Master(主服务器):管理节点,在逻辑上只有一个,保存系统的元数据,负责整个文件系统的管理

ChunkServer(数据块服务器):负责具体的存储工作。数据以文件的形式存储在ChunkServer上

关于上面的架构图之前看到过一篇博客,上面对其机架感知(Rack Awareness)机制有一个简单的表示,很可惜博客竟未找到,大致是:

对于Rack Awareness——Rack1:Chunk1 、Chunk4、Chunk7……Rack n:Chunk2、Chunk 5、Chunk6……

而对于ns:file——Chunk1、Chunk2……

这样,两者一结合,查找文件块、甚至对相对的查找的优化等比较方便

GFS特点:

采用中心服务器模式

u可以方便地增加Chunk Server

u Master掌握系统内所有Chunk Server的情况,方便进行负载均衡

u不存在元数据的一致性问题

不缓存数据

˜文件操作大部分是流式读写,不存在大量重复读写,使用Cache对性能提高不大

˜ Chunk Server上数据存取使用本地文件系统,若读取频繁,系统具有Cache

˜从可行性看,Cache与实际数据的一致性维护也极其复杂

在用户态下实现

¨利用POSIX编程接口存取数据降低了实现难度,提高通用性

¨POSIX接口提供功能更丰富

¨用户态下有多种调试工具

¨Master和Chunk Server都以进程方式运行,单个进程不影响整个操作系统

¨GFS和操作系统运行在不同的空间,两者耦合性降低

只提供专用接口

¢降低实现的难度

¢对应用提供一些特殊支持

¢降低复杂度

2、容错机制

Master容错

Name Space,文件系统目录结构

Chunk与文件名的映射

Chunk副本的位置信息(默认有三个副本)

单个Master,对于前两种元数据,GFS通过操作日志来提供容错功能

第三种元数据信息保存在各个 ChunkServer 上, Master 故障时, 磁盘恢复

GFS还提供了Master远程的实时备份,防止Master彻底死机的情况

Chunk Server容错

u采用副本方式实现Chunk Server容错

¨每一个Chunk有多个存储副本(默认为三个),分布存储在不同的Chunk Server上用户态的GFS不会影响Chunk Ser

ver的稳定性

¨副本的分布策略需要考虑多种因素,如网络的拓扑、机架的分布、磁盘的利用率等

¨对于每一个Chunk,必须将所有的副本全部写入成功,才视为成功写入

尽管一份数据需要存储三份,好像磁盘空间的利用率不高,但综合比较多种因素,加之磁盘的成本不断下降,采用副本

无疑是最简单、最可靠、最有效,而且实现的难度也最小的一种方法

¨ GFS中的每一个文件被划分成多个Chunk,Chunk的默认大小是64MB

¨Chunk Server存储的是Chunk的副本,副本以文件的形式进行存储
¨ 每个Chunk又划分为若干Block(64KB),每个Block对应一个32bit的校验码,保证数据正确(若某个Block错误,
则转移至其他Chunk副本)
系统管理技术

二、分布式数据处理MapReduce

1、产生背景

MapReduce

Ø一种处理海量数据的并行编程模式,用于大规模数据集(通常大于1TB)的并行运算。

Ø“Map(映射)”、“Reduce(化简)”的概念和主要思想,都是从函数式编程语言(

适合于结构化和非结构化的海量
数据的搜索、挖掘、分析与机器智能学习等)和矢量编程语言借鉴

u计算问题简单,但求解困难

待处理数据量巨大(PB级),只有分布在成百上千个节点上并行计算才能在可接受的时间内完成

如何进行并行分布式计算?

如何分发待处理数据?

–如何处理分布式计算中的错误?

JefferyDean设计一个新的抽象模型,封装并行处理、容错处理、本地化计算、负载均衡的细节,还提供了一个简单而强大的

接口

这就是MapReduce

2、编程模型
怎么用MapReduce计算一个大型文本文件中各单词出现次数?Map的输入参数指明了需要处理哪部分数据,以<在文本中的起始位置,需要处理的数据长度>表示,经过Map
处理,形成一批中间结果<单词,出现次数>。而Reduce函数处理中间结果,将相同单词出现的次数进行累加,
得到每个单词总的出现次数3、实现机制
操作过程

(1)输入文件分成M块,每块大概16M~64MB(可以通过参数决定),接着在集群的机器上执行分派处理程序

(2)M个Map任务和R个Reduce任务需要分派,Master选择空闲Worker来分配这些Map或Reduce任务

(3)Worker读取并处理相关输入块,Map函数产生的中间结果<key,value>对暂时缓冲到内存

(4)中间结果定时写到本地硬盘,分区函数将其分成R个区。中间结果在本地硬盘的位置信息将被发送回Master,然后Maste

r负责把这些位置信息传送给ReduceWorker

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

缓冲的中间数据。当Reduce Worker读到所有的中间数据,它就使用中间key进行排序,这样可使相同key的值都在一起

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

定义的Reduce函数。Reduce函数的结果写到一个最终的输出文件

(7)当所有的Map任务和Reduce任务都完成的时候,Master激活用户程序。此时MapReduce返回用户程序的调用点个区

本地硬盘的位置信息将被发送回Master,然后Master负责把这些位置信息传送给ReduceWorker

案例分析假设有一批海量的数据,每个数据都是由26个字母组成的字符串,原始的数据集合是完全无序的,怎样通过MapReduce完成
排序工作,使其有序(字典序)呢? ——排序通常用于衡量分布式数据处理框架的数据处理能力

《云计算》学习笔记2——Google的云计算原理与应用(GFS和MapReduce)相关推荐

  1. 《云计算》学习笔记4——Google的云计算原理与应用(分布式结构化数据表BigTable)

    1.设计动机与目标 (1)设计动机 需要存储的数据种类繁多:Google目前向公众开放的服务很多,需要处理的数据类型也非常多.包括URL.网页内容.用户的个性化设置在内的数据都是Google需要经常处 ...

  2. 《云计算》学习笔记3——Google的云计算原理与应用(分布式锁服务——Chubby)

    一.分布式锁服务 今天,要接触有些难理解的知识点了,这也许就是涉及到当时赵致琢老师强调的在中国没人能有资格讲和讲得清的一块-分布式算法.说实话,这块看了两遍了,到现在还不敢说自己人懂了一半啊·! Ch ...

  3. 云计算学习笔记003---Hadoop简介,hadoop实现原理,NoSQL介绍...与传统关系型数据库对应关系,云计算面临的挑战

    1.Hadoop简介 1.hadoop的诞生 l  Nutch和Lucene之父Doug Cutting在2006年完成Hadoop项目. l  Hadoop并不是一个单词,它来源于Doug Cutt ...

  4. 云计算学习笔记---异常处理---hadoop问题处理ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.lang.NullPoin

    云计算学习笔记---异常处理---hadoop问题处理ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.lang.NullPoin ...

  5. 大数据与云计算学习计划 (一) 云计算系统管理 1 TCP/IP简单概念 (概念性)

    大数据与云计算学习计划 (一) 云计算系统管理 1 TCP/IP简单概念 (概念性) 一.前言 二.服务器架构 典型服务模式 三.TCP/IP协议 1.简介 2.主机对主机通信三要素 IP地址 子网掩 ...

  6. 大数据与云计算学习计划 (一) 云计算系统管理 3 Linux系统命令行基础 (概念与实操)

    大数据与云计算学习计划 (一) 云计算系统管理 3 Linux系统命令行基础 (概念与实操) 一.文件颜色 二.命令 1.概念 命令的执行依赖于解释器(用户->解释器->内核->硬件 ...

  7. Apollo星火计划学习笔记——Apollo开放空间规划算法原理与实践

    文章目录 前言 1. 开放空间规划算法总体介绍 1.1 Task: OPEN_SPACE_ROI_DECIDER 1.2 Task: OPEN_SPACE_TRAJECTORY_PROVIDER 1. ...

  8. 模电学习笔记 (一) 晶体三极管工作原理

    大家好,我是一名从事硬件电路设计的小工程师一名.我决心从今天开始撰写自己的博客,一方面是为了对知识进行总结记录,加深理解与认识,另一方面希望大家可以多多批评指正,同时结识更多志同道合的朋友,一起学习进 ...

  9. Cadence学习笔记第9讲-元件原理图库的创建-20191116

    Cadence学习笔记第9讲-元件原理图库的创建-20191116 本人 也是刚刚学习,如有错误欢迎指正. 在开始设计原理图前,我们需要创建所需要的器件的原理图,这时就需要库,原理图库来存放器件的原理 ...

最新文章

  1. MySQL第九章索引_MySQL高级(索引优化+慢查询定位)
  2. 数据中心机房谐波治理
  3. react native 从头开始
  4. 其他信息: 线程间操作无效: 从不是创建控件“控件名”的线程访问它。
  5. MySQL(四)字段及常用函数
  6. html编辑器linux,HTML 编辑器
  7. Qt ftp 文件上传工具开发
  8. 互联网工程任务组(IETF)
  9. 第十三题:子类要调用继承自父类的方法,必须使用super关键字。
  10. 修改数据库参数oracle,Oracle 修改数据库基本参数
  11. 800变频器故障代码_变频器通用故障码意义汇总讲解
  12. 华为数据治理及数据分类管理实践
  13. 以淘宝网为例,解析大型Java项目架构演进
  14. OPPOReno4SE和华为畅享20 哪款好
  15. 刀头剑首!产品经理是个危险的职业!
  16. iOS开发中,如何防止Crash(闪退,崩溃)?
  17. Struts维基百科,自由的百科全书
  18. 用c语言编程判断一个数是否为回文数,C语言判断一个数是不是回文数
  19. Linux Mint 17.1默认使用谷歌Noto字体
  20. 11、借助POI实现Java生成并打印excel报表(2)

热门文章

  1. jvm性能调优 - 17案例实战_每日上亿请求量的电商系统 老轻代垃圾回收参数如何优化
  2. 白话Elasticsearch67-不随意调节jvm和thread pool的原因jvm和服务器内存分配的最佳实践
  3. Oracle-awrddrpt.sql比较两个AWR差异报告
  4. NavigationDrawer和NavigationView-Android M新控件
  5. PHP实现列表页综合筛选功能,dede织梦列表页联动筛选方法功能的实现
  6. Android混淆模板与使用
  7. Halcon初学者知识【17】如何将零件提取dxf图
  8. mysql路径查找_如何在MySQL的具有文件路径的列中查找和替换?
  9. 【TypeScript】通过node-cmd使用代码,执行cmd命令行
  10. 计算机病毒按破坏性分为哪两类,计算机导论复习要点.doc