《云计算》学习笔记2——Google的云计算原理与应用(GFS和MapReduce)
2014-12-24 12:15
686 查看
关于此系列博客,到底将其归哪一类,倒着实伤脑筋。首先,原创肯定不能算,因为本人是根据《云计算》配套PPT而来的,个人觉得上面已经很经典、精简了,其道理既讲清了,也直接有现实例子,个人再去自己在上面发挥,目前既无那个才实,又无那个实验。那么,算作翻译,也谈不上,个人观念里认为翻译是针对英文原版文献的,一般英文文献读来更有质量,目前接触也只是有限,想来想去,还是算作转载吧,其实,个人更愿意将其定位为自己私人笔记,仅为以后方便到CSDN这个固定博客来查阅资料。
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)机制有一个简单的表示,很可惜博客竟未找到,大致是:
对于[b]Rack Awareness——Rack1:Chunk1 、Chunk4、Chunk7……Rack n:Chunk2、Chunk 5、Chunk6……[/b]
而对于ns:file——Chunk1、Chunk2……
这样,两者一结合,查找文件块、甚至对相对的查找的优化等比较方便
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完成
排序工作,使其有序(字典序)呢? ——排序通常用于衡量分布式数据处理框架的数据处理能力
转载之:/Uploads/Images/Content/201412/c31ca1ec1fa22333609dc24694c45748
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)机制有一个简单的表示,很可惜博客竟未找到,大致是:
对于[b]Rack Awareness——Rack1:Chunk1 、Chunk4、Chunk7……Rack n:Chunk2、Chunk 5、Chunk6……[/b]
而对于ns:file——Chunk1、Chunk2……
这样,两者一结合,查找文件块、甚至对相对的查找的优化等比较方便
GFS特点:
采用中心服务器模式 |
u可以方便地增加Chunk Server u Master掌握系统内所有Chunk Server的情况,方便进行负载均衡 u不存在元数据的一致性问题 |
不缓存数据 |
˜文件操作大部分是流式读写,不存在大量重复读写,使用Cache对性能提高不大 ˜ Chunk Server上数据存取使用本地文件系统,若读取频繁,系统具有Cache ˜从可行性看,Cache与实际数据的一致性维护也极其复杂 |
在用户态下实现 |
¨利用POSIX编程接口存取数据降低了实现难度,提高通用性 ¨POSIX接口提供功能更丰富 ¨用户态下有多种调试工具 ¨Master和Chunk Server都以进程方式运行,单个进程不影响整个操作系统 ¨GFS和操作系统运行在不同的空间,两者耦合性降低 |
只提供专用接口 |
¢降低实现的难度 ¢对应用提供一些特殊支持 ¢降低复杂度 |
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完成
排序工作,使其有序(字典序)呢? ——排序通常用于衡量分布式数据处理框架的数据处理能力
转载之:/Uploads/Images/Content/201412/c31ca1ec1fa22333609dc24694c45748
相关文章推荐
- 《云计算》学习笔记2——Google的云计算原理与应用(GFS和MapReduce)
- 《云计算》学习笔记2——Google的云计算原理与应用(GFS和MapReduce)
- 《云计算》学习笔记2——Google的云计算原理与应用(GFS和MapReduce)
- 《云计算》学习笔记4——Google的云计算原理与应用(分布式结构化数据表BigTable)
- 《云计算》学习笔记3——Google的云计算原理与应用(分布式锁服务——Chubby)
- 《云计算》学习笔记4——Google的云计算原理与应用(分布式结构化数据表BigTable)
- 《云计算》学习笔记3——Google的云计算原理与应用(分布式锁服务——Chubby)
- 《云计算》学习笔记3——Google的云计算原理与应用(分布式锁服务——Chubby)
- google云计算原理与应用
- google的三大核心技术MapReduce/GFS/BigTable
- Google 云端计算的应用 Google Doc 跟 Google Translation 有很大的问题
- 分布式系统漫谈一 —— Google三驾马车: GFS,mapreduce,Bigtable
- Google的云计算关键计算和商业应用
- 使用 Google App Engine 实现基于云计算的小型 Java 数据服务应用
- Google MapReduce/GFS/BigTable三大技术论文的中译版
- Google MapReduce/GFS/BigTable三大技术的论文中译版
- 黑马程序员________Java集合List和Set的原理应用学习笔记
- 分布式系统漫谈一 —— Google三驾马车: GFS,mapreduce,Bigtable
- MapReduce 模式、算法和用例(Google云计算)
- 云计算“安全作为服务”为可信计算带来了应用与发展的契机