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

2021-12-07 09:21:33 浏览数 (1)

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

文章目录
  • 面试题 01、spark.default.parallelism这个参数有什么意义,实际生产中如何设置?
  • 面试题02、spark.shuffle.memoryFraction参数的含义,以及优化经验?
  • 面试题03、Spark中standalone模式特点,有哪些优点和缺点?
  • 面试题04、FIFO调度模式的基本原理、优点和缺点?
  • 面试题05、FAIR调度模式的优点和缺点?
  • 总结

停不要往下滑了,

默默想5min,

看看这5道面试题你都会吗?

代码语言:javascript复制
面试题 01、spark.default.parallelism这个参数有什么意义,实际生产中如何设置?
面试题02、spark.shuffle.memoryFraction参数的含义,以及优化经验?
面试题 03、Spark中standalone模式特点,有哪些优点和缺点?
面试题04、FIFO调度模式的基本原理、优点和缺点?
面试题05、FAIR调度模式的优点和缺点?

以下答案仅供参考:

面试题 01、spark.default.parallelism这个参数有什么意义,实际生产中如何设置?

1)参数用于设置每个stage的默认task数量。这个参数极为重要,如果不设置可能会直接影响你的Spark作业性能; 2)很多人都不会设置这个参数,会使得集群非常低效,你的cpu,内存再多,如果task始终为1,那也是浪费, spark官网建议task个数为CPU的核数*executor的个数的2~3倍。

面试题02、spark.shuffle.memoryFraction参数的含义,以及优化经验?

1)spark.shuffle.memoryFraction是shuffle调优中 重要参数,shuffle从上一个task拉去数据过来,要在Executor进行聚合操作, 聚合操作时使用Executor内存的比例由该参数决定,默认是20%如果聚合时数据超过了该大小,那么就会spill到磁盘,极大降低性能; 2)如果Spark作业中的RDD持久化操作较少,shuffle操作较多时,建议降低持久化操作的内存占比,提高shuffle操作的内存占比比例, 避免shuffle过程中数据过多时内存不够用,必须溢写到磁盘上,降低了性能。此外,如果发现作业由于频繁的gc导致运行缓慢,意味着task执行用户代码的内存不够用, 那么同样建议调低这个参数的值。

面试题03、Spark中standalone模式特点,有哪些优点和缺点?

1)特点: (1)standalone是master/slave架构,集群由Master与Worker节点组成,程序通过与Master节点交互申请资源,Worker节点启动Executor运行; (2)standalone调度模式使用FIFO调度方式; (3)无依赖任何其他资源管理系统,Master负责管理集群资源。 2)优点: (1)部署简单; (2)不依赖其他资源管理系统。 3)缺点: (1)默认每个应用程序会独占所有可用节点的资源,当然可以通过spark.cores.max来决定一个应用可以申请的CPU cores个数; (2)可能有单点故障,需要自己配置master HA。

面试题04、FIFO调度模式的基本原理、优点和缺点?

基本原理:按照先后顺序决定资源的使用,资源优先满足最先来的job。 第一个job优先获取所有可用的资源,接下来第二个job再获取剩余资源。 以此类推,如果第一个job没有占用所有的资源,那么第二个job还可以继续获取剩余资源,这样多个job可以并行运行,如果第一个job很大,占用所有资源, 则第二job就需要等待,等到第一个job释放所有资源。 优点和缺点: 1)适合长作业,不适合短作业; 2)适合CPU繁忙型作业(计算时间长,相当于长作业),不利于IO繁忙型作业(计算时间短,相当于短作业)。

面试题05、FAIR调度模式的优点和缺点?

所有的任务拥有大致相当的优先级来共享集群资源,spark多以轮训的方式为任务分配资源,不管长任务还是端任务都可以获得资源,并且获得不错的响应时间, 对于短任务,不会像FIFO那样等待较长时间了,通过参数spark.scheduler.mode 为FAIR指定。

总结

今天我们复习了面试中常考的Spark相关的五个问题,你做到心中有数了么?

0 人点赞