1. Spark 的四大组件下面哪个不是 (D )
A.Spark Streaming
B Mlib
C Graphx
D Spark R
Spark SQL
2.下面哪个端口不是 spark 自带服务的端口 (C )
A.8080
B.4040
C.8090
D.18080
4040:单机调试窗口;
spark集群的web端口:8080
history server端口:18080
如果是集群模式,可以通过Spark日志服务器xxxxx:18088
或者yarn的UI进入到应用xxxx:8088,进入相应的Spark UI界面。
3.spark 1.4 版本的最大变化 (B )
A spark sql Release 版本
B 引入 Spark R
C DataFrame
D支持动态资源分配
R是一个广泛应用于统计计算和统计制图的优秀编程语言,2015年夏随着Spark 1.4版本一起发布
4. Spark Job 默认的调度模式 (A )
A FIFO
B FAIR
C 无
D 运行时指定
默认情况下,以FIFO(先进先出)方式调度。每个Job被切分为多个Stage
在FAIR共享模式下,Spark在多Job间以轮询(round robin)方式为任务分配资源,各任务用于大致相当的优先级来共享集群的资源
5.哪个不是本地模式运行的条件 ( D)
A spark.localExecution.enabled=true
B 显式指定本地运行
C finalStage无父Stage
D partition默认值
Partition与模式运行无较大关系
6.下面哪个不是 RDD 的特点 (C )
A. 可分区
B 可序列化
C 可修改
D 可持久化
一个RDD可以包含多个分区
可用Kryo进行序列化操作
RDD作为数据结构,本质上是一个只读的分区记录集合,不可修改,可以新建
对于多次使用的RDD将其持久化到缓存,persisit
7. 关于广播变量,下面哪个是错误的 (D )
A 任何函数调用
B 是只读的
C 存储在各个节点
D 存储在磁盘或HDFS
广播变量允许程序员将一个只读的变量缓存在每台机器上, 存储在executor中,也就是内存中
8. 关于累加器,下面哪个是错误的 (D )
A 支持加法
B 支持数值类型
C 可并行
D 不支持自定义类型
累加器:仅仅被相关操作累加的变量,在并行中被有效支持,原生只支持数值类型,编程者可以添加新类型的支持
9.Spark 支持的分布式部署方式中哪个是错误的 (D )
A standalone
B spark on mesos
C spark on YARN
D Spark on local
Standalone:独立模型
Spark on mesos:1)粗粒度模式2)细粒度模式
Spark on YARN:1)yarn-cluster:适用于生产环境2)yarn-client:适用于交互,调试
10.Stage的Task 的数量由什么决定 (A )
A Partition
B Job
C Stage
D TaskScheduler
Task数量由Partition决定,因为每一个 task 只是处理一个 partition 上的数据
11.下面哪个操作是窄依赖 (B )
A join
B filter
C group
D sort
窄依赖的函数有:map, filter, union, join(父RDD是hash-partitioned ), mapPartitions, mapValues
宽依赖的函数有:groupByKey, join(父RDD不是hash-partitioned ), partitionBy
12.下面哪个操作肯定是宽依赖 (C )
A map
B flatMap
C reduceByKey
D sample
同上
13.spark 的 master 和 worker 通过什么方式进行通信的? (D )
A http
B nio
C netty
D Akka
Spark的Client、Master、Worker之间的通信使用akka完成。
模块之间的通信机制可以分为基于消息的传递和基于资源共享的同步机制。
在Spak中的Client、Master和Worker实际上都是一个actor。
14 默认的存储级别 (A )
A MEMORY_ONLY
B MEMORY_ONLY_SER
C MEMORY_AND_DISK
D MEMORY_AND_DISK_SER
1.MEMORY_ONLY
使用未序列化的Java对象格式,将数据保存在内存中。如果内存不够存放所有的数据,则数据可能就不会进行持久化。那么下次对这个RDD执行算子操作时,那些没有被持久化的数据,需要从源头处重新计算一遍。这是默认的持久化策略,使用cache()方法时,实际就是使用的这种持久化策略。
2.MEMORY_AND_DISK
使用未序列化的Java对象格式,优先尝试将数据保存在内存中。如果内存不够存放所有的数据,会将数据写入磁盘文件中,下次对这个RDD执行算子时,持久化在磁盘文件中的数据会被读取出来使用。
3.MEMORY_ONLY_SER
基本含义同MEMORY_ONLY。唯一的区别是,会将RDD中的数据进行序列化,RDD的每个partition会被序列化成一个字节数组。这种方式更加节省内存,从而可以避免持久化的数据占用过多内存导致频繁GC。
4.MEMORY_AND_DISK_SER
基本含义同MEMORY_AND_DISK。唯一的区别是,会将RDD中的数据进行序列化,RDD的每个partition会被序列化成一个字节数组。这种方式更加节省内存,从而可以避免持久化的数据占用过多内存导致频繁GC。
15 spark.deploy.recoveryMode 不支持那种 (D )
A.ZooKeeper
B. FileSystem
D NONE
D Hadoop
缺省是NONE模式
16.下列哪个不是 RDD 的缓存方法 (C )
A persist()
B Cache()
C Memory()
A persist()
Set this RDD's storage level to persist its values across operations after the first time it is computed.
B Cache() Persist this RDD with the default storage level (MEMORY_ONLY
).
C Memory() RDD api中未找到该方法
17.Task 运行在下来哪里个选项中 Executor 上的工作单元 (C )
A Driver program
B. spark master
C.worker node
D Cluster manager
在每个WorkerNode上为某应用启动的一个进程,该进程负责运行任务,并且负责将数据存在内存或者磁盘上,每个任务都有各自独立的Executor。
Executor是一个执行Task的容器。它的主要职责是:
1、初始化程序要执行的上下文SparkEnv,解决应用程序需要运行时的jar包的依赖,加载类。
2、同时还有一个ExecutorBackend向cluster manager汇报当前的任务状态,这一方面有点类似hadoop的tasktracker和task。
总结:Executor是一个应用程序运行的监控和执行容器。
18.hive 的元数据存储在 derby 和 MySQL 中有什么区别 (B )
A.没区别
B.多会话
C.支持网络环境
D数据库的区别
知识点暂未明确
19.DataFrame 和 RDD 最大的区别 (B )
A.科学统计支持
B.多了 schema
C.存储方式不一样
D.外部数据源支持
DataFrame多了数据的结构信息,即schema。RDD是分布式的Java对象的集合。DataFrame是分布式的Row对象的集合。DataFrame除了提供了比RDD更丰富的算子以外,更重要的特点是提升执行效率、减少数据读取以及执行计划的优化,比如filter下推、裁剪等。
20.Master 的 ElectedLeader 事件后做了哪些操作 (D )
A. 通知 driver
B.通知 worker
C.注册 application
D.直接 ALIVE
Master在Spark第一次启动时会处于ALIVE状态,其他时候则会处于RECOVERING状态