七、MapReduce
1、试述MapReduce和Hadoop的关系。
正确答案:
谷歌公司最先提出了分布式并行编程模型MapReduce, Hadoop MapReduce是它的开源实现。谷歌的MapReduce运行在分布式文件系统GFS上,与谷歌类似,HadoopMapReduce运行在分布式文件系统HDFS上。相对而言,HadoopMapReduce 要比谷歌MapReduce 的使用门槛低很多,程序员即使没有任何分布式程序开发经验,也可以很轻松地开发出分布式程序并部署到计算机集群中。
2、MapReduce 是处理大数据的有力工具,但不是每个任务都可以使用MapReduce 来进行处理。试述适合用MapReduce来处理的任务或者数据集需满足怎样的要求。
正确答案:
适合用MapReduce来处理的数据集,需要满足一个前提条件: 待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理。
3、是否所有的MapReduce程序都需要经过Map和Reduce这两个过程?如果不是,请举例说明。
正确答案:
不是。对于关系的选择运算,只需要Map过程就能实现,对于关系R 中的每个元组t,检测是否是满足条件的所需元组,如果满足条件,则输出键值对<,>,也就是说,键和值都是t。这时的Reduce函数就只是一个恒等式,对输入不做任何变换就直接输出。
4、试分析为何采用Combiner可以减少数据传输量?是否所有的MapReduce程序都可以采用Combiner?为什么?
正确答案:
对于每个分区内的所有键值对,后台线程会根据key 对它们进行内存排序(Sort ),排序是MapReduce 的默认操作。排序结束后,还包含一个可选的合并(Combine )操作。如果用户事先没有定义Combiner 函数,就不用进行合并操作。如果用户事先定义了Combiner 函数,则这个时候会执行合并操作,从而减少需要溢写到磁盘的数据量。
所谓“合并”,是指将那些具有相同key 的
一.单选题
1.下列说法错误的是
A、MapReduce框架采用了Master/Slave架构,包括一个Master和若干个Slave
B、Map函数将输入的元素转换成形式的键值对
C、不同的Map任务之间不能互相通信
D、Hadoop框架是用Java实现的,MapReduce应用程序则一定要用Java来写
正确答案: D
2.在使用MapReduce程序WordCount进行词频统计时,对于文本行“hello hadoop hello world”,经过WordCount程序的Map函数处理后直接输出的中间结果,应该是下面哪种形式:
A、<“hello”,<1,1>>、<“hadoop”,1>和<“world”,1>
B、<“hello”,2>、<“hadoop”,1>和<“world”,1>
C、<“hello”,1>、<“hello”,1>、<“hadoop”,1>和<“world”,1>
D、<“hello”,1,1>、<“hadoop”,1>和<“world”,1>
正确答案: C
答案解析:
洗牌后结果A
3.对于文本行“hello hadoop hello world”,经过WordCount的Reduce函数处理后的结果是
A、<“hello”,1><“hello”,1><“hadoop”,1><“world”,1>
B、<“hello”,2><“hadoop”,1><“world”,1>
C、<“hello”,<1,1>><“hadoop”,1><“world”,1>
D、<“hello”,1,1><“hadoop”,1><“world”,1>
正确答案: B
二.多选题
1.下列关于传统并行计算框架(比如MPI)和MapReduce并行计算框架比较正确的是
A、前者相比后者学习起来更难
B、前者所需硬件价格贵,可扩展性差,后者硬件便宜,扩展性好
C、前者适用于实时、细粒度计算、计算密集型,后者适用于批处理、非实时、数据密集型
D、前者是共享式(共享内存/共享存储),容错性差,后者是非共享式的,容错性好
正确答案: ABCD
2.MapReduce体系结构主要由哪几个部分组成
A、JobTracker
B、Task
C、TaskTracker
D、Client
正确答案: ABCD
答案解析:
Client、JobTracker、TaskTracker以及Task
三.判断题
1.MapReduce设计的一个理念就是“计算向数据靠拢”,而不是“数据向计算靠拢”,因为,移动数据需要大量的网络传输开销。
正确答案:√
2.两个键值对<“a”,1>和<“a”,1>,如果对其进行归并(merge),会得到<“a”,2>,如果对其进行合并(combine),会得到<“a”,<1,1>>
正确答案:×
答案解析:
两个键值对<“a”,1>和<“a”,1>,如果合并,会得到<“a”,2>,如果归并,会得到<“a”,<1,1>>
3.MapReduce采用分而治之策略,一个存储在分布式文件系统中的大规模数据集,会被切分成许多独立的分片,这些分片可以被多个Map任务并行处理。.
正确答案:√
4.所谓Shuffle过程,是指对Map输出结果进行分区、排序、合并等处理,并交给Reduce的过程。
正确答案:√
5.Reduce任务通过RPC向JobTracker询问Map任务是否已经完成,若完成,则领取数据
正确答案:√
八、Hadoop架构再探讨
1、试述在Hadoop推出之后其优化与发展主要体现在哪两个方面。
正确答案:
一方面是Hadoop自身两大核心组件MapReduce和HDFS的架构设计改进。
另一方面是Hadoop生态系统其它组件的不断丰富,加入了Pig、Tez、Spark和Kafka等新组件。
2、请描述HDFS HA架构组成组建及其具体功能
正确答案:
在一个典型的HA集群中,一般设置两个名称节点,其中一个名称节点处于“活跃”状态,另一个处于“待命”状态。处于活跃状态的名称节点负责对外处理所有客户端的请求,而处于待命状态的名称节点则作为备用节点,保存了足够多的系统元数据,当名称节点出现故障时提供快速回复能力也就是说,在HDFS HA中,处于待命状态的名称节点提供了“热备份”,一旦活跃名称节点出现故障,就可以立即切换到待命名称节点,不会影响到系统的正常对外服务。
3、请描述HDFS联邦中“块池”的概念,并分析为什么HDFS联邦中的一个名称节点失效,也不会影响到与它相关的数据节点继续为其他名称节点提供服务。
正确答案:
HDFS联邦拥有多个独立的命名空间,其中,每一个命名空间管理属于自己的一组块,这些属于同一个命名空间的块构成一个“块池”。每个数据节点会为多个块池提供块的存储。可以看出,数据节点是一个物理逻辑,而块池则属于逻辑概念,一个块池是一组块的逻辑集合,块池中的各个块实际上是存储在各个不同的数据节点中的。因此HDFS联邦中的一个名称节点失效,也不会影响到与它相关的数据节点继续为其他名称节点提供服务。
4、请描述YARN架构中各组件的功能。
正确答案:
ResourceManager
①处理客户端请求
②启动/监控ApplicationMaster
③监控NodeManager
④资源分配与调度
ApplicationMaster
①为应用程序申请资源,并分配给内部任务
②任务调度、监控与容错
NodeManager
①单个节点上的资源管理
②处理来自ResourceManager的命令
③处理来自ApplicationMaster的命令
选择题:
1.下列说法正确的是
A、第二名称节点无法解决单点故障问题
B、第二名称节点是热备份
C、HDFS HA提供高可用性,可以实现可扩展性、系统性能和隔离性
D、HDFS HA可用性不好
正确答案: A
答案解析:
第二名称节点无法提供热备份
2.HDFS Federation设计不能解决“单名称节点”存在的哪个问题
A、HDFS集群扩展性
B、良好的隔离性
C、单点故障问题
D、性能更高效
正确答案: C
二.多选题
1.下列哪些是Hadoop1.0存在的问题
A、开发者自己管理作业之间的依赖关系
B、表达能力有限
C、执行迭代操作效率低
D、抽象层次低
正确答案:ABCD
2.下列对Hadoop各组件的理解正确的是
A、Pig:处理大规模数据的脚本语言
B、Kafka:分布式发布订阅消息系统
C、Oozie:工作流和协作服务引擎
D、Tez:支持DAG作业的计算框架
正确答案: ABCD
3.对新一代资源管理调度框架YARN的理解正确的是
A、MapReduce2.0是运行在YARN之上的计算框架,由YARN来为MapReduce提供资源管理调度服务
B、YARN的体系结构包含三个组件:ResourceManager,NodeManager,ApplicationMaster
C、YARN可以实现“一个集群多个框架”,即在一个集群上部署一个统一的资源调度管理框架
D、YARN既是资源管理调度框架,也是一个计算框架
正确答案: ABC
答案解析:
YARN则是一个纯粹的资源调度管理框架
三.判断题
1.HDFS HA(High Availability)是为了解决单点故障问题。
正确答案:√
2.在HDFS Federation(HDFS联邦)中,设计了多个相互独立的名称节点,使得HDFS的命名服务能够水平扩展。
正确答案:√
3.相对于Hadoop1.0而言,Hadoop2.0主要增加了HDFS HA和HDFS Federation(联邦)等特性。
正确答案:√
九、Spark
1.Spark SQL目前暂时不支持下列哪种语言
A、Python
B、Java
C、Matlab
D、Scala
正确答案: C
2.RDD操作分为转换(Transformation)和动作(Action)两种类型,下列属于动作(Action)类型的操作的是
A、groupBy
B、filter
C、count
D、map
正确答案: C
3.下列说法错误的是
A、RDD提供的转换接口既适用filter等粗粒度的转换,也适合某一数据项的细粒度转换
B、RDD采用惰性调用,遇到“转换(Transformation)”类型的操作时,只会记录RDD生成的轨迹,只有遇到“动作(Action)”类型的操作时才会触发真正的计算
C、Spark支持三种类型的部署方式:Standalone,Spark on Mesos,Spark on YARN
D、在选择Spark Streaming和Storm时,对实时性要求高(比如要求毫秒级响应)的企业更倾向于选择流计算框架Storm
正确答案: A
4.下列关于常见的动作(Action)和转换(Transformation)操作的API解释错误的是
A、filter(func):筛选出满足函数func的元素,并返回一个新的数据集
B、take(n):返回数据集中的第n个元素
C、count():返回数据集中的元素个数
D、map(func):将每个元素传递到函数func中,并将结果返回为一个新的数据集
正确答案: B
5.下列大数据类型与其对应的软件框架不适应的是
A、复杂的批量数据处理:MapReduce
B、基于历史数据的交互式查询:Impala
C、图结构数据的计算:Hive
D、基于实时数据流的数据处理:Storm
正确答案: C
二.多选题
6.Apache软件基金会最重要的三大分布式计算系统开源项目包括
A、Hadoop
B、Spark
C、MapReduce
D、Storm
正确答案: ABD
7.Spark的主要特点包括
A、运行模式多样
B、运行速度快
C、容易使用
D、通用性好
正确答案: ABCD
8.下列关于Scala的说法正确的是
A、Scala是Spark的主要编程语言,但Spark还支持Java、Python、R作为编程语言
B、Scala运行于Java平台,兼容现有的Java程序
C、Scala是一种多范式编程语言
D、Scala具备强大的并发性,支持函数式编程
正确答案: ACD
9.Spark的运行架构包括
A、每个工作节点上负责具体任务的执行进程 Executor
B、运行作业任务的工作节点 Worker Node
C、集群资源管理器 Cluster Manager
D、每个应用的任务控制节点 Driver
正确答案: ABCD
三.填空题(共1题,10.0分)
10.RDD,全称是( ) ,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型。
正确答案:
第一空:
Resillient Distributed Dataset
第二空:
弹性分布式数据集