大数据开发岗面试复习30天冲刺 - 日积月累,每日五题【Day27】——Spark14

2021-12-07 09:23:39 浏览数 (1)

本栏目大数据开发岗高频面试题主要出自大数据技术专栏的各个小专栏,由于个别笔记上传太早,排版杂乱,后面会进行原文美化、增加。

文章目录
  • 面试题 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相关的五个问题,你做到心中有数了么?

0 人点赞