0

0

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

爱谁谁

爱谁谁

发布时间:2025-07-19 11:14:01

|

667人浏览过

|

来源于php中文网

原创

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核心数量越多,越能快速执行完分配给自己的所有任务线程。

AMiner
AMiner

AMiner——新一代智能型科技情报挖掘与服务系统,能够为你提供查找论文、理解论文、分析论文、写作论文四位一体一站式服务。

下载

参数调优建议: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

总结

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

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

相关专题

更多
线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

478

2023.08.10

Python 多线程与异步编程实战
Python 多线程与异步编程实战

本专题系统讲解 Python 多线程与异步编程的核心概念与实战技巧,包括 threading 模块基础、线程同步机制、GIL 原理、asyncio 异步任务管理、协程与事件循环、任务调度与异常处理。通过实战示例,帮助学习者掌握 如何构建高性能、多任务并发的 Python 应用。

143

2025.12.24

golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

73

2025.09.05

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

28

2025.11.16

golang map原理
golang map原理

本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

58

2025.11.17

java判断map相关教程
java判断map相关教程

本专题整合了java判断map相关教程,阅读专题下面的文章了解更多详细内容。

34

2025.11.27

default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

219

2023.12.07

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

967

2023.11.02

c++主流开发框架汇总
c++主流开发框架汇总

本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

25

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.9万人学习

Git 教程
Git 教程

共21课时 | 2.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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