《云计算技术与应用》最新章节测试答案

在这里插入图片描述

Sample

  1. 云计算是对并行计算、网格计算、分布式计算技术的发展与运用

  2. 从研究现状上看,下面不属于云计算特点私有化

超大规模、虚拟化、高可靠性

  1. 与网络计算相比,不属于云计算特征的是适合紧耦合科学计算
  2. 亚马逊AWS提供的云计算服务类型是IaaS、PaaS、SaaS
  3. 微软于2008年10月推出云计算操作系统是Azure
  4. 简单的理解为云计算等于资源的闲置而产生的√
  5. 基于WEB服务同PaaS类似,服务提供者利用Web服务,通过Internet给软件开发者提供API应用接口,而不是整个应用程序。
  6. 以下服务器虚拟化技术中需要修改Guest OS内核的是半虚拟化
  7. 虚拟机迁移过程中,迁移源主机在预复制步骤中第一次迭代把所有内存内容都复制到目标主机中?
  8. 迁移存储设备的最大障碍在于需要占用大量时间和网络带宽,通常的解决办法是以共享的方式共享数据和文件系统,而非真正迁移。
  9. NAS (Network Attached Storage)网络连接存储技术存储技术使用标准TCP/IP网络协议加入网络?
  10. 服务器虚拟化的底层实现包括CPU虚拟化;内存虚拟化;I/O虚拟化
  11. 虚拟局域网(VLAN);虚拟专用网(VPN);虚拟网络设备属于比较常见的网络虚拟化应用
  12. 软件定义网络(SDN)将网络分为控制层;数据层
  13. IaaS最标志性的业务特征是按需计费——效用计算
  14. 虚拟化作用于IaaS技术架构中动态资源层
  15. 管理层的作用是对动态资源层进行统一的运维和管理资源配置、系统监控、负载均衡
  16. PaaS主要面向的用户是应用开发者
  17. 分布式技术是PaaS架构中的关键技术
  18. PaaS平台层也叫作弹性计算层
  19. 按照成熟度排列以下SaaS平台架构最成熟的架构为可伸缩多租户架构
  20. 卷是持久的块存储设备,可以附加到虚拟机实例,或者从虚拟机实例分离,关于卷操作不能实现的是可以将卷同时连接到多个虚拟机实例
  21. 什么是docker虚拟化技术?Docker 是一个开源的应用容器引擎
  22. Docker目前可以运行在什么系统上?Linux
  23. Docker跟KVM、Xen虚拟化的区别是?启动快,资源占用小,基于linux容器技术。
  24. 使用Docker可以企业帮助解决什么问题?服务器资源利用率不充分,部署难问题。
  25. docker如何进入容器,命令格式是?docker -exec -it docker-id /bin/bash
  26. 云计算就是把计算资源都放到上互联网
  27. 我们常提到的"Window装个 VMware装个Linux虚拟机"属于系统虚拟化
  28. 虚拟化资源指一些可以实现一定操作具有一定功能,但其本身是虚拟
  29. 集群在许多情况下,能够达到99.999%的可用性。
  30. GoogleGFS与开源云计算系统HadoopHDFS相对应的商用云计算软件系统是
  31. 云计算可以把普通的服务器或者PC连接起来以获得超级计算机计算机的计算和存储等功能,但是成本更低。√
  32. 分布式是公有云计算基础架构的基石。
  33. 云计算体系结构的管理中间件层负责资源管理、任务管理用户管理和安全管理等工作
  34. 网格计算是利用因特网技术,把分散在不同地理位置的计算机组成一台虚拟超级计算机。
  35. 云计算里面面临的一个很大的问题,就是节能
  36. RAID5有校验数据,提供数据容错能力
  37. 监控端监控和计量云系统资源的使用情况,以便做出迅速反应,完成节点同步配置、负载均衡配置和资源监控,确保资源能顺利分配给合适的用户。
  38. 虚拟化是私有云计算基础架构的基石。
  39. 交互式服务是PaaS架构中的关键技术
  40. 定制开发不是SaaS平台的特点
  41. 使用Docker可以企业帮助解决什么问题?服务器资源利用率不充分,部署难问题。
  42. Docker是基于什么作为引擎的?LXC
  43. 在Docke命令中,创建一个容器的命令是:dockerrun
  44. GFS系统的特点:GFS采用中心服务器模式、不缓存数据、系统在用户态下实现
  45. MapReduce是一个抽象计算模型,封装实现了并行处理、容错处理、本地化计算、负载均衡
  46. 关于MapReduce编程模型的描述
  • MapReduce的编程模型包含Map和Reduce两
    个函数处理过程。
  • 对于map和reduce每个过程都由不同的计算机
    进行并行计算处理。
  • Map的输出结果是一组对,这是经过Map操作
    后所产生的中间结果。
  • Reduce的工作是对相同key的value值进行归并
    处理。
  1. 关于BigTable正确的说法有:
  • BigTable的作用类似于数据库。
  • 可以为应用提供简单的数据查询功能。
  • 可以为应用提供简单的数据查询功能。
    为第三方应用提供数据结构存储功能。
  1. MapReduce实现机制中,Mapworker产生的中间结果最后保存到哪里,供Reduceworker读取? Mapworker本地硬盘中

《云计算概论》期末考试试题-样本

选择题

  1. 云计算是以服务的形式,按需向用户提供计算资源的一种模式。
  2. 云计算的特性:弹性资源分配、按需使用、多租户
  3. 传统的加密、攻防技术是保障云计算安全的重要手段。
  4. 能被虚拟化的IT资源:①计算节点;②存储设备;③网络设备;④电源
  5. 操作系统级虚拟化的主要优点是执行效率高
  6. 页表压缩法不是内存虚拟化技术
  7. 主机虚拟化技术中,性能最高的是半虚拟化
  8. 存储虚拟化依赖于分布式文件系统对不同存储资源的整合。
  9. 云存储设备机制提供的常见数据存储逻辑单元包括①文件;②块;③数据集;④对象
  10. 虚拟交换不可以实现跨交换设备的网络链路资源整合。
  11. 多租户技术需要满足隔离性、可恢复性、可扩展性等多个要求。
  12. 私有云不需要呈现技术。
  13. 云计算环境下的虚拟化攻击指利用虚拟化平台中的漏洞来危害虚拟化平台的攻击类型。
  14. 信任边界重叠使得恶意用户可以通过威胁共享资源实现对其他用户的攻击。
  15. 可用性(availability)是在特定的时间段内可以访问和可以使用的特性。
  16. 威胁作用者可以来自内部也可以来自外部。
  17. 网络虚拟化:
  • 网络虚拟化的主要目标是实现网络即服务的功能。
  • 虚拟网路可以实现同一物理主机上的多个虚拟机之间的互联。
  • VLAN是网络虚拟化的一个重要实现方式。
  • 虚拟交换可以实现跨交换设备的网络链路资源整合。
  1. 自动伸缩机制描述:
  • 自动伸缩的判定条件可以是云用户发送的请求的数量。
  • 自动伸缩的判定条件可以是虚拟机节点的资源占用率。
  • 自动伸缩机制可以通过云用户自定义的参数值自动地进行IT资源的分配。
  • 通常部署在靠近防火墙的位置,来自动追踪负载状态信息
  1. 当云服务实例出错而不可用时,下面那个应对策略是不可以接受的重启云服务实例
  2. 关于按使用付费监控器的说法:
  • 按使用付费监控器需要监控用户请求数量、传送数据量、服务实例的状态等。
  • 按使用付费监控器通常部署在防火墙的位置。
  • 按使用付费监控器用于测量用户对云资源的使用情况以便计费。
  • 按使用付费监控器的实现方式: 监控代理、资源代理
  1. 故障转移系统的主要功能是在服务失效时自动切换到冗余的资源或者实例上去
  2. 云负载均衡架构提高服务能力、可扩展性、提高可用性、可靠性、改进负载均衡和资源优化
  3. IaaS是PaaS和SaaS的基础和必要条件。
  4. 层次资源池架构中资源池可以构成以下哪种关系parent关系、sibling关系、nested关系
  5. 动态可扩展架构中动态扩展类型包括动态水平扩展、动态垂直扩展、动态重定位
  6. 直接I/O访问架构使用到的相关代理包括①云使用监控器;②逻辑网络边界;③按使用付费监控器;④资源复制
  7. 机会成本不属于商业成本指标

概念解释题

  1. 根据自己的理解,对“云计算”这一概念进行解释和阐述。
  • 定义:云计算是以服务的形式,按需向用户提供计算资源的一种模式。它是分布式计算的一种特殊形式,引入了效用模型来远程供给可扩展和可测量的资源。

  • 云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。

  • 云其实是网络、互联网的一种比喻说法。

  • 云计算的核心思想,是将大量用网络连接的计算资源统一管理和调度,构成一个计算资源池向用户按需服务。提供资源的网络被称为“云”。

云计算就是将计算机的各种服务通过网络提供给用户使用。这种服务可以是IT和软件、互联网相关的服务,也可以是其他的服务。

  1. 云的部署模型有哪些?各有什么特点和应用场景?能是什么?请分别进行解释。
  • 公有云( public cloud)是由第三方云提供者拥有的可公共访问的云环境。

公有云里的IT资源通常是按照事先描述好的云交付模型提供的,而且一般是需要付费才能提供给云用户的,或者是通过其他途径商业化的(例如广告)。

  • 社区云类似于公有云,只是它的访问被限制为特定的云用户社区。社区云可以是社区成员或提供具有访问限制的公有云的第三方云提供者共同拥有的。社区的云用户成员通常会共同承担定义和发展社区云的责任。

  • 私有云是由一家组织单独拥有的。私有云使得组织把云计算技术当做一种手段,可以集中访问不同部分、位置或部门的IT资源。

  • 混合云是由两个或者更多不同云部署模型组成的云环境。例如,云用户可能会选择把处理敏感数据的云服务部署到私有云上,而将其他不那么敏感的云服务部署到公有云上。这种组合就得到了混合部署模型。

  • 公有云是第三方所有的,通常向云用户组织提供商业化的云服务和IT资源。
  • 私有云是仅被一家组织所拥有的,并且位于该组织的范围之内。
  • 社区云一般只能被一组共享拥有权和责任的云用户访问。
  • 混合云是两种或多种云部署模型的组合。
  1. 阐述云服务拥有者、云服务用户、云资源管理者的基本概念,以及相互的关系。
  • 在法律上拥有云服务的个人或者组织称为云服务拥有者( cloud service owner)。云服务拥有者可以是云用户,或者是拥有该云服务所在的云的云提供者。

  • 云用户( cloud consumer)是组织机构(或者人),他们与云提供者签订正式的合同或者约定来使用云提供者提供的可用的IT资源。具体来说,云用户使用云服务用户( a cloudservice consumer)来访问云服务。

  • 云资源管理者( cloud resource administrator)是负责管理基于云的IT资源(包括云服务)的人或者组织。云资源管理者可以是(或者说属于)云服务所属的云的云用户或云提供者。还一种可能性是,云资源管理者可以是(或者说属于)签订了合约来管理基于云的IT资源的第三方组织。

  • 云资源管理者可以属于云用户组织,管理属于该云用户的可远程访问的IT资源
  • 云资源管理者可以属于云提供者组织,为云提供者组织管理其内部和外部可用的IT资源

讨论分析题

  1. 分析讨论不同层次、粒度的负载均衡机制的作用及特性。
  • 二层负载就是数据链路负载,三层就是网络层负载,四层就是传输层负载,七层就是应用层负载。
  • 二层负载添加额外的数据链路来提供传输能力,一般是逻辑上的捆绑。提供虚拟MAC地址接收数据,再转发到真正的MAC主机上。方法主要有链路聚合方法和PPP捆绑。
  • 三层负载提供虚拟IP接收数据,然后转发到真正的IP主机上。一般是通过F5硬件来提供这种负载。
  • 四层负载是IP+PORT负载,提供虚拟的IP和端口接收数据后转发到真正服务器上。
  • 七层负载是URL负载,提供虚拟URL或主机名接收数据后转发到真正的地址。
  1. 分析NoSQL数据库的特点并讨论与传统的关系数据库之间的关系。
  • 特点:1、易扩展2、大数据量、高性能3、灵活的数据模型4、高可用

  • 1)关系数据库读写慢,处理海量数据效率低下。而NoSQL处理数据快,适合于云计算中处理大量数据,支持海量数据的分布式存储。

  • 2)关系数据库支持SQL而NoSQL不支持。

  • 3)NoSQL不是关系型数据库管理系统,它支持处理非结构化的数据,主要用于云计算上。而传统的关系数据库则很难处理大量的非结构化数据。

  • 4)关系数据库成本高,NoSQL数据库成本低廉。

  • 5)关系数据库很难实现扩展,通常是纵向扩展,但到达一定程度时只能横向扩展。而NoSQL很容易实现可伸缩性,包括向上扩展与水平扩展。

  1. 讨论VIM的基本功能及其在自动伸缩、虚拟机迁移、负载均衡等架构中的作用。

VIM(虚拟化基础设施管理):用来管理一系列跨多个服务器的IT资源。

  • 自动伸缩:VIM可以根据自动伸缩监控器的命令对IT资源进行增大或缩小来实现动态自动伸缩。
  • 虚拟机迁移:VIM可以把虚拟服务器在线迁移到另一台物理服务器上。
  • 负载均衡的虚拟服务器实例架构:容量看门狗监控器向VIM报告过度使用的情况,VIM给负载均衡器发信号,让它根据预先定义的阈值重新分配工作负载。
  • 虚拟机监控器机制:VIM提供了一组特性来管理跨物理服务器的多虚拟机监控器。当虚拟服务器底层的物理服务器正在被其他虚拟服务器使用,VIM决定无法进行扩展。VIM命令繁忙的物理服务器上的虚拟机监控器挂起该服务器的执行。然后VIM命令在空闲的物理服务器上实例化该虚拟服务器。VIM命令新物理服务器上的虚拟机监控器继续执行虚拟服务器的处理。

机制/架构设计题

1. 请设计一个针对虚拟机失效场景的虚拟机迁移机制,描述其主要操作。

虚拟机迁移:VIM可以把虚拟服务器在线迁移到另一台物理服务器上。

  1. 快照技术

snapshot(快照)就是将虚拟机的各种状态全部记录下来,存进硬盘里,等待下一次开启虚拟机的时候读取,这些状态包括:

  • vCPU 状态(寄存器等)
  • I/O设备状态
  • 虚拟磁盘状态(利用写时拷贝技术)
  • 所有的内存状态(实现最困难)
  1. 内存迁移

内存是最难处理的,因为它一直在变化。内存实时读写,导致我们没有办法截取某一时刻对内存进行拷贝。这就形成了两种处理方法:

  • pre-copy
  1. 将当前时刻所有的内存状态复制并发送到远程服务器,先不管实时更新的内存状态;
  2. 将新时刻的已改变的内存复制并发送到远程服务器;
  3. 如果赃页太多,到达了阈值,停止虚拟机,复制剩余的赃页,vcpu和内存状态
  4. 远程重启虚拟机。
  • post-copy
  1. 先将vCPU状态复制到远程主机
  2. 虚拟机操作将会导致页错误
  3. 一旦远程主机可以被访问,直接将错误页拷贝到远程主机

Another:

虚拟机监控器集群架构(Hypervisor Clustering Architecture)

  1. 建立了一个跨多个物理服务器的高可用虚拟机监控器集群。

  2. 虚拟机监控器集群由中心VIM控制,通过常规心跳消息来监测虚拟机监控器的状态。当物理机或者Hypervisor失效时使用共享云存储设备进行VM在线迁移。

  3. VM在线迁移是一个具有在运行时将虚拟服务器或虚拟服务器实例重新放置能力的系统。

在这里插入图片描述
按照预先定义好的计划,物理服务器之间以及和VIM之间相互交换心跳消息(5)。

物理服务器B失效且变得不可用时,危及到虚拟服务器C(6)。其余物理服务器和VIM停止收到来自物理服务器B的心跳信息。

在评估了集群中其他虚拟机监控器的可用容量之后,VIM 选择物理服务器C作为虚拟服务器C的新主机(8)。

虚拟服务器C在线迁移到物理服务器C上运行的虚拟监控器上,在正常操作继续进行前,可能需要重启虚拟服务器(9)。

2.设计一个用于SaaS服务的云应用程序的自动伸缩机制,并描述其主要构成部分和各自功能。

自动伸缩机制主要构成部分:

  1. 负载均衡:负载均衡算法,健康检查和会话保持,这三个Feature是保证负载均衡正常工作的基本要素。
  2. 数据库读写分离
  3. 数据库垂直切分/水平切分

程序设计题

请设计一个MapReduce程序用于统计某学校学生成绩的分布,按照不及格(60分以下)、一般(60~69)、中等(70~79)、良好(80~89),优秀(90以上)几个个类别进行统计,得出各自的人次。假设成绩信息保存在一个大的文本文件中,每一行包括课程号、课程名称、学号、学生姓名、成绩(百分制),数据项由空格隔开。

请用简洁的文字或者伪码描述所设计的MapReduce程序,包括主要操作及步骤。

import java.io.IOException;
import java.util.StringTokenizer;
 
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
 
public class Test {
	/*
 	* MapReduceBase类:实现Mapper和Reducer接口的基类    
 	* Mapper接口: 
 	* WritableComparable接口:实现WritableComparable的类可以相互比较。所有被用作key的类要实现此接口。    
 	*/  
  public static class TokenizerMapper 
       extends Mapper<Object, Text, Text, IntWritable>{
 	/*
	*LongWritable,IntWritable,Text是Hadoop中实现的用于封装Java数据类型的类,这些类实现了WritableComparable接口,
	*都能够被串行化,便于在分布式环境中进行数据交换,可以视为long,int,String数据类型的替代。
	*/
    private final static IntWritable one = new IntWritable(1);
    private Text word = new Text();//Text实现了BinaryComparable类,可以作为key值

	/*
	* Mapper接口中的map方法: 
	* void map(K1 key, V1 value, OutputCollector<K2,V2> output, Reporter reporter)
	* 映射一个单个的输入<K1,V1>对到一个中间输出<K2,V2>对 
	* 中间输出对不需要和输入对是相同的类型,输入对可以映射到0个或多个输出对。 	
	* OutputCollector接口:收集Mapper和Reducer输出的<K,V>对。 
	* OutputCollector接口的collect(k, v)方法:增加一个(k,v)对到output 
	* Reporter 用于报告整个应用的运行进度
     */  

    public void map(Object key, Text value, Context context
                    ) throws IOException, InterruptedException {
                    
			//每一行包括课程号、课程名称、学号、学生姓名、成绩(百分制),数据项由空格隔开。
            String string = value.toString();
            //按行分割
            String[] strings = string.split("n");
            for (int i = 0; i < strings.length; i++) {
                //以空格分割
                String[] data = strings[i].split(" ");
                //数组第5个元素是成绩
                double score = Double.parseDouble(data[4]);
                //以成绩进行分割
                if (score < 60) {
                    k.set("不及格");
                    v.set(1);
                } else if (score >= 60 && score < 70) {
                    k.set("一般");
                    v.set(1);
                } else if (score >= 70 && score < 80) {
                    k.set("中等");
                    v.set(1);
                } else if (score >= 80 && score < 90) {
                    k.set("良好");
                    v.set(1);
                } else if (score >= 90) {
                    k.set("优秀");
                    v.set(1);
                }
                //生成key value键值对
                context.write(k, v);
    	}
  }
 
  public static class IntSumReducer 
       extends Reducer<Text,IntWritable,Text,IntWritable> {
    private IntWritable result = new IntWritable();

	 /*
	 * reduce过程是对输入键值对洗牌(Shuffing)形成<K2,list(V2)>格式数据(仅以test1.txt为例):
	 * (优秀[1,1,1,1...])
	 * 作为reduce的输入
	 */
    public void reduce(Text key, Iterable<IntWritable> values, 
                       Context context
                       ) throws IOException, InterruptedException {
		int count = 0;
        //遍历values
        for (IntWritable v : values) {
            int value = v.get();
            count += value;
        }
        //汇总每个分数段的人数(求和)
        context.write(key, new IntWritable(count));
	}
}
  public static void main(String[] args) throws Exception { 
	   // 1 获取配置信息以及封装任务
       Configuration configuration = new Configuration();
       Job job = Job.getInstance(configuration);
       // 2 设置jar加载路径
       job.setJarByClass(RatingDemo.class);
       // 3 设置map和reduce类
       job.setMapperClass(MyMap.class);
       job.setReducerClass(MyReduce.class);
       // 4 设置map输出
       job.setMapOutputKeyClass(Text.class);
       job.setMapOutputValueClass(IntWritable.class);
       // 5 设置最终输出kv类型
       job.setOutputKeyClass(Text.class);
       job.setOutputValueClass(IntWritable.class);
       // 6 设置输入和输出路径
       Path input = new Path("/input/report.txt");
       FileInputFormat.addInputPath(job, input);
       Path output = new Path("/output/result");
       //判断output文件夹是否存在,如果存在则删除
       if (output.getFileSystem(configuration).exists(output)) {
           output.getFileSystem(configuration).delete(output);
       }
       FileOutputFormat.setOutputPath(job, output);
       //等待计算完成
       boolean completion = job.waitForCompletion(true);
       if (completion) {
           System.out.println("计算成功!");
       } else {
           System.out.println("计算失败!");
       }
  }
}

MapReduce采用"分而治之"的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果。MapReduce框架负责处理了并行编程中分布式存储、工作调度、负载均衡、容错均衡、容错处理以及网络通信等复杂问题。将处理过程高度抽象为两个函数:map和reduce。

map负责把任务分解成多个任务;
reduce负责把分解后多任务处理的结果汇总起来。

注:MapReduce处理的数据集必须可以分解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理。不是关系型数据库,而是结构化的。

map处理阶段:

对于给定的待处理文本文档,其map阶段的处理如下:

通过Text对象,获取文本文档的内容。
逐行处理文档,将单词提取出来。
每个单词为key,对应的value设为1,将<k2,v2>对输出。

关键性说明:

map阶段的处理,主要是如何对文本进行逐行的单词分割,从而获取单词,以及将键值对分发到各个节点(此处由hadoop隐性提供,用户先不必关心hdfs存储过程)。
可以参考的单词分割提取代码模板如下:
public void map(Object key,Text value,Context context)throws IOException,InterruptedException  
{  
    //对文本内容对象value进行分割  
    StringTokenizer itr=new StringTokenizer(value.toString());    
    while(itr.hasMoreTokens()) {  
        String word=itr.nextToken();/*获取分割好的单词*/
        /*  
        可以在该循环体中,使用获取好的单词word变量进行key和value的设定。  
        */  
    }  
}  

reduce处理阶段
在Wordcount的reduce阶段,主要是将每个单词的数量统计出来,包括:

在各个节点并行循环统计每个单词出现的次数。
将各个节点的结果汇总以list(<k3,v3>)的形式输出。

reduce函数参考模板:

public void reduce(Object key,Iterable<IntWritable> values,Context context)throws IOException, InterruptedException  
{  
    int count=0;  
    for(IntWritable itr:vlaues)  
    {  
        count += itr.get();  /*循环统计*/  
    }
    /*统计完成后,将结果输出.....*/  
}  

来源中山大学本科生期末考试


加油!

感谢!

努力!

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>