没有合适的资源?快使用搜索试试~ 我知道了~
大数据Spark面试题汇总,共有79道面试题以及题目的解答 部分题目如下: 1. spark 的有几种部署模式,每种模式特点? 2. Spark 为什么比 mapreduce 快? 3. 简单说一下 hadoop 和 spark 的 shuffle 相同和差异? 5. spark 的优化怎么做? 6. 数据本地性是在哪个环节确定的? 7. RDD 的弹性表现在哪几点? 8. RDD 有哪些缺陷? 9. Spark 的 shuffle 过程? 10. Spark 的数据本地性有哪几种? 11. Spark 为什么要持久化,一般什么场景下要进行 persist 操作? 12. 介绍一下 join 操作优化经验? 13. 描述 Yarn 执行一个任务的过程? 14. Spark on Yarn 模式有哪些优点? 15. 谈谈你对 container 的理解? 16. Spark 使用 parquet 文件存储格式能带来哪些好处? 17. 介绍 parition 和 block 有什么关联关系? 18. Spark 应用程序的执行过程是什么?
资源推荐
资源详情
资源评论
目录
1. spark 的有几种部署模式,每种模式特点?
.................................................................................. 2
2. Spark 为什么比 mapreduce 快?
...................................................................................................... 2
3. 简单说一下 hadoop 和 spark 的 shuffle 相同和差异?
............................................................... 3
5. spark 的优化怎么做?
...................................................................................................................... 4
6. 数据本地性是在哪个环节确定的?
................................................................................................. 4
7. RDD 的弹性表现在哪几点?
.............................................................................................................. 4
8. RDD 有哪些缺陷?
.............................................................................................................................. 4
9. Spark 的 shuffle 过程?
.................................................................................................................. 4
10. Spark 的数据本地性有哪几种?
.................................................................................................... 5
11. Spark 为什么要持久化,一般什么场景下要进行 persist 操作?
............................................ 5
12. 介绍一下 join 操作优化经验?
..................................................................................................... 5
13. 描述 Yarn 执行一个任务的过程?
................................................................................................. 6
14. Spark on Yarn 模式有哪些优点?
............................................................................................... 6
15. 谈谈你对 container 的理解?
....................................................................................................... 7
16. Spark 使用 parquet 文件存储格式能带来哪些好处?
................................................................ 7
17. 介绍 parition 和 block 有什么关联关系?
................................................................................. 7
18. Spark 应用程序的执行过程是什么?
............................................................................................ 8
20. Sort-based shuffle 的缺陷?
........................................................................................................ 8
23. Spark 有哪两种算子?
.................................................................................................................... 9
24. Spark 有哪些聚合类的算子,我们应该尽量避免什么类型的算子?
.......................................... 9
25. 如何从 Kafka 中获取数据?
......................................................................................................... 10
26. RDD 创建有哪几种方式?
.............................................................................................................. 10
27. Spark 并行度怎么设置比较合适?
.............................................................................................. 10
28. Spark 如何处理不能被序列化的对象?
...................................................................................... 10
34. Spark 技术栈有哪些组件,每个组件都有什么功能,适合什么应用场景?
.......................... 12
35. Spark 中 Worker 的主要工作是什么?
........................................................................................ 12
37. RDD 机制?
...................................................................................................................................... 13
38. 什么是 RDD 宽依赖和窄依赖?
..................................................................................................... 13
42. RDD 通过 Linage(记录数据更新)的方式为何很高效?
......................................................... 14
43. 为什么要进行序列化序列化?
..................................................................................................... 14
45. 提交任务时,如何指定 Spark Application 的运行模式?
..................................................... 15
48. 运行在 yarn 中 Application 有几种类型的 container?
........................................................ 15
49. Executor 启动时,资源通过哪几个参数指定?
........................................................................ 16
50. 为什么会产生 yarn,解决了什么问题,有什么优势?
............................................................ 16
51. 一个 task 的 map 数量由谁来决定?
........................................................................................... 16
52. 列出你所知道的调度器,说明其工作原理?
............................................................................. 16
53. 导致 Executor 产生 FULL gc 的原因,可能导致什么问题?
.................................................. 16
54. Spark 累加器有哪些特点?
.......................................................................................................... 17
56. RangePartitioner 分区的原理?
................................................................................................ 17
58. 如何理解 Standalone 模式下,Spark 资源分配是粗粒度的?
................................................ 18
62. 什么是 shuffle,以及为什么需要 shuffle?
........................................................................... 18
63. Spark 中的 HashShufle 的有哪些不足?
.................................................................................... 19
67. Spark 中 standalone 模式特点,有哪些优点和缺点?
............................................................ 20
68. FIFO 调度模式的基本原理、优点和缺点?
................................................................................ 20
69. FAIR 调度模式的优点和缺点?
.................................................................................................... 20
70. CAPCACITY 调度模式的优点和缺点?
.......................................................................................... 21
72. 使用 scala 代码实现 WordCount?
.............................................................................................. 21
73. Spark RDD 和 MapReduce2 的区别?
.......................................................................................... 22
75. Spark sql 为什么比 hive 快呢?
................................................................................................ 22
76. RDD 的数据结构是怎么样的?
...................................................................................................... 22
78. 说说你对 Hadoop 生态的认识。
................................................................................................... 23
1. spark 的有几种部署模式,每种模式特点?
1)本地模式
Spark 不一定非要跑在 hadoop 集群,可以在本地,起多个线程的方式来指定。将 Spark 应
用以多线程的方式直接运行在本地,一般都是为了方便调试,本地模式分三类
local:只启动一个 executor
local[k]:启动 k 个 executor
local[*]:启动跟 cpu 数目相同的 executor
2)standalone 模式
分布式部署集群,自带完整的服务,资源管理和任务监控是 Spark 自己监控,这个模式也
是其他模式的基础。
3)Spark on yarn 模式
分布式部署集群,资源和任务监控交给 yarn 管理,但是目前仅支持粗粒度资源分配方式,
包含 cluster 和 client 运行模式,cluster 适合生产,driver 运行在集群子节点,具有容
错功能,client 适合调试,dirver 运行在客户端。
4)Spark On Mesos 模式。
官方推荐这种模式(当然,原因之一是血缘关系)。正是由于 Spark 开发之初就考虑到支持
Mesos,因此,目前而言,Spark 运行在 Mesos 上会比运行在 YARN 上更加灵活,更加自然。
用户可选择两种调度模式之一运行自己的应用程序:
(1)粗粒度模式(Coarse-grained Mode):每个应用程序的运行环境由一个 Dirver 和若
干个 Executor 组成,其中,每个 Executor 占用若干资源,内部可运行多个 Task(对应多
少个“slot”)。应用程序的各个任务正式运行之前,需要将运行环境中的资源全部申请好,
且运行过程中要一直占用这些资源,即使不用,最后程序运行结束后,回收这些资源。
(2)细粒度模式(Fine-grained Mode):鉴于粗粒度模式会造成大量资源浪费,Spark On
Mesos 还提供了另外一种调度模式:细粒度模式,这种模式类似于现在的云计算,思想是按
需分配。
2. Spark 为什么比 mapreduce 快?
1)基于内存计算,减少低效的磁盘交互;
2)高效的调度算法,基于 DAG;
3)容错机制 Linage,精华部分就是 DAG 和 Lingae
3. 简单说一下 hadoop 和 spark 的 shuffle 相同和差异?
1)从 high-level 的角度来看,两者并没有大的差别。 都是将 mapper(Spark 里是
ShuffleMapTask)的输出进行 partition,不同的 partition 送到不同的 reducer(Spark
里 reducer 可能是下一个 stage 里的 ShuffleMapTask,也可能是 ResultTask)。Reducer
以内存作缓冲区,边 shuffle 边 aggregate 数据,等到数据 aggregate 好以后进行
reduce() (Spark 里可能是后续的一系列操作)。
2)从 low-level 的角度来看,两者差别不小。 Hadoop MapReduce 是 sort-based,进入
combine() 和 reduce() 的 records 必须先 sort。这样的好处在于 combine/reduce() 可
以处理大规模的数据,因为其输入数据可以通过外排得到(mapper 对每段数据先做排序,
reducer 的 shuffle 对 排 好 序 的 每 段 数 据 做 归 并 )。 目 前 的 Spark 默 认 选 择 的 是
hash-based,通常使用 HashMap 来对 shuffle 来的数据进行 aggregate,不会对数据进行
提前排序。如果用户需要经过排序的数据,那么需要自己调用类似 sortByKey() 的操作;
如果你是 Spark 1.1 的用户,可以将 spark.shuffle.manager 设置为 sort,则会对数据进
行排序。在 Spark 1.2 中,sort 将作为默认的 Shuffle 实现。
3)从实现角度来看,两者也有不少差别。 Hadoop MapReduce 将处理流程划分出明显的几
个阶段:map(), spill, merge, shuffle, sort, reduce() 等。每个阶段各司其职,可以
按照过程式的编程思想来逐一实现每个阶段的功能。在 Spark 中,没有这样功能明确的阶
段,只有不同的 stage 和一系列的 transformation(),所以 spill, merge, aggregate 等
操作需要蕴含在 transformation() 中。
如果我们将 map 端划分数据、持久化数据的过程称为 shuffle write,而将 reducer 读
入数据、aggregate 数据的过程称为 shuffle read。那么在 Spark 中,问题就变为怎么在
job 的逻辑或者物理执行图中加入 shuffle write 和 shuffle read 的处理逻辑?以及两
个处理逻辑应该怎么高效实现?
Shuffle write 由于不要求数据有序,shuffle write 的任务很简单:将数据 partition 好,
并持久化。之所以要持久化,一方面是要减少内存存储空间压力,另一方面也是为了
fault-tolerance。
4. spark 工作机制?
① 构建 Application 的运行环境,Driver 创建一个 SparkContext
② SparkContext 向资源管理器(Standalone、Mesos、Yarn)申请 Executor 资源,资源管
理器启动 StandaloneExecutorbackend(Executor)
③ Executor 向 SparkContext 申请 Task
④ SparkContext 将应用程序分发给 Executor
⑤ SparkContext 就建成 DAG 图,DAGScheduler 将 DAG 图解析成 Stage,每个 Stage 有多个
task,形成 taskset 发送给 task Scheduler,由 task Scheduler 将 Task 发送给 Executor
运行
⑥ Task 在 Executor 上运行,运行完释放所有资源
5. spark 的优化怎么做?
spark 调优比较复杂,但是大体可以分为三个方面来进行
1)平台层面的调优:防止不必要的 jar 包分发,提高数据的本地性,选择高效的存储格式
如 parquet
2)应用程序层面的调优:过滤操作符的优化降低过多小任务,降低单条记录的资源开销,
处理数据倾斜,复用 RDD 进行缓存,作业并行化执行等等
3)JVM 层面的调优:设置合适的资源量,设置合理的 JVM,启用高效的序列化方法如 kyro,
增大 off head 内存等等
6. 数据本地性是在哪个环节确定的?
具体的 task 运行在那他机器上,dag 划分 stage 的时候确定的
7. RDD 的弹性表现在哪几点?
1)自动的进行内存和磁盘的存储切换;
2)基于 Lineage 的高效容错;
3)task 如果失败会自动进行特定次数的重试;
4)stage 如果失败会自动进行特定次数的重试,而且只会计算失败的分片;
5)checkpoint 和 persist,数据计算之后持久化缓存;
6)数据调度弹性,DAG TASK 调度和资源无关;
7)数据分片的高度弹性。
8. RDD 有哪些缺陷?
1)不支持细粒度的写和更新操作(如网络爬虫),spark 写数据是粗粒度的。所谓粗粒度,
就是批量写入数据,为了提高效率。但是读数据是细粒度的也就是说可以一条条的读。
2)不支持增量迭代计算,Flink 支持
9. Spark 的 shuffle 过程?
从下面三点去展开
1)shuffle 过程的划分
2)shuffle 的中间结果如何存储
3)shuffle 的数据如何拉取过来
可以参考这篇博文:http://www.cnblogs.com/jxhd1/p/6528540.html
剩余22页未读,继续阅读
资源评论
修破立生
- 粉丝: 3748
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功