本栏目大数据开发岗高频面试题主要出自
大数据技术
专栏的各个小专栏,由于个别笔记上传太早,排版杂乱,后面会进行原文美化、增加。
文章目录- 面试题 01、 spark工作机制?
- 面试题02、spark的优化怎么做?
- 面试题03、数据本地性是在哪个环节确定的?
- 面试题04、RDD的弹性表现在哪几点?
- 面试题05、RDD有哪些缺陷?
- 总结
停不要往下滑了,
默默想5min,
看看这5道面试题你都会吗?
代码语言:javascript复制面试题01、spark工作机制?
面试题02、spark的优化怎么做?
面试题03、数据本地性是在哪个环节确定的?
面试题04、RDD的弹性表现在哪几点?
面试题05、RDD有哪些缺陷?
以下答案仅供参考:
面试题 01、 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上运行,运行完释放所有资源
面试题02、spark的优化怎么做?
spark调优比较复杂,但是大体可以分为三个方面来进行
1)平台层面的调优:防止不必要的jar包分发,提高数据的本地性,选择高效的存储格式如parquet
2)应用程序层面的调优:过滤操作符的优化降低过多小任务,降低单条记录的资源开销,处理数据倾斜,复用RDD进行缓存,作业并行化执行等等
3)JVM层面的调优:设置合适的资源量,设置合理的JVM,启用高效的序列化方法如kyro,增大off head内存等等
面试题03、数据本地性是在哪个环节确定的?
具体的task运行在那他机器上,dag划分stage的时候确定的
面试题04、RDD的弹性表现在哪几点?
1)自动的进行内存和磁盘的存储切换;
2)基于Lineage的高效容错;
3)task如果失败会自动进行特定次数的重试;
4)stage如果失败会自动进行特定次数的重试,而且只会计算失败的分片;
5)checkpoint和persist,数据计算之后持久化缓存;
6)数据调度弹性,DAG TASK调度和资源无关;
7)数据分片的高度弹性。
面试题05、RDD有哪些缺陷?
1)不支持细粒度的写和更新操作(如网络爬虫),spark写数据是粗粒度的。所谓粗粒度,就是批量写入数据,为了提高效率。但是读数据是细粒度的也就是说可以一条条的读。
2)不支持增量迭代计算,Flink支持
总结
今天我们复习了面试中常考的Spark相关的五个问题,你做到心中有数了么?