首页 > 运维 > linux运维 > 正文

大数据开发岗面试复习30天冲刺 - 日积月累,每日五题【Day30】——Spakr数据调优(文末附完整文档)

爱谁谁
发布: 2025-07-19 11:14:01
原创
664人浏览过

juejin前言

大数据开发岗面试复习30天冲刺 - 日积月累,每日五题【day30】——spakr数据调优(文末附完整文档)

文章目录

  • juejin前言
  • 面试题 01、运行资源优化配置 -num-executors
  • 面试题 02、运行资源优化配置 -executor-memory
  • 面试题 03、运行资源优化配置 -executor-cores
  • 面试题 04、运行资源优化配置 -driver-memory
  • 面试题 05、运行资源优化配置 -spark.default.parallelism
  • 文档链接
  • 总结

停,不要往下滑了,静静思考5分钟,看看这些面试题你都掌握了吗?

一个CPU核心同一时间只能执行一个线程。而每个Executor进程分配到的多个任务,都是以每个任务一个线程的方式,多线程并发运行的。

一个应用提交时应该设置多大的内存?设置多少个核心?设置几个Executor?

以下答案仅供参考:

./bin/spark-submit \
--master yarn-cluster \
--num-executors 100 \
--executor-memory 6G \
--executor-cores 4 \
--driver-memory 1G \
--conf spark.default.parallelism=1000 \
--conf spark.storage.memoryFraction=0.5 \
--conf spark.shuffle.memoryFraction=0.3 \
登录后复制

面试题 01、运行资源优化配置 -num-executors

参数说明:此参数用于设定Spark作业总共使用多少个Executor进程来执行。Driver在向YARN集群管理器请求资源时,YARN集群管理器会尽量按照你的设定,在集群的各个工作节点上启动相应数量的Executor进程。这个参数非常重要,如果未设定,默认只会启动少量的Executor进程,此时你的Spark作业运行速度会非常慢。

参数调优建议:每个Spark作业运行时,一般设定50到100个Executor进程比较合适,设定太少或太多都不好。设定太少,无法充分利用集群资源;设定太多,队列可能无法提供足够的资源。

面试题 02、运行资源优化配置 -executor-memory

参数说明:此参数用于设定每个Executor进程的内存。Executor内存的大小,通常直接决定了Spark作业的性能,并且与常见的JVM OOM异常有直接关联。

参数调优建议:每个Executor进程的内存设定为4G到8G较为合适。但这只是一个参考值,具体设定还需根据不同部门的资源队列来定。可以查看团队的资源队列的最大内存限制,num-executors * executor-memory不能超过队列的最大内存量。

此外,如果你与团队其他成员共享这个资源队列,那么申请的内存量最好不要超过资源队列最大总内存的1/3到1/2,以免你的Spark作业占用队列所有资源,导致其他同事的作业无法运行。

面试题 03、运行资源优化配置 -executor-cores

参数说明:此参数用于设定每个Executor进程的CPU核心数量。这个参数决定了每个Executor进程并行执行任务线程的能力。因为每个CPU核心同一时间只能执行一个任务线程,因此每个Executor进程的CPU核心数量越多,越能快速执行完分配给自己的所有任务线程。

青柚面试
青柚面试

简单好用的日语面试辅助工具

青柚面试 57
查看详情 青柚面试

参数调优建议:Executor的CPU核心数量设定为2到4个较为合适。同样根据不同部门的资源队列来定,可以查看自己的资源队列的最大CPU核心限制是多少,再依据设定的Executor数量,决定每个Executor进程可以分配到几个CPU核心。同样建议,如果与他人共享这个队列,那么num-executors * executor-cores不要超过队列总CPU核心的1/3到1/2左右比较合适,以免影响其他同事的作业运行。

面试题 04、运行资源优化配置 -driver-memory

参数说明:此参数用于设定Driver进程的内存。

参数调优建议:Driver的内存通常不设定,或者设定为1G左右就足够了。唯一需要注意的是,如果需要使用collect算子将RDD的数据全部拉取到Driver上进行处理(或者使用map side join操作),那么必须确保Driver的内存足够大,否则会出现OOM内存溢出的问题。

面试题 05、运行资源优化配置 -spark.default.parallelism

参数说明:此参数用于设定每个stage的默认任务数量,也可以认为是分区数。这个参数极为重要,如果未设定可能会直接影响你的Spark作业性能。

参数调优建议:Spark作业的默认任务数量设定为500到1000个较为合适。很多人常犯的一个错误就是不去设定这个参数,那么此时就会导致Spark自己根据底层HDFS的block数量来设定任务的数量,默认是一个HDFS block对应一个任务。通常来说,Spark默认设定的数量是偏少的(比如就几十个任务),如果任务数量偏少的话,就会导致你前面设定好的Executor的参数都前功尽弃。试想一下,无论你的Executor进程有多少个,内存和CPU有多大,但是任务只有1个或者10个,那么90%的Executor进程可能根本就没有任务执行,也就是白白浪费了资源!因此Spark官网建议的设定原则是,设定该参数为num-executors * executor-cores的2到3倍较为合适,比如Executor的总CPU核心数量为300个,那么设定1000个任务是可以的,此时可以充分利用Spark集群的资源。

文档链接

大数据精选面试题目160道.docx

总结

今天我们复习了面试中常考的数据倾斜相关的五个问题,你是否已经了然于心了呢?其实做这个专栏我也有私心,就是希望借助每天写一篇面试题,督促自己学习,以免在面试期间尴尬!平时不流汗,面试多流泪!

对了,如果你的朋友也在准备面试,请将这个系列分享给他。好了,今天就到这里,学废了的同学,记得在评论区留言:打卡。给同学们以激励。

以上就是大数据开发岗面试复习30天冲刺 - 日积月累,每日五题【Day30】——Spakr数据调优(文末附完整文档)的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号