1.【单选题】关于Spark中Structured Streaming的两个处理模型,以下哪一个选项是不正确的?
A.Structured Streaming包括两个处理模型,即微批处理模型和持续处理模型
B.Structured Streaming默认采用持续处理模型
C.如采用微批处理模型,流计算引擎在处理上一批次数据结束后,再对新数据进行批量查询。在下一个微批处理之前,要将数据的偏移范围保存在日志中
D.持续处理模型可以实现毫秒级延迟,启动一系列的连续读取、处理和写入结果任务
【解析】
选项A:Structured Streaming是构建在Spark SQL引擎上的流式数据处理引擎,使用Scala编写,具有容错功能,包括微批处理模型和持续处理模型两个处理模型。
选项B:Structured Streaming默认采用微批处理模型。
选项C:在下一个微批处理之前,要将数据的偏移范围保存在日志中。所以,只有在上一批次数据处理结束,同时偏移范围被记录到日志后,才能进行下一批次数据的处理,因此会有一定的延迟。
选项D:持续处理模型可以实现毫秒级延迟,启动一系列的连续读取、处理和写入结果任务。将数据的偏移范围异步写入日志,以实现连续处理,避免高延迟。但这是建立在牺牲一致性的基础上的,低延迟的情况下会丢失数据。
【答案】 B
2.【单选题】关于Spark Structured Streaming时间窗口的描述,以下哪一个选项是不正确的?
A.Structured Streaming支持处理时间和事件时间
B.Structured Streaming不支持利用watermark机制处理滞后数据
C.处理时间是指每台机器的系统时间,当流程序采用处理时间时,将使用各个实例的机器时间,事件时间是指事件在其设备上发生的时间,这个时间在事件进入
D.Structured Streaming之前已经嵌入事件,然后Structured Streaming可以提取该时间
【解析】
Structured Streaming支持处理时间和事件时间,同时支持利用watermark机制处理滞后数据。故选项B中Structured Streaming不支持利用watermark机制处理滞后数据的描述是不正确的。
【答案】 B
3.【单选题】关于Flink中TimeWindow分类的描述,以下哪一个选项是不正确的?
A.滚动窗口依据固定的窗口长度对数据进行切片
B.滑动窗口由固定的窗口长度和滑动间隔组成
C.滑动窗口的特点是时间对齐、窗口长度固定、无重叠
D.会话窗口在一段时间内没有接收到新数据就会生成新的窗口
【解析】
Flink中TimeWindow(时间窗口)分为滚动窗口、滑动窗口、会话窗口。
选项A:滚动窗口依据固定的窗口长度对数据进行切片,其特点是时间对称、窗口长度固定、无重叠。
选项B:滑动窗口是固定窗口的更广义的一种形式,滑动窗口由固定的窗口长度和滑动间隔组成。
选项C:滑动窗口的特点是时间对齐、窗口长度固定、有重叠。
选项D:会话窗口由一系列事件组合和一个指定时间长度的时间间隙(timeout)组成,类似于Web应用的会话(session),也就是在一段时间内没有接收到新数据就会生成新的窗口。
【答案】 C
4.【单选题】以下哪一个场景不属于Elasticsearch的应用场景?
A.日志搜索和分析
B.事务应用
C.时序检索
D.智能搜索
【解析】
Elasticsearch(分布式全文检索)是一个高性能、基于Lucene的全文检索服务,也是一个分布式的RESTful风格的搜索和数据分析引擎,此外,它还可以作为NoSQL数据库使用。
Elasticsearch适用于日志搜索和分析、时空检索、时序检索、智能搜索等场景,这些场景并不包含选项B中的事务应用,故正确答案为选项B。
【答案】 B
5.【单选题】在Yarn中,以下哪一个组件负责向调度器申请、释放资源,请求NodeManager运行任务、跟踪应用程序的状态并监控它们的进程?
A.ResourceManager
B.ApplicationMaster
C.NodeManager
D.Container
【解析】
选项A:ResourceManager负责集群中所有资源的统一管理和分配,它收集来自各个节点(NodeManager)的资源,并将收集的资源按照一定的策略分配给各个应用程序。
选项B:ApplicationMaster负责一个应用程序生命周期内的所有工作,具体包括与ResourceManager调度器协商以获取资源,将得到的资源进一步分配给内部任务(资源的二次分配);与NodeManager通信以启动/停止任务,监控应用程序的运行状态,并在应用程序运行失败时重新启动应用程序。
选项C:NodeManager是Yarn中每个节点上的代理,用于管理Hadoop集群中单个计算节点,其主要工作包括与ResourceManager保持通信,监督Container的生命周期管理,监控每个Container的资源(如内存、CPU等)使用情况,追踪节点健康状况,管理日志和不同应用程序用到的附属服务(Auxiliary Service)。
选项D:Container是Yarn中的资源抽象,可封装某个节点上的多维度资源,如内存、CPU、磁盘、网络等(目前仅封装了内存和CPU)。
【答案】 B
6.【多选题】在Flink中,TimeWindow可以根据窗口实现原理的不同分成以下哪些类别?
A.事件窗口(Event Window)
B.滚动窗口(Tumbling Window)
C.滑动窗口(Sliding Window)
D.会话窗口(Session Window)
【解析】
TimeWindow可以根据窗口实现原理的不同分成3类:滚动窗口(Tumbling Window)、滑动窗口(Sliding Window)和会话窗口(Session Window)。
【答案】 BCD
7.【多选题】关于Spark SQL与Hive的区别,以下哪些选项是正确的?
A.Spark SQL的执行速度是Hive的10~100倍
B.Spark SQL不支持bucket,Hive支持
C.Spark SQL依赖Hive的元数据
D.Spark SQL不能使用Hive的自定义函数
【解析】
Spark SQL与Hive的区别如下。
选项A:Spark SQL的执行引擎为Spark Core,Hive默认执行引擎为离线计算引擎MapReduce。Spark SQL的执行速度是Hive的10~100倍。
选项B:Spark SQL不支持bucket(桶),Hive支持。
选项C:Spark SQL依赖Hive的元数据。
选项D:Spark SQL兼容绝大部分Hive的语法和函数,Spark SQL可以使用Hive的自定义函数。
【答案】 ABC
8.【多选题】关于Spark Streaming与Storm的异同点,以下哪些说法是正确的?
A.Storm是纯实时的,来一条数据,处理一条数据;Spark Streaming是准实时的,将一个时间段内的数据收集起来,作为一个RDD处理
B.Storm的延迟度为毫秒级,Spark Streaming的延迟度为秒级
C.Storm支持事务机制,Spark Streaming也支持,但不够完善
D.Storm和Spark Streaming的容错性都依赖ZooKeeper
【解析】
选项A:Storm是纯实时的,来一条数据,处理一条数据;Spark Streaming是准实时的,将一个时间段内的数据收集起来,作为一个RDD处理。
选项B:Storm的延迟度为毫秒级,Spark Streaming 的延迟度为秒级。
选项C:Storm支持完善的事务机制,Spark Streaming也支持事务机制,但不够完善。
选项D:Storm具有非常强的容错性,使用ZooKeeper和Acker进行容错处理,Spark Streaming的容错性一般,使用checkpoint和WAL进行容错处理动态调整。
【答案】 ABC
9.【多选题】在Spark中,以下哪些算子属于窄依赖?
A.map
B.union
C.groupByKey
D.reduceByKey
【解析】
在Spark中,属于窄依赖的算子主要包括map、flatMap、filter和union。
选项A:map算子可用作最基本的转换操作,它会将一个函数应用于RDD的每个元素。map操作不会产生数据混洗,因此它属于窄依赖。
选项B:union用于合并两个或多个RDD,它只会简单地将多个RDD的元素合并到一起,并不涉及数据的重分区,因此它也属于窄依赖。
选项C:groupByKey会将具有相同键的所有记录分组在一起。这个过程涉及数据混洗,因为需要跨分区地移动数据以根据键进行分组,所以它是典型的属于宽依赖的算子。
选项D:reduceByKey根据键来聚合数据,但它在每个分区内先执行局部归约,然后跨分区合并结果。尽管reduceByKey比groupByKey更为高效,但它仍然需要进行数据混洗来完成整个归约过程,因此它也被认为属于宽依赖。
【答案】 AB
10.【判断题】在HBase表结构中,每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引。
【解析】
HBase表拥有4个元素,分别是行键、列族、列限定符和时间戳。HBase表中的每个单元格都保存着同一份数据的多个版本,这些版本采用不同的时间戳进行索引。
【答案】 正确
11.【判断题】在Flink延迟数据处理机制中,Allowed Lateness机制允许用户设置一个允许的最大延迟时长。Flink会在窗口关闭后一直保存窗口的状态直至超过允许的最大延迟时长,这期间的延迟事件不会被丢弃,而是默认会触发窗口重新计算。
【解析】
在Flink延迟数据处理机制中,Allowed Lateness机制允许用户设置一个允许的最大延迟时长。这意味着,当窗口关闭后,Flink会保存窗口的状态,直到超过允许的最大延迟时长。在这期间,延迟到达的事件不会被丢弃,而是默认会触发窗口计算。这样可以确保数据的完整性和准确性,但同时也会增加计算的复杂性和延迟。
【答案】 正确
12.【判断题】在Flink流处理时间分类中,ingestion time指的是事件到达流处理系统的时间。
【解析】
在Flink流处理时间分类中每个事件的时间可以分为3种:event time(即事件发生的时间)、ingestion time(即事件到达流处理系统的时间)和processing time(即事件被流处理系统处理的时间)。
【答案】 正确