云计算与云存储 期中试卷

本文详细解读了OpenStack在云计算架构中的角色,介绍了私有云与社区云的区别,涉及Spark的RDD持久化技术,以及Spark框架的生态、编程题示例等内容,展示了云计算与大数据处理的关键概念和技术应用。
摘要由CSDN通过智能技术生成

( 2022 -2023  学年第 1 学期)

 

信息工程学院     班(年)级 课程   云计算与云存储

题目

总分

得分

阅卷人

一、单项选择题(每题 3 分,共 21 分)

1.OpenStack 是一个由NASA(美国国家航空航天局)和 Rackspace 合作研发并发起的,以 Apache 许可证授权的自由软件和开放源代码项目。openstack 技术属于()架构的实现。(A )

(A)基础设置即服务;       (B)平台即服务;

(C)软件即服务;           (D)硬件即服务;

2.云端资源只给两个或者两个以上的特定单位组织内的员工使用,除此之外的人和机构都无权租赁和使用云端计算资源,例如,深圳地区的酒店联盟组建的关于酒店方面的云服务,这种云服务属于(B)

(A)私有云;           (B)社区云;

(C)公有云;           (D)混合云;

3.下列哪个支持将 RDD  数据长久地保存在磁盘文件中进行数据重用      (B)

(A)cache() ;          (B)checkpoint();

(C)persist ();           (D)memory();

4.软件架构的演变过程很漫长,经历了几十年发展,主要经历了从()的过程。(A)

(A)单体架构-分布式架构-SOA 架构-微服务架构

(B)分布式架构-单体架构-微服务架构- SOA 架构

(C)单体架构-微服务架构-分布式架构-SOA 架构

(D)分布式架构- SOA 架构-单体架构-微服务架构

5.当需要比较多个服务器在不同长度的时间段内的性能时,由于不同组数据的测量尺度相差太大,或者数据量纲的不同,使用()指标可以较好地消除测量尺度和量纲对结果的影响。      ( C)

(A)平均值;             (B)方差;

(C)变异系数;           (D)标准差;

6.软件系统的高可靠性(也称为可用性,英文描述为 HA,High Available)里有个衡量其可靠性的标准——9 的个数。5 个 9 表示在该软件系统在连续运行 1 年时间里最多可能的业务中断时间是 ( D)

(A)87.6  小时;          (B)8.76 小时;

(C)52.6 分钟;           (D)5.26 分钟;

7.将键值对 RDD 中具有相同键的元素进行分组,可以使用什么操作:   (B)

(A)sortByKey();                            (B)groupByKey();

(C)reduceByKey();                       (D)keys();

二、多项选择题(每题 4 分,共 8 分)

1.Spark 的设计遵循“一个软件需要满足不同应用场景”的理念,逐渐形成了一套完整的生态系统,可以支持以下哪些操作计算:     (ABCD)

(A)图计算(GraphX);               (B)SQL 即席查询(Spark SQL);

(C)机器学习(MLlib);             (D)流式计算(Spark Streaming);

2.spark 的部署模式有:       (ABCD)

(A)本地模式;                           (B)standalone 模式;

(C)spark on yarn 模式;            (D)mesos 模式;

三、简答题(每题 10 分,共 60 分)

  • 1. 云计算技术主要有三个显著特点:资源池化,弹性伸缩,安全可靠,分别对这三个特点进行简要的描述(10 分)。
  1. 资源池化:具有相当的规模,支持用户在任意位置、使用各种终端获取应用服务。所请求的资源来自,而不是固定的有形的实体。
  2. 云计算不针对特定的应用,同一个可以同时支撑不同的应用运行,的规模可以动态伸缩,满足应用和用户规模增长的需要。
  3. 安全可靠:“云”使用了数据多副本容错、计算节点同构可互换等措施来保障服务的高可靠性,使用云计算比使用本地计算机可靠。

  • 2. RDD 之间的依赖关系可以分为窄依赖和宽依赖,请对窄依赖和宽依赖分别进行介绍并举例说明(10 分)。

        窄依赖:是指每个父RDD的一个Partition最多被子RDD的一个Partition所使用,例如map、                          filter、union等操作都会产生窄依赖;(独生子女)

        宽依赖:是指一个父RDD的Partition会被多个子RDD的Partition所使用,例如groupByKey、                         reduceByKey、sortByKey等操作都会产生宽依赖;(超生)

  • 3. RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是 Spark 中最基本的数据处理模型。代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。请简要介绍 RDD 的 5 个核心属性(10 分)

  1. RDD是由一系列partition组成(block块对应partition),textFile底层调用的是MR读取hdfs上的数据的方法默认一个block块对应一个split,split的大小和block大小一致,可以自己调整。
  2. 函数作用在每一个partition(split)上
  3. RDD之间有一系列的依赖关系(容错机制)。
  4. 分区器作用在K,V格式的RDD上。
  5. 提供一系列最佳的计算位置。按照“移动数据不如移动计算”的理念,Spark在进行任务调度的时候,会尽可能地将计算任务分配到其所要处理数据块的存储位置。

  • 4.  RDD  通过缓存或者检查点技术将前面的计算结果持久化,,并供后面的 RDD 反复用。请简要说明cache,persist 和checkpoint 这 3 种持久化技术的区别。(10 分)。

  1. Cache 缓存只是将数据临时保存起来。Cache 缓存的数据通常存储在内存,可靠性低。不切断血缘依赖,只会在血缘关系中添加新的依赖,一旦出现问题,可以重头读取数据。
  2. persisit:将数据临时存储在磁盘文件中进行数据重用,涉及到磁盘IO,性能较低,但是数据安全。如果作业执行完毕,临时保存的数据文件就会丢失。
  3. CheckPoint将数据长久地保存在磁盘文件中进行数据重用,涉及到磁盘IO,性能较低,但是数据安全。为了包装数据安全,一般情况下会把当前需要持久化的RDD重新创建并保存。
  4. Checkpoint 检查点会切断血缘依赖,重新建立新的血缘关系。
  5. cache 机制是每计算出一个要 cache 的 partition 就直接将其 cache 到内存了。但 checkpoint是等到 job 结束后另外启动专门的 job 去完成 checkpoint 。

  • 5. Hadoop 的 MR 框架和Spark 框架都是数据处理框架,请简要说明它们关系,以及我们在使用时候如何选择 (10 分)。
  1. Spark把运算中数据放到内存中,迭代计算效率会更高;MR的中间结果需要落地磁盘,所以大量的磁盘IO操作,会影响性能
  2. MR是基于进程,Spark是基于线程。MR是多进程单线程模型,而Spark是多进程多线程模型;此外,Spark是粗粒度资源申请模式,而MR是细粒度资源申请模式
  3. Spark容错性高,它通过弹性分布数据集RDD来实现高容错,RDD是一组分布式存在节点内存中只读性的数据,这些集合是弹性,某一部分数据丢失或出错,可以通过整个数据集的计算流程的血缘来实现重建;MR的容错需要重新计算,成本高。
  4. Spark更加通用,Spark提供了transformation和action这两大类多功能API,另外还有流式处理SparkStreaming模块,机器学习、图计算;MR只提供Map和Reduce方法,没有其他模块,MR其实是有机器学习的基本上没有人使用。
  5. Spark框架的生态更加丰富,首先由RDD、血缘Lineage,执行时有有向无环图DAG,Stage划分等等,很多时候Spark作业需要在不同场景上运行,此时可以根据不同场景进行调优;MR计算框架相对简单,对性能也相对较弱,单运行稳定,适合长时间在后台运行。

  • 6. Spark 包含 5 大核心模块,请对每个模块进行简要介绍(10 分)。

        1、Spark Core:包含了 Spark 最核心与基础的功能,为其他 Spark 功能模块提供了核心层                 的支撑,可类比 Spring 框架中的 Spring Core。

        2、Spark SQL:官方文档的介绍如下图,Spark SQL 适用于结构化表和非结构化数据的查                 询,并且可以在运行时自适配执行计划,支持 ANSI SQL(即标准的结构化查询语言)。

        3、Spark Streaming:是 Spark 平台上针对实时数据进行流式计算的组件,而流式数据指的              是实时或接近实时的时效性处理的大数据流,常见的流式数据处理使用Spark、Storm和                  Samza等框架。

        4、Spark MLlib:是 Spark 提供的一个机器学习算法库。MLlib 不仅提供了模型评估、数据                 导入等额外的功能,还提供了一些更底层的机器学习原语。

        5、Spark GraphX:是 Spark 面向图计算提供的框架与算法库。

四、编程题 (每题 11 分,共 11 分)

1.有一组键值对("Spark",5),("Hadoop",3),("Scala",4),("Spark",3),("Hadoop",1),键值对的 key 表示图书名称,value 表示某天图书的销量,编程计算每个键对应的平均值,即计算每种图书当天的平均销量,将每本图书的平均销量打印到控制台。(10 分)

import org.apache.spark.rdd.RDD

import org.apache.spark.{SparkConf, SparkContext}

object WordCount {

  def main(args: Array[String]): Unit = {

    val sparkConf =new SparkConf().setMaster("local").setAppName("WordCount")

    val sc= new SparkContext(sparkConf)

    val datas: RDD[(String,Int)] = sc.makeRDD(

      List(("Spark",5),("Hadoop",3),("Scala",4),("Spark",3),("Hadoop",1)),5)

    val a = datas.groupByKey() //按key分组 (张三,CompactBuffer(78, 80, 88))

      .map(x => {

        var num = 0

        var sum = 0

        for (i <- x._2) {

          sum = sum + i

          num = num + 1

        }

        val avg = sum / num

        (x._1, avg)

      })

    a.collect.foreach(x => println(x._1+"\t"+x._2))

    //关闭连接

    sc.stop()

  }}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不科学的爆炸短发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值