
停,不要往下滑了,静静思考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 \
参数说明:此参数用于设定Spark作业总共使用多少个Executor进程来执行。Driver在向YARN集群管理器请求资源时,YARN集群管理器会尽量按照你的设定,在集群的各个工作节点上启动相应数量的Executor进程。这个参数非常重要,如果未设定,默认只会启动少量的Executor进程,此时你的Spark作业运行速度会非常慢。
参数调优建议:每个Spark作业运行时,一般设定50到100个Executor进程比较合适,设定太少或太多都不好。设定太少,无法充分利用集群资源;设定太多,队列可能无法提供足够的资源。
参数说明:此参数用于设定每个Executor进程的内存。Executor内存的大小,通常直接决定了Spark作业的性能,并且与常见的JVM OOM异常有直接关联。
参数调优建议:每个Executor进程的内存设定为4G到8G较为合适。但这只是一个参考值,具体设定还需根据不同部门的资源队列来定。可以查看团队的资源队列的最大内存限制,num-executors * executor-memory不能超过队列的最大内存量。
此外,如果你与团队其他成员共享这个资源队列,那么申请的内存量最好不要超过资源队列最大总内存的1/3到1/2,以免你的Spark作业占用队列所有资源,导致其他同事的作业无法运行。
参数说明:此参数用于设定每个Executor进程的CPU核心数量。这个参数决定了每个Executor进程并行执行任务线程的能力。因为每个CPU核心同一时间只能执行一个任务线程,因此每个Executor进程的CPU核心数量越多,越能快速执行完分配给自己的所有任务线程。
参数调优建议:Executor的CPU核心数量设定为2到4个较为合适。同样根据不同部门的资源队列来定,可以查看自己的资源队列的最大CPU核心限制是多少,再依据设定的Executor数量,决定每个Executor进程可以分配到几个CPU核心。同样建议,如果与他人共享这个队列,那么num-executors * executor-cores不要超过队列总CPU核心的1/3到1/2左右比较合适,以免影响其他同事的作业运行。
参数说明:此参数用于设定Driver进程的内存。
参数调优建议:Driver的内存通常不设定,或者设定为1G左右就足够了。唯一需要注意的是,如果需要使用collect算子将RDD的数据全部拉取到Driver上进行处理(或者使用map side join操作),那么必须确保Driver的内存足够大,否则会出现OOM内存溢出的问题。
参数说明:此参数用于设定每个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集群的资源。
今天我们复习了面试中常考的数据倾斜相关的五个问题,你是否已经了然于心了呢?其实做这个专栏我也有私心,就是希望借助每天写一篇面试题,督促自己学习,以免在面试期间尴尬!平时不流汗,面试多流泪!
对了,如果你的朋友也在准备面试,请将这个系列分享给他。好了,今天就到这里,学废了的同学,记得在评论区留言:打卡。给同学们以激励。
以上就是大数据开发岗面试复习30天冲刺 - 日积月累,每日五题【Day30】——Spakr数据调优(文末附完整文档)的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号