开发者学堂课程【高校精品课-长安大学 -基于混合式教学的云计算课程建设:4.2 平台服务 Google】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1073/detail/15481
4.2 平台服务 Google
内容介绍:
一、平台服务 Paas
二、 Google GFS
三、 Google GFS 特点
四、 Google GFS 容错机制
五、分布式数据处理 Map Reduce
六、 Map Reduce 编程模型
七、 Map Reduce 实现机制
八、 Map Reduce 容错
九、 Big table 的设计动机和目标
十、 Big table 的数据模型
十一、 Big Table 系统结构
一、平台服务 Paas
1、 Google 的业务包括全球最大的搜索引擎还有 google maps youtube 等,这些应用的共性就是数据量巨大,而且需要向全球用户提供实时服务, google 的云平台正是支持这些业务应用的强力武器,google 云平台包括很多技术和架构。
2、比如它 google 的文件系统叫做 google distributed system GFS 还有分布式数据处理map reduce,分布式所服务,分布式结构化数据表 big deta 和 big table 还有大规模的分布式系统的监控技术架构 dapper ,数据库的 google 的应用程序引擎 google APP 等等我们这里只介绍 GFS map reduce 和 big table 这3个 google 云平台的最核心的技术,它们也曾被称作 google 云计算的三大法宝。
二、Google GFS
1. Google 的分布式文件系统,这是它的系统架构图,
2. google 它需要支持海量存储的文件系统,是否可以不用购置昂贵的分布式文件系统与硬件,而是在一堆廉价且不可靠的硬件上构建可靠的分布式文件系统,来满足顾客自身应用和负债的需求, gfs 它就是基于 google 基于这样的设计动机而产生的。
3.Gfs 是将容错的任务交给了文件系统来完成,利用软件的方法解决系统的可靠性问题从而使存储的成本成倍的下降,gfs 它的设计理念它是将服务器故障视为正常现象并采用多种方法从多个角度使用不同的容错措施来确保数据存储的安全,保证提供不间断的数据存储服务,gfs将整个系统节点分为3类角色。
4.一个是称作客户端,是 gfs 提供给应用程序,它提供给应用程序的访问接口以库文件的形式提供,还有一个就是 master 就是 gfs 的主服务器, master 是 gfs 的管理节点在逻辑上只有一个,保存系统的原数据,负责整个文件系统的管理,还有一个数据块服务器,称作 trunk server 它负责具体的存储工作,数据以文件的形式,它下面是 linux 的文件系统,它是以这种文件的形式存储在Chunk server上的, Chunk server可以有很多。
5.GFS 的实现机制就是客户端首先访问 master节点,获取交互的Chunk server信息,再去访问 Chunk server 完成数据的程序工作,这个设计方法它就实现控制流和数据流的也就是控制信息和数据信息的分离,因为 clients client和 master 之间,只有控制流而没有数据流,从而降低 了master的工作负载 client 与 Chunk server 之间就是传递数据,由于我们的文件被分成了文件它被分成了很多 Chunk 进行分布式的它一个文件可以分成很多个Chunk存在不同的 Chunk server 上, client 就可以同时访问多个 Chunk 。Chunk server 就可以实现提高它的性能。
三、Google GFS 特点
1.gfs特点就是采用中心服务器的模式不缓存数据,在用户实现只提供专用接口,它采用中心服务器的模式,就可以方便的增加 Chunk server 而 mast server 就掌握着系统内所有的 Chunk server 的情况可以方便进行负载均衡,而且不存在原数据的一致性问题。
2.它不缓存数据,文件操作大部分是以流逝读写,不存在大量的重复读写,这是 google 的数据的特点,使用 cash 对性能提高并不是很大,Chunk server上它的数据存起,它使用的是 links 文件系统,本地文件系统,做读取频繁的话它本身是具有 cash,cash 与实际数据的一致性维护是非常复杂的,所以基于这些想法 gfs 它不缓存数据,在用户态下实现这样的话它可以因为利用 process 是编程接口存取数据,它降低了实现的难度,提高了它的通用性而且 process 的接口提供了功能也更丰富,用户推荐的调试工具也很多,所以它采用在用户态下实现就可以降低实现难度提高了更多的功能。
3.由于它在用户态实现,所以它不支持标准的文件系统寓意,它提供专用的接口可以降低实现的难度,为应用提供一些它专用接口的特殊的支持。
四、Google GFS 容错机制
1.它的容错是在两个方面,一个是 master server的容错,在 master server上有3种原数据,命名空间, Chunk文件名的映射 ,Chunk副本的位置信息,对于这两种命名空间和 Chunk与文件名的映射,它是通过采用日志来提供容错功能, Chunk副本的位置信息它是将它直接保存在每一个 Chunk server 上。
2.当 master 如果发生故障的时候,磁盘数据保存完好的情况下就可以快速恢复这些原数据,另外它为了避免 master 彻底死机,GFS还提供了 master 的远程的实时备份。
3.还有是 Chunk server的容错它主要是采用副本方式来实现 Chunk server的容错,每一个都有多个存储副本分布存储在不同的 Chunk server,副本的分布是要考虑一些因素比如网络的拓谱,机架的分布磁盘的利用率等等。。
4.对于每一个 Chunk 它必须是所有的副本全部写入成功才能视为成功写入,当某个副本出现丢失或不可恢复的时候 master 会将该副本复制到其它的 Chunk server 上去,以保证它的副本的数量,默认gfs有3个副本,一份数据要存储3份磁盘空间的利用率就不高,但是目前磁盘的成本也在不断下降采用副本的方式是一种简单可靠而且有效,实现难度也最小的一种方法。
五、分布式数据处理 Map Reduce
它是一种处理海量数据的并行编程模式,用于大规模数据级的并行运算,它封装了病情处理容错处理,本地化计算负载均衡等细节还提供了简单强大的接口,把对数据集的大规模操作,分发给主节点管理下的各个分解点共同完成,通过这方式来实现任务的可靠执行与容错。
六、Map Reduce 编程模型
1.它主要是有两个操作, Map 操作 Reduce 操作 这是原始数据。
2.Map 操作:对一部分原始数据进行指定的操作。每个Map操作都针对不同的原始数据,因此 Map 与 Map之间是互相独立的,这使得它们可以充分并行化。
3.Reduce 操作:对每个 Map 所产生的一部分中间结果进行合并操作,每个 Reduce所处理的 Map中间结果是互不交叉的,所有 Reduce 产生的最终结果经过简单连接就形成了完整的结果集.
4.Map 输入参数: in_key 和in_value,它指明了 Map 需要处理的原始数据。
5.Map 输出结果:一组 <key,value> 对,这是经过 Map 操作后所产生的中间结果
6.Reduce 输入参数: (key,[value1,…,valuem])
7.Reduce工作:对这些对应相同 key 的 value 值进行归并处理
8.Reduce 输出结果:(key,final value)),所有 Reduce 的结果并在一起就是最终结果
9.Map: (in_key, in_value) → {(key; value) |Jj= 1...k
10.Reduce: (key, [value1.…, valuem]) → (key, final_value)
七、Map Reduce 实现机制
1.首先输入的文件被分成很多块,在集群上执行分派任务, master 会选择空闲的 walker来分配这些 map任务和 reduce 任务,根据分成的块的多少,比方说我们有m块我们可能就会有 m 个 map 任务和r个reduce任务, master 就会把 map 任务分析分发到到我们不同的worker上,它会读取相关的数据块会读取相关的输入的数据块,通过 MAP 函数产生的中间结果,会暂时的存到内存里,之后把中间结果定时的写到磁盘,在本地磁盘上的位置信息被发回到 master 就会把这些信息又发给 reduce the worker ,被通知关于这些值的信息以后 reduced walker 就会通过远程 remote read 的方式来读取中间数据。
2.以后 按照它的 k 进行处理,不要把相同的k值放在一起,处理完以后,根据处理结果进行输出。
八、Map Reduce 容错
1、Master 会周期性地设置检查点(checkpoint),并导出 Master 的数据。一旦某个任务失效,系统就从最近的一个检查点恢复并重新执行。
2、Master 会周期性地给 Worker 发送 ping 命令,如果没有 Worker 的应答,则Master 认为 Worker 失效,终止对这个 Worker 的任务调度,把失效 Worker 的任务调度到其他 Worker上重新执行。
3、由于只有一个 Master 在运行,如果 Master 失效了,则只能终止整个MapReduce 程序的运行并重新开始。
九、Big table 的设计动机和目标
它的设计动机就是要满足海量的服务请求,而且因为它需要存储的数据种类很多它要满足存储的种类繁多的数据,在商用的数据库无法满足它的需求,所以它要设计自己的 big table 的数据库来满足它的自身的需求,它要达到的目标是,适用性要很广,可扩展性要强,高可用,简单。
十、Big table 的数据模型
1.它是分布式的多维硬设表,表中的数据是通过行关键字,列关键字,时间戳来进行的。Big table 行关键字可以是任意的字符串,表中的数据都是根据行关键字进行排序的。看实例当中 COM .CNN .ww 这就是行关键字,它不直接存储网页地址而是将它倒牌是将它是这巧妙的设计。这样的设计的好处是同地址域的网页会被存储在表中的连续位置,有利于用户查找和分析,另是倒牌便于数据压缩可以提高压缩率。
2.但是Big table 它不是简单的存储所有。列族它称作叫column 每族中的数据都属于同类型并且同族的数据会被压缩在一起保存,引入了列族的概念以后,列关键词采用了一种就叫做族名+限定词的语法规则,锚点是不同的族 cnnsi.com 是不同的限定词 格式就是用限定词+冒号+族名+冒号+限定词方式
3.google很多服务比如它网页检索和用户的个性化设置它都需要保存不同时间的数据,不同的数据版本就要通过时间戳来区分,T3 T5 T6这3个时间就保存了T3 T5 T6这三个时间获取的网页。
十一、Big Table 系统结构
客户访问 Big Table 服务时,首先要利用它的库函数来操作打开锁,以后客户端可以和它的子表服务器进行通信,主要以子表服务器通讯几乎不和主服务器通讯,使得主服务器的负载就大大降低,主服务器主要进行些原数据操作以及子表服务器之间负载调度的这些问题,实际的数据都是存在子表服务器上,而子表数据和日制则是存储在 GFS。