云计算考试重点.docx
《云计算考试重点.docx》由会员分享,可在线阅读,更多相关《云计算考试重点.docx(7页珍藏版)》请在冰豆网上搜索。
1)云计算是对(并行计算,分布式计算和网格计算)技术的发展与应用。
2)云计算特点的包括(超大规模,虚拟化,高可靠性,通用性,高可伸缩性,按需服务,极其廉价)。
3)按照服务类型,云计算大致可分为(将基础设施作为服务IaaS、将平台作为服务PaaS和将软件作为服务SaaS)
4)IaaS计算实现机制中,系统管理模块的核心功能是(负载均衡)
5)云计算体系结构包括(物理资源层、资源池、管理中间件和SOA构建层),最关键的两层是(资源池和管理中间件),其中的(管理中间件)负责资源管理、任务管理、用户管理和安全管理等工作。
6)Google云计算平台技术架构包括(Google文件系统GFS、分布式计算编程模型MapReduce、分布式锁服务Chubby、分布式结构化数据表Bigtable、分布式存储系统Megastore以及分布式监控系统Dapper)
7)Google文件系统GFS分块默认的块大小是(64M)
8)Google文件系统(GFS)分成固定大小的块,每个块都用一个对应的(索引号(Index))。
9)Google文件系统(GFS)提供给应用程序的访问接口是(专用接口)
10)GFS的假设和目标是(硬件出错正常;主要负载时流数据读写,需要存储大尺寸的文件)
11)Google文件系统(GFS)通过(冗余)方式提高可靠性
12)Google文件系统(GFS)中每个数据块默认是在(3)个数据块服务器上冗余
13)Google文件系统(GFS)中客户端直接从(数据块服务器)角色完成数据存取。
14)文件体统(GFS)中主服务器节点任务是(存储元数据、文件系统目录管理和与数据块服务器进行周期性通信)
15)在主服务器节点存储中,采用日志进行容错的是(命名空间、Chunk与文件名的映射)
16)在数据块服务器容错中,每个Block对应32Bit的校验码
17)GFS采用用中心服务器模式的原因包括(可以方便增加数据块服务器;不存在元数据的一致性问题;方便进行负载均衡)
18)Google不缓存数据的原因是(OFS的文件操作大部门是流式读写;维护缓存与实际数据之间的一致性太复杂;不存在大量的重复读写;数据块服务器上的数据存取使用本地文件系统;)
19)GFS中主服务器节点存储的元数据包括(命名空间;Chunk与文件名间的映射表、Chunk副本的位置信息)
20)单一主服务器(Master)解决性能瓶颈的方法是(减少其在数据存储中的参与程度、不适用Master读取数据、客户端缓存元数据、采用大尺寸的数据块)
21)Google云计算技术和开源框架Hadoop如何对应的
22)(MapReduce)是Google提出的用于处理海量数据的并行编程模式和大规模数据集的并行运算的软件架构。
简答题
云计算和网格计算的异同?
MapReduce与传统的分布式程序设计相比有何优点?
另外一个文档上有答案
MapReduce执行流程图
(1)MapReduce函数首先把输入文件分成M块
(2)这些分派执行程序有一个程序比较特别,他是主程序Master。
剩下的执行程序都是作为Master分派工作的Worker(工作机)。
总共有M个Map任务和R个Reduce任务需要分派,Master选择空闲的Worker来分配这些Map或Reduce任务。
(3)一被分配的Map任务的Worker读取并处理相关的输入块。
(4)这些缓存到内存的中间结果将被定时写到本地硬盘,这些数据通过分区函数分层R个区
(5)当Master通知Reduce的Worker关于对的位置时,它调用远程控制过程,从MapWorker的本地硬盘上读取缓冲的中间数据。
(6)ReduceWorker根据每一个唯一的中间key来遍历所有的排序后的中间数据,并且把key和相关的中间结果值集合传递给用户定义的Reduce函数。
(7)当所有Map任务和Reduce任务都完成时,Master激活用户程序。
设计题
试绘制GFS体系结构的示意图,并对工作流程进行简要说明
另外一个文档上面有答案
GFS将整个系统的节点分为三类角色:
Client(客户端)、Master(主服务器)和ChunkServer(数据块服务器)。
Client提供给应用程序的访问接口,它是一组专用接口。
Master是GFS的管理节点,在逻辑上有一个,它保存系统的元数据,负责整个文件系统的管理。
ChunkServer负责具体的存储工作。
数据以文件的形式存储在ChunkServer上,ChunkServer的个数可以有多个,它的数量直接决定了GFS的规模。
客户端在访问GFS是,首先访问Master节点,获取与之进行交互的ChunkServer信息,然后直接访问这些ChunkServer,完成数据的存取工作。
GoogleMapduce案例分析(字符串排序)
(1)对原始的数据进行分割(Split),得到N个不同的数据分块
(2)对每一个数据块都启动一个Map进行处理,采用桶排序的方法,每个Map按照首字母将字符串分配到不同的桶中
(3)对于Map之后得到的中间结果,启动26个Reduce。
按照字母将Map中不同桶中的字符串集合放置到相应的Reduce中进行处理。
具体的说:
就是将首字母a的字符串放到Reduce1中处理,首字母b的放到Reduce2中处理…依此类推。
每个Reduce对于其中字符串进行排序,结果直接输出。
由于Map过程中已经做到了首字母有序,Reduce输出结果就是最终的排序结果。
简答题
HDFS的五个守护进程
HDFS体系结构图
HDFS集群是一个NameNode和很多个DataNode组成。
NameNode主控服务器,管理文件系统的元数据,负责维护文件系统的命名空间并协调客户端对文件的访问,记录命名空间内的任何改动或命名空间本身的属性改动。
DataNode存储实际的数据,负责他们所在物理节点上存储管理,HDFS开放文件系统的命名空间以便让用户以文件的形式存储数据。
客户端联系NameNode以获取文件的元数据,而真正的文件I/O操作是直接和DataNode进行交互的。
SecondaryNameNode它不是namenode的冗余守护进程,而是提供周期检查点和清理任务。
JobTracker负责调度 DataNode上的工作。
每个 DataNode有一个TaskTracker,它们执行实际工作。
JobTracker和 TaskTracker采用主-从形式,JobTracker跨DataNode分发工作,而 TaskTracker执行任务。
JobTracker还检查请求的工作,如果一个 DataNode由于某种原因失败,JobTracker会重新调度以前的任务。
这个是重点(五个函数)但是不确定怎么考?
HadoopMapReduce五种函数(实际是两个函数,另外三个是阶段),每种函数的含义
输入分片(inputsplit)阶段:
在进行map计算之前,mapreduce会根据输入文件计算输入分片(inputsplit),每个输入分片(inputsplit)针对一个map任务,输入分片(inputsplit)存储的并非数据本身,而是一个分片长度和一个记录数据的位置的数组,输入分片(inputsplit)往往和hdfs的block(块)关系很密切;
map阶段:
就是程序员编写好的map函数了,因此map函数效率相对好控制,而且一般map操作都是本地化操作也就是在数据存储节点上进行;
Combine(连接)函数:
将Map任务输出的中间结果集中有相同的key值的多个组合成一个>对。
Combine在执行完Map函数后紧接着执行,很多情况下直接使用Reduce函数,Combine能减少中间结果的数量,从而减少数据传输的网络流量。
Partition(分区)函数:
Combine之后,把产生的中间结果按key的范围划分成R(R是预先定义的Reduce任务的个数)份,划分的时候通常使用Hash函数,如Hash(key)modR,这样可以保证某一范围内的key,一定是一个Reduce任务来处理,可以简化Reduce的过程。
reduce阶段:
和map函数一样也是程序员编写的,最终结果是存储在hdfs上的。
SQL和NoSQL数据库的对比
(1)数据模型,SQL数据库对数据有严格的约束,包括数据之间的关系和数据的完整性。
(2)数据处理:
传统的SQL数据库满足CAP原则(一致性(Consistency)、可用性(Availability)、分区容忍性(PartitionTolerance))的C和A,所以在P方面很弱,进而导致传统数据库在可扩展性方面,面临很多问题。
NoSQL数据库满足CAP原则的A和P,所以在C比较弱,进而使得斐关系型数据库无法满足ACID要求。
(3)接口层区别:
SQL数据库都是以SQL语言对数据库进行访问的,目前所有的SQL数据都支持SQL语言;NoSQL数据库对数据的操作都是通过一些API实现的,支持的查询功能很简单,并且不同数据库有不同的API。
(4)优势和劣势:
SQL数据库具有很高的一致性,在ACID方面能力非常强移植性很高,但在可用性方面能力较弱。
NoSQL数据库最大的优点是非常高的可扩展性,具有很强的并发处理能力,但缺乏数据一致性保证。
另外,由于分布在多个服务器行,所以跨表、跨服查询很难。
GoogleReduce编程模型(简单描述如何实现)
一个Map函数就是对一部分原始数据进行制定的操作。
每个Map函数都针对不同的原始数据,因此Map和Map之间是互相独立的,这是的他们可以充分并发。
一个Reduce操作就是对每个Map所产生的一部分中间结果进行合并操作,每个Reduce所处理的Map中间结果是互相不交叉的,所有Reduce产生的最终结果经过简单的连接就形成了完整的结果集,因此Reduce也可以在并发环境下之下执行
开发者需编写
两个主要函数
Map:
(in_key,in_value)à{(keyj,valuej)|j=1…k}
Reduce:
(key,[value1,…,valuem])à(key,final_value)
Map输入参数:
in_key和in_value,它指明了Map需要处理的原始数据
Map输出结果:
一组对,这是经过Map操作后所产生的中间结果
Reduce输入参数:
(key,[value1,…,valuem])
Reduce工作:
对这些对应相同key的value值进行归并处理
Reduce输出结果:
(key,final_value),所有Reduce的结果并在一起就是最终结果