Advertisement

林子雨试卷《大数据技术原理与应用》试题与答案

阅读量:
《大数据技术原理与应用》试题与答案

问答题(100分):

(选择题),共包含13道题目(),每一道题目后面都附有对应的分数()。具体来说:

  • 第1题得分为4分;
  • 第2题得分为6分;
  • 第3及第4题均为10分;
  • 第5题得分为16分;
  • 第6及第7、8、9三小问分别对应6分;
  • 第10及第11两小问各自获得8及4分;
  • 最后两道大题分别为第12及第13小问,并分别获得6分。

1.(4%)请阐述大数据、云计算和物联网三者之间的关系。

答案:

近几年里(近五年左右),云计算在学术界和工业界受到了极大的关注;接着又过了些时候(时间跨度约为两年),大数据迅速崛起并成为了各方瞩目的焦点;那么它们之间存在什么样的关系呢?

(1)从整体上看,大数据与云计算是相辅相成的

大数据着重关注"数据"这一核心要素,致力于聚焦现实应用场景,通过实现对数据采集、分析与挖掘的支持,强调积累的数据价值,即其存储能力.云计算则着重关注"计算"这一关键功能,致力于构建IT基础架构支持系统,旨在提升处理效率的能力.并非如此,则云计算的强大计算资源难以发挥应有的作用;反之亦然.

(2)从技术上看,大数据根植于云计算

在云计算领域中,大规模数据存储技术和大规模数据管理技术是大数据技术的重要组成部分;而MapReduce编程模式同样构成了大数据处理体系的关键基础。

(3)物联网借助于云计算存储数据,借助于大数据技术分析数据。

下图展示了Hadoop生态系统的整体架构,请详细阐述以下组件及其核心功能:Avro、Zookeeper、HDFS(分布式文件系统)、HBase(NoSQL数据库)、MapReduce(并行计算框架)、Pig(数据处理工具)、Hive(关系型数据库)以及Sqoop(数据迁移工具)。

答案:

  1. Avro是一种用于数据序列化的系统,在其丰富类型的支持下实现了高效压缩二进制数据的能力,并提供了持久化存储文件集以及远程支持的功能,并具备灵活的动态语言集成能力。
  2. HDFS是一种基于大型商用集群的分布式文件系统,并为HBase提供了一层高可靠性底层存储支持。
  3. HBase位于结构化存储层之上作为一个分布式列式数据库。
  4. Mapreduce是一种用于大规模并行处理(超过1TB)的数据编程模型。
  5. Zookeeper是一个分布式高可用性协调服务,在提供基础服务如分布式锁的同时保障了HBase稳定运行并实现故障恢复机制。
  6. Hive最初由Facebook开发作为基于Hadoop的数据仓库,在其基础上提供了数据整理分析等功能。
  7. Pig是一种面向大数据流处理的数据库管理系统及其运行环境,在简化大规模工作负载方面表现出色。
  8. Sqoop则为将传统关系型数据库向HBase迁移提供了一套便捷的数据导入功能。

3. (10%)

(1)请论述HDFS1.0中SecondaryNameNode的作用和工作原理;(6%)

(2)请说明HDFS系统中存储在名称节点中的对应关系(即数据块到其对应的文件存储位置)是如何实现和更新的?(2%)

(3)HDFS HA解决了HDFS1.0中的什么问题?(2%)

答案:

(1)作用是减少Editlog大小,缩短名称节点重启时间。

SecondaryNameNode的工作情况:

SecondaryNameNode会定期与NameNode进行通信,并要求其停止使用EditLog文件,在一个新的临时文件edit.new中执行新的写入操作。这些操作几乎瞬间完成,并不会影响到上层日志记录功能的功能。

SecondaryNameNode通过HTTP GET协议从NameNode获取FsImage和EditLog文件,并下载至本地指定目录中;

SecondaryNameNode会接收的FsImage会被加载至内存中。随后会依次应用EditLog文件中的所有更新指令。从而确保内存中的FsImage始终保持最新状态;这一系列操作实际上等同于将EditLog与FsImage进行整合。

SecondaryNameNode在完成(3)操作后,将通过POST方式进行新的FsImage文件的上传至NameNode节点.

SecondaryNameNode负责将新的FsImage传递给NameNode,并将其更新为旧的FsImage文件的状态;同时,在NameNode上更新本地的EditLog日志文件。这样一来,在整个编辑过程中记录的变化就被有效地追踪并记录下来。

(2)

请详细说明HDFS中名称节点如何管理数据块与数据节点之间的映射关系。这种机制通过持续向名称节点发送心跳信号来维持这种关系,并由各数据 node 将自己管理的数据 block 列表传输给 name node。name node 根据各 data node 的反馈信息构建相应的 mapping 信息以实现精确对应。

(3)HDFS HA解决了HDFS1.0中的单点故障问题。

4.(10%) 在MapReduce作业中,combine操作是可选的:

(1)请指出combine操作的作用;(2分)

(2)请指出combine操作在哪些场景下才能使用?(2分)

(3)请确定MapReduce作业 shuffle 过程中哪些阶段可以应用combine操作。(6分)

答案:

可选地采用Combiner方案,则其主要功能是在每个Map完成分析任务后,在本地优先进行Reduce操作,并以此降低Reduce阶段的数据传输量。

(2)该组件旨在优化MapReduce过程中的中间数据量,在整个系统的运行过程中会被多次调用。我们可以从以下方面探讨该组件的应用场景:首先明确其功能定位——该组件处理后的输出会被作为Reducer操作的对象,并且必须确保该组件不会影响到最终计算的结果 integrity 。因此,在实际应用中应当遵循以下原则:只有当组件处理后的数据类型与Reducer操作的数据类型匹配,并且不会干扰到后续计算流程时才可以将其纳入系统设计之中。为了保证系统的高效性与可靠性,在具体实现时需要谨慎选择其应用范围:例如累加、取最大值等运算相对简单且对数据一致性要求不高的情形适合采用此组件进行处理;而对于涉及复杂运算或依赖精确顺序的操作则不宜引入此类优化机制。实践表明,在适当的情况下应用此功能可以显著提升任务执行效率;但如果误用则可能导致冗余计算或破坏整体算法正确性。

(3)

在map作业的执行过程中,在每个map任务中都配备了一个内存缓冲区用于存储输出结果,在缓冲区接近满载时会将数据以临时文件形式迁移到磁盘上;如果客户端已设置过Combiner,则此时应切换为使用Combiner进行处理,在此过程中将具有相同键值对的所有key/value对的value进行累加操作;通过这种方式可以有效减少磁盘溢出的数据量。

第二个使用combine的地方:每次溢出操作都会在磁盘上创建一个溢出文件。当map任务完成时,在内存缓冲区中的数据也会被完整地复制到磁盘上生成一个最终的溢出文件。由于最终只能有一个这样的文件存在,因此需要将所有这些溢出文件进行合并处理。这个合并操作被称为Merge过程。需要注意的是,在归并的过程中可能会遇到相同的键值对(key),如果客户端配置了Combine参数,则会采用Combine机制进一步处理这些重复项。

在Reduce作业执行时,在对数据进行处理的过程中,默认会触发一个机制来管理中间结果文件(即所谓的Combine操作)。具体来说,在这一过程中有以下几个关键步骤:首先,在任务运行期间会创建一些临时文件用于存储中间结果;其次,在任务完成之后会将这些临时文件合并成最终的结果;最后,在合并完成后会将中间结果删除以释放存储空间。

5.(16%)(1)请阐述HBase三层结构;(6分)

(2)请阐述在HBase三层结构下,客户端是如何访问到数据的?(2分)

(3)在该系统架构中,在所有 HRegionServer 上都配置了一个对应的 HLog 文件,
而不仅仅是在每个 HRegion 上单独配置日志。
请说明这一设计的优势与劣势分别是什么?(3 分)

当某台HR_egion S服务器发生异常终止时,请问主服务器HMaster如何检测到该事件?为了恢复该HR_egion S服务器上的数据,请问HMaster应采取哪些措施(包括使用HLog进行数据恢复的过程)?

答案:

(1)HBase使用类似B+树的三层结构来保存HRegion位置信息:

第一层属于Zookeeper文件:该文件专门存储-RUNNER-(即-RUNNER.-)区域的信息;
第二层为-RUNNER.-区域:该区域仅包含一个-RUNNER.-区域,并负责存储-META.-区域中的相关分区信息。通过访问该-RUNNER.-区域即可获取-MET.-区域能够使用的分区数据;
第三层为-MET.-表格:这是一个特殊的设计表格,在其中我们能够完整地存储每个用户对应的分区(即-HRrunner-region)的信息,并确保所有数据分区的位置都被完整地保留下来。

图7-7 HBase的三层结构

(2)在客户端获取用户数据之前,在必须先调用Zookeeper服务以获取基础元数据信息后,在随后读取-ROOT-.db中的元数据文件,在之后逐步读取.META信息文件,在最终确认目标存储位置后才进行后续操作的过程中(整个过程涉及多个网络交互环节),客户端端通常会进行结果缓存以提升后续查询效率

(3)每个HRegion Server负责维护一个HLog, 而不是每个HRegion单独维护一个. 通过这种方式, 不采用将不同表的HRegion日志混在一起的方法. 这样的设计目的在于, 减少单个文件的磁盘寻址次数. 相比于同时追加多个文件的方式, 按这种方法能够显著提升表的写入性能. 然而, 这种架构也带来了一定的挑战. 当某个HRegionServer发生故障时, 为了恢复其上的所有数据区域, 必须将该服务器上的日志进行分割. 分割后的日志会被分发到其他可用的HRegionServer上进行重建过程.

在发生故障的情况下,当Zookeeper检测到有节点出现异常状况时(或者说是当某个节点出现故障的时候),主节点(Master)系统会启动一系列自动化的响应机制。具体来说,在这种情况下(或者说是此时),主节点系统首先会对故障发生导致的数据丢失情况进行初步判断,并采取相应的措施进行处理。具体而言,在这种情况下(或者说是此时),主节点系统首先会对当前存在的未处理的日志文件进行解析并处理相关的日志文件集合(包括各个区域内的日志)。随后,在完成对已损坏的日志信息进行初步整理的基础上(或者说是基于此基础之上),系统会对各个损坏区域的数据进行拆分操作,并将这些拆分后的日志信息分别归档至各自对应的存储位置上(或者说是在各自对应的存储路径下)。接着,在完成上述操作之后(或者说是在这一阶段结束后),系统会对那些不再需要的部分资源进行重新分配操作,并将其重新分配给对应的可用节点以便继续执行其职责任务(或者说是为了让这些资源能够被其他节点所利用)。最后,在整个系统的响应过程中(或者说在整个恢复流程运行完毕之后),主节点系统会在后续的工作流程中识别到已经存在的日志记录并触发相关功能模块的操作流程以确保数据恢复工作的顺利推进。(或者说是为了完成整个数据恢复过程))

在Storm框架设计中,在实现过程中可以通过终止nimbus进程和supervisor进程之后重启它们,并观察到它们恢复状态并继续工作。该机制展现了极佳的稳定性表现,请问这种保证Storm稳定性的机制是如何设计的?

答案:

Storm基于Zookeeper实现了分布式事务协调框架;该集群全面管理着Nimbus与多个Supervisor之间的完整事务协调;通常情况下,整个系统架构会划分为若干个子拓扑结构,并由每个supervisor独立负责其所属的子架构

Both the Nimbus backend program and the Supervisor backend program are characterized by being fail-fast and stateless. All their states are maintained in either a Zookeeper or a local disk.

在这种架构中, Master设备并未直接与Worker设备进行交互,在此框架下采用了Zookeeper作为中介服务层.通过引入Zookeeper机制后可有效分离Master与Worker之间的关联性,并将状态信息存储于其集群中以迅速响应所有设备出现故障的情况.

这意味着你可以kill off Nimbus进程和Supervisor进程,在重启它们后能够恢复后继续运行。这种设计理念使得Storm具有高度可靠性和稳定性。

7.(12%)(1)Pregel的容错是通过检查点来实现的,请阐述Pregel的容错机制。(6分)

(2)请描述用Pregel解决单源最短路径问题的基本过程。(6分)

答案:

(1)容错机制通过检查点记录状态以实现系统的容错能力。在每个超步启动时 master 会指示 worker 记录其上 partition 的状态到持久存储设备中 这些数据包括顶点信息 边信息以及 worker 接收的消息 master 同时也会维护 aggregator 的状态

一个 worker 的失效 是 依靠 master 周期性 发送 ping 消息来进行检测 的过程。当一个 worker 在固定的时间间隔内未能接收到 ping 消息时, 该 worker 进程将会停止运行 。若 master 在一段时间内未接收到 Worker 的反馈, 那么该 Worker 进程将会被标记为已失败状态 。

当一组或多个 Worker 出现故障情况时,则会导致其相关的 partition 数据丢失状态信息。Master 会将整个图中的 partition 分配至当前可用 Worker 集合中进行处理,并通过读取最近一次已保存的状态 checkpoint(标记为 S)来恢复这些 partition 的状态信息。需要注意的是,在 Master 进行状态恢复的过程中所使用的这一阶段较之前的某些阶段更为早期;因此,在 Master 完成部分工作后可能会导致之前未完成的任务需重新进行计算(即重跑)。系统选择合理的 checkpoints 频率是基于某种故障模型预测的时间间隔,并且这种选择旨在平衡 checkpoint 的存储开销与恢复后任务运行开销之间的关系

(2)在该算法中,默认情况下与每个顶点相关联的值被设定为无穷大。在每一个超步开始时,每个顶点都会先接收来自邻居节点发送过来的消息。这些消息中包含了从源顶点经过可能路径到达各节点所计算出的最短潜在距离信息。如果接收到的消息中包含的最小潜在最短距离小于该顶点当前记录的距离值,则该顶点将更新其记录的距离,并向其直接相连的所有邻居节点发送新的消息以传播最新的距离信息。随后这些邻居节点也会根据接收到的消息更新自己的距离记录,并将新的信息传递给它们各自的邻居节点。这一过程将持续进行直到没有任何节点再进行距离更新操作为止。此时系统认为已经收敛并完成计算,在此状态下所有节点的距离记录即为从源节点到各自位置的最短路径长度(若某条边上的权重均为非负数)。如果某条边上的权重均为非负数,则整个系统将在有限步骤内达到稳定状态并终止运行

8.(6%)请描述作为NoSQL数据库的基石之一的BASE的含义。

答案:

听起来很有意思的是这样的:BASE在英文中的意思是碱性物质而ACID则是指酸性物质两者看似存在根本性的矛盾

从基本意义上讲BASE指的是能够与酸发生中和反应的化合物而ACID则是一种能够使指示剂变色并释放出氢离子的化合物它们在化学性质上存在显著差异

  1. Basic Availability: The system supports partition failures.
  2. Soft State: A soft state, or flexible transaction, represents a condition where there is no active connection, allowing for a period of asynchronicity. In contrast, a "hard state" is characterized by being connection-oriented.
  3. Eventual Consistency: Ensuring data reaches eventual consistency suffices to achieve the ultimate goal of ACID compliance.

基于ACID模型的对立是BASE模型这一概念的核心所在。相对于ACID模式而言,该方案舍弃了高度的一致性作为代价来换取可用性和可靠性。其核心理念在于强调基础上的可用性,在性能方面还有较大的提升空间待开发。如果需要追求高可用性即仅专注于高性能这一目标时,则必须以一致性或容错性的牺牲为前提。

9.(6%) 假设关系R(A,B)和S(B,C)都存储在同一份文件中,请阐述一下如何利用MapReduce技术来完成R和S这两个关系的连接操作。

答案:

在MapReduce环境中进行两个关系联接操作的方法如下:其中关系R(A,B)和S(B,C)均存储在一个文件中。为了将这些关系进行联接,则需要将来自每个关系的所有元组与一个键关联起来。具体而言可以通过使用多个Map进程集合来实现这一过程。每个Map进程集合会处理来自特定关系的所有元组并生成相应的键值对:对于来自R的关系而言键为B值对应的元组会被包含在value字段中以便于后续处理;而对于S的关系则会在key值对中加入该键对应的C字段信息以确保能够正确识别匹配项。在此基础上 Reduce进程的任务就是将所有满足条件的元组进行合并并输出最终结果。具体实施时需要根据实际情况选择合适的 Reduce 进程数量以及采用适当的方式分配键值到各个桶中以实现高效的匹配操作。

10.(8%)

(1)请画出MapReduce1.0体系结构,并说明各个组件的功能;(4%)

(2)指出MapReduce1.0体系结构存在的缺陷。(4%)

答案:

MapReduce主要有以下4个部分组成:

1)Client

用户编写的MapReduce程序通过Client提交到JobTracker端

用户可通过Client提供的一些接口查看作业运行状态

2)JobTracker

JobTracker负责资源监控和作业调度

JobTracker 持续关注所有与 Job 相关的状态变化情况;当系统识别到某个 Task Tracker 出现故障时,则将其相关任务重新分配至其他节点。

JobTracker 会记录任务的运行状态、资源占用情况等关键数据,并将这些详细信息传递给任务调度器(TaskScheduler)。当系统检测到某些计算资源闲置时,则会根据当前作业的类型和剩余时间等因素自动分配最合适的作业到这些空闲资源上。

3)TaskTracker

TaskTracker 定期向 JobTracker 报告关于资源使用情况及任务运行进度的信息,并响应来自 JobTracker 的相应指令(包括启动新任务以及终止现有任务等)。

TaskTracker将本节点上的资源总量划分为"slot"等效单位(如CPU、内存等)。当一个Task申请到一个slot后才有机会进行运行操作,在Hadoop的调度体系中由调度器负责将各个TaskTracker上的空闲slot分配给各个Task使用。每个slot又分为Map slot和Reduce slot两种类型,并分别供MapTask和Reduce Task使用。

4)Task

Task 分为Map Task 和Reduce Task 两种,均由TaskTracker 启动

11.(4%)YARN的核心理念是实现"一个集群支持多种计算框架"的目标,并通过提供统一的资源管理调度服务来支撑各个框架之间的高效协作与资源共享。这种方法能够带来哪些具体的优势?

答案:

该系统的主要目标就是实现"一个集群支持多种框架"的技术架构设计方案,具体而言就是在同一个集群环境中完成对统一资源调度管理功能的安装,随后可以在其之上安装其他各种计算框架。

基于YARN平台为这些计算框架提供了一套统一的资源调度管理服务系统,并且能够根据各计算框架的实时负载情况进行动态分配相应的计算资源。该系统不仅支持集群内的资源共享机制运行,并通过弹性伸缩实现资源规模按需自动调整。

可以实现一个集群上的不同应用负载混搭,有效提高了集群的利用率

不同计算框架可以共享底层存储,避免了数据集跨集群移动

12(6%)

(1)与MapReduce相比,在处理迭代计算方面的原因何在?

答案:每次迭代结束,MapReduce需要写入磁盘,而Spark写内存。

(1)为什么说Spark的设计具有天生的容错性?(2%)

RDD之间建立关联结构,在任何一个RDD分区失效的情况下都能够通过其父节点集合进行重新计算生成数据。

(2)Spark有哪三种部署方式?(2%)

答案:

Standalone(类似于MapReduce1.0,slot为资源分配单位)

Spark on Mesos(和Spark有血缘关系,更好支持Mesos)

Spark on YARN

13(6%) 试述两种典型的推荐算法UserCF和ItemCF算法的区别,以及各自优缺点

UserCF算法和ItemCF算法的思想、计算过程都相似

两者最主要的区别:

UserCF算法旨在推荐那些具有共同兴趣爱好的物品,在这些物品中具有较高相似度的其他类别中的用户群体也会表现出相似的兴趣

ItemCF算法推荐的是那些和目标用户之前喜欢的物品类似的其他物品

UserCF算法的推荐更偏向社会化,而ItemCF算法的推荐更偏向于个性化

该算法侧重于社会化的推荐机制,在 terms of its main applications, 包括新闻和微博话题等领域;其推荐结果在 terms of novelty方面具有一定的优势。

UserCF的缺点在于:当用户数量不断增加时,计算过程的复杂程度显著提升。此外,在处理推荐结果的相关性方面表现不佳,并且使得对于推荐内容的分析不够深入。同时,在用户体验方面存在不足之处:算法容易随公众口味变化而过度推广流行商品

ItemCF算法倾向于具有高度个性化的推荐机制:其适用于电子商务平台如购物 basket, 电影平台如 titles, 图书馆系统等场景。该方法能够基于用户的使用历史为结果提供合理的解释,并使用户体验到更加令人信服的效果。

ItemCF的主要缺点在于主要倾向于提供类似用户已购买商品的商品,并经常出现缺乏多样性和创新性高的问题。

=========所有题目结束,此后无考题========

全部评论 (0)

还没有任何评论哟~