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

juejin前言

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

文章目录

juejin前言面试题 01、运行%ignore_a_1%配置 -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核心数量越多,越能快速执行完分配给自己的所有任务线程。

参数调优建议: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数据调优(文末附完整文档)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/13104.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
B站明日凌晨3点独家首发!国产单机新实机演示
上一篇 2025年11月21日 17:40:33
如何在Java中配置IDE支持JavaFX开发
下一篇 2025年11月21日 17:42:35

相关推荐

  • sublime怎么配置ctags实现函数跳转_Sublime配置CTags实现代码定义与函数跳转

    sublime怎么配置ctags实现函数跳转_Sublime配置CTags实现代码定义与函数跳转sublime怎么配置ctags实现函数跳转_Sublime配置CTags实现代码定义与函数跳转sublime怎么配置ctags实现函数跳转_Sublime配置CTags实现代码定义与函数跳转sublime怎么配置ctags实现函数跳转_Sublime配置CTags实现代码定义与函数跳转

    答案:配置Sublime Text函数跳转需安装CTags工具并设置SublimeCTags插件。先通过包管理器或手动安装Universal/Exuberant Ctags,确保命令行可执行;再在Sublime中用Package Control安装SublimeCTags插件;接着在用户设置中指定c…

    2026年9月28日 • 用户投稿
    000
  • linux线程怎么查看

    linux线程怎么查看linux线程怎么查看linux线程怎么查看linux线程怎么查看

    Linux 提供了多种查看线程的方法:1. 使用 ps -efL 命令查看 PID 和线程状态;2. 使用 top 命令按下 “H” 和 “t” 键查看 CPU 使用率;3. 使用 pstree -p 命令显示进程和线程层次结构;4. 导航到 /pro…

    2026年9月28日 • 用户投稿
    200
  • linux怎么查看端口

    linux怎么查看端口linux怎么查看端口linux怎么查看端口linux怎么查看端口

    在 Linux 系统中查看端口的方法有:netstat 命令:netstat -tulpnlsof 命令:lsof -i -P -nss 命令:ss -tulpenfuser 命令:fuser -n tcp [端口号] 如何在 Linux 中查看端口 在 Linux 系统中查看端口的方法有多种,本文…

    2026年9月28日 • 用户投稿
    200
  • linux md5命令怎么用

    linux md5命令怎么用linux md5命令怎么用linux md5命令怎么用linux md5命令怎么用

    md5 命令是一种计算文件 MD5 摘要的实用程序,利用哈希函数将输入转换为唯一指纹。其语法为:md5 [选项] 文件名。选项包括:-q(静默模式)、-r(递归模式)、-s(输出摘要值和文件名)、-c(比较摘要值)。使用示例:计算 my_file.txt 的摘要:md5 my_file.txt;递归…

    2026年9月28日 • 用户投稿
    100
  • sublime怎么查找替换_Sublime Text文件内查找与替换功能详解

    sublime怎么查找替换_Sublime Text文件内查找与替换功能详解sublime怎么查找替换_Sublime Text文件内查找与替换功能详解sublime怎么查找替换_Sublime Text文件内查找与替换功能详解sublime怎么查找替换_Sublime Text文件内查找与替换功能详解

    掌握Sublime Text查找替换功能可大幅提升编辑效率。使用Ctrl+F/Cmd+F查找,Ctrl+H/Cmd+Option+F替换,支持区分大小写、全词匹配和正则表达式;启用正则模式可处理复杂文本,如用(d+)匹配数字并用$1引用;结合Alt+F3多光标编辑与实时预览,实现精准批量修改。 Su…

    2026年9月28日 • 用户投稿
    200
  • linux管道命令怎么打

    linux管道命令怎么打linux管道命令怎么打linux管道命令怎么打linux管道命令怎么打

    管道命令在 Linux 中通过管道符(|)创建,使一个命令的输出成为另一个命令的输入。例如,ls | grep .txt 将列出以 .txt 结尾的文件。管道中的多个命令可将输出作为后续命令的输入,例如,ls | grep .txt | wc -l 统计以 .txt 结尾的文件数量。管道可传递选项,…

    2026年9月28日 • 用户投稿
    100
  • linux权限命令怎么设置

    linux权限命令怎么设置linux权限命令怎么设置linux权限命令怎么设置linux权限命令怎么设置

    要设置 Linux 文件和目录权限,可以使用 chmod 命令。chmod 命令的语法为:chmod [选项] 模式 文件/目录,其中选项有 -R(递归设置权限)、-v(显示设置权限的操作结果),而模式由三位数字组成,分别表示用户、组和其他用户的权限。如需设置文件所有者的读、写、执行权限,可输入 c…

    2026年9月27日 • 用户投稿
    100
  • linux退出命令怎么设置

    linux退出命令怎么设置linux退出命令怎么设置linux退出命令怎么设置linux退出命令怎么设置

    退出 Linux 命令行界面有多种方法:快捷键:Ctrl+D 退出 shell,Ctrl+C 终止命令。命令:exit 退出 shell,logout 退出当前用户。自定义退出快捷键:在 .bashrc 文件中添加 bindkey 语句。自定义退出命令:export PROMPT_COMMAND=&…

    2026年9月27日 • 用户投稿
    100
  • linux怎么部署web项目

    linux怎么部署web项目linux怎么部署web项目linux怎么部署web项目linux怎么部署web项目

    在 Linux 上部署 Web 项目需要以下步骤:准备环境:安装 Web 服务器(如 Apache 或 Nginx)、PHP、MySQL 等。部署项目:将项目文件复制到 Web 根目录,配置 Web 服务器指向项目目录,并配置 PHP。配置 Web 服务器:对于 Apache 编辑 000-defa…

    2026年9月27日 • 用户投稿
    100
  • VSCode如何优化文件搜索速度 VSCode全局搜索的性能优化建议

    vscode文件搜索慢的核心原因是未合理排除无关文件及系统环境限制,解决方法是一套组合拳:1. 配置search.exclude在settings.json中排除node_modules、dist等无关文件夹;2. 确保使用.gitignore并开启search.useignorefiles;3. …

    2026年9月27日
    100
  • 【Linux/C++】Linux下C++命令行编译示例

    本文是关于c++++编程语言基础和linux系统操作基础的系列文章的第二部分。我们将详细介绍在linux环境下如何编译c++代码,并展示相关的编译示例和技巧。 文章目录 准备源代码编译实战引入目录进行编译使用-Wall、-std 参数进行编译生成库文件链接静态库生成可执行文件链接动态库生成可执行文件…

    2026年9月27日
    200
  • linux脚本怎么写

    linux脚本怎么写linux脚本怎么写linux脚本怎么写linux脚本怎么写

    编写 Linux 脚本涉及以下步骤:选择脚本语言(例如 Bash、Python)创建脚本文件并添加 Shebang 行(例如,#!/bin/bash)编写脚本内容,包括变量、命令、循环和条件语句赋予执行权限(chmod +x script.sh)运行脚本(./script.sh)脚本结构通常包括:S…

    2026年9月27日 • 用户投稿
    100
  • 如何通过地址空间随机化增强安全防护?

    如何通过地址空间随机化增强安全防护?如何通过地址空间随机化增强安全防护?如何通过地址空间随机化增强安全防护?如何通过地址空间随机化增强安全防护?

    ASLR通过随机化内存布局,使攻击者难以预测关键区域地址,显著增加内存攻击难度。 通过地址空间随机化(ASLR),我们能显著提升系统面对内存攻击时的防御能力。核心思想很简单:让攻击者无法预知关键内存区域(比如堆、栈、共享库)的精确位置,从而大幅增加利用漏洞的难度和不确定性。这就像在一片黑暗中寻找一个…

    2026年9月27日 • 用户投稿
    200
  • 设置Apache FOP字体相对路径:使用fop.xconf配置跨平台字体

    设置Apache FOP字体相对路径:使用fop.xconf配置跨平台字体设置Apache FOP字体相对路径:使用fop.xconf配置跨平台字体设置Apache FOP字体相对路径:使用fop.xconf配置跨平台字体设置Apache FOP字体相对路径:使用fop.xconf配置跨平台字体

    Apache FOP在不同操作系统下配置字体时,使用绝对路径会遇到兼容性问题。本文详细介绍如何在fop.xconf中利用标签和相对embed-url属性,灵活指定字体文件的相对路径,确保应用程序在多种环境中都能正确加载和渲染字体,避免硬编码路径,提升可移植性。 FOP字体配置的跨平台挑战 在使用ap…

    2026年9月27日 • 用户投稿
    600
  • sublime怎么配置git_Sublime Text集成Git版本控制教程

    sublime怎么配置git_Sublime Text集成Git版本控制教程sublime怎么配置git_Sublime Text集成Git版本控制教程sublime怎么配置git_Sublime Text集成Git版本控制教程sublime怎么配置git_Sublime Text集成Git版本控制教程

    Sublime Text 本身不内置 Git 功能,但可以通过插件和外部 Git 环境实现集成。以下是配置 Sublime Text 使用 Git 的完整方法,帮助你在编辑器中便捷地进行版本控制操作。 1. 安装并配置 Git 环境 确保你的系统已安装 Git,并能通过命令行使用: Windows:…

    2026年9月27日 • 用户投稿
    200
  • linux错误码95怎么处理

    linux错误码95怎么处理linux错误码95怎么处理linux错误码95怎么处理linux错误码95怎么处理

    Linux 错误码 95 表示访问被拒绝,通常是因为权限不足。解决方案包括:1. 检查文件权限;2. 更改文件权限;3. 检查文件所有权;4. 检查文件系统挂载;5. 检查文件系统错误;6. 禁用 SELinux(仅限 RHEL 及 CentOS);7. 联系系统管理员。 如何处理 Linux 错误…

    2026年9月27日 • 用户投稿
    000
  • Java在Windows CMD终端实现ANSI颜色输出的策略与实践

    Java在Windows CMD终端实现ANSI颜色输出的策略与实践Java在Windows CMD终端实现ANSI颜色输出的策略与实践Java在Windows CMD终端实现ANSI颜色输出的策略与实践Java在Windows CMD终端实现ANSI颜色输出的策略与实践

    本文深入探讨了Java程序在Windows CMD终端中无法正确显示ANSI颜色代码的问题,并提供了两种有效的解决方案。针对不同Java版本和需求,我们介绍了通过外部命令(如echo)代理输出的兼容性方法,以及利用Java 22+ Foreign Function & Memory API直…

    2026年9月27日 • 用户投稿
    100
  • linux怎么将用户添加到用户组

    linux怎么将用户添加到用户组linux怎么将用户添加到用户组linux怎么将用户添加到用户组linux怎么将用户添加到用户组

    在 Linux 系统中,可以通过以下步骤将用户添加到用户组:以 root 用户身份登录系统。使用 usermod 命令将用户添加到用户组。验证用户是否已成功添加到用户组。 如何将用户添加到 Linux 用户组 在 Linux 系统中,将用户添加到用户组是管理用户权限和访问控制的关键步骤。 步骤: 以…

    2026年9月27日 • 用户投稿
    000
  • 在Java中实现ANSI颜色输出:解决CMD终端兼容性问题

    在Java中实现ANSI颜色输出:解决CMD终端兼容性问题在Java中实现ANSI颜色输出:解决CMD终端兼容性问题在Java中实现ANSI颜色输出:解决CMD终端兼容性问题在Java中实现ANSI颜色输出:解决CMD终端兼容性问题

    本文深入探讨了Java程序在Windows CMD终端中无法正确显示ANSI颜色代码的原因,并提供了两种有效的解决方案。首先,介绍通过外部命令cmd /c echo实现跨版本兼容的着色输出;其次,针对Java 22及更高版本,详细讲解如何利用Foreign Function & Memory…

    2026年9月27日 • 用户投稿
    000
  • sublime怎么快速注释代码_Sublime Text单行与多行代码注释快捷键

    sublime怎么快速注释代码_Sublime Text单行与多行代码注释快捷键sublime怎么快速注释代码_Sublime Text单行与多行代码注释快捷键sublime怎么快速注释代码_Sublime Text单行与多行代码注释快捷键sublime怎么快速注释代码_Sublime Text单行与多行代码注释快捷键

    使用 Ctrl/Cmd + / 可快速实现单行或多行注释,选中代码后再次按键取消注释,部分语言支持通过插件或手动输入实现块注释,提升编码效率。 在 Sublime Text 中快速注释代码非常方便,支持单行和多行的注释操作,提升编码效率。 单行注释快捷键 将光标放在需要注释的行,使用以下快捷键: W…

    2026年9月27日 • 用户投稿
    100

发表回复

登录后才能评论
关注微信