一、性能调优之在实际项目中分配更多资源
-------------------------------------------
分配更多资源:性能调优的王道,
增加和分配更多的资源,性能和速度上的提升,是显而易见的;
基本上,在一定范围之内,增加资源与性能的提升,是成正比的;
写完了一个复杂的spark作业之后,进行性能调优的时候,首先第一步,就是要来调节最优的资源配置;
在这个基础之上,如果说你的spark作业,能够分配的资源达到了你的能力范围的顶端之后,无法再分配更多的资源了,公司资源有限;
那么才是考虑去做后面的这些性能调优的点。
二、具体操作
---------------------------------------------
1.分配哪些资源?
executor的数量
cpu per executor 每个executor的core数
memory per executor 每个executor的内存数
driver memory 驱动节点分配的内存
2.在哪里分配这些资源?在我们在生产环境中,提交spark作业时,用的spark-submit shell脚本,里面调整对应的参数
/usr/local/spark/bin/spark-submit \
--class cn.spark.sparktest.core.WordCountCluster \
--num-executors 3 \ 配置executor的数量
--driver-memory 100m \ 配置driver的内存(影响不大)
--executor-memory 100m \ 配置每个executor的内存大小
--executor-cores 3 \ 配置每个executor的cpu core数量
/usr/local/SparkTest-0.0.1-SNAPSHOT-jar-with-dependencies.jar \
3.调节到多大,算是最大呢?
第一种,Spark Standalone,公司集群上,搭建了一套Spark集群,你心里应该清楚每台机器还能够给你使用的,大概有多少内存,多少cpu core;
那么,设置的时候,就根据这个实际的情况,去调节每个spark作业的资源分配。
比如说你的每台机器能够给你使用4G内存,2个cpu core;
20台机器;executor,20;4G内存,2个cpu core,平均每个executor。
第二种,Yarn。资源队列。资源调度。应该去查看,你的spark作业,要提交到的资源队列,大概有多少资源?
500G内存,100个cpu core;executor,50;10G内存,2个cpu core,平均每个executor。
一个原则,你能使用的资源有多大,就尽量去调节到最大的大小(executor的数量,几十个到上百个不等;executor内存;executor cpu core)
三、原理
---------------------------------------------
1.首先SparkContext,DAGScheduler,TaskScheduler会将我们的算子,切割成大量的task,提交到Application的excutor上去执行
2.增加executor的数量 --num-executors
executor的数量表示了并行任务的执行力,如果executor数量比较少,那么,能够并行执行的task数量就比较少,
就意味着,我们的Application的并行执行的能力就很弱。
比如有3个executor,每个executor有2个cpu core,那么同时能够并行执行的task,就是6个。6个执行完以后,再换下一批6个task。
3.增加executor的核心数 --executor-cores
增加每个executor的cpu core,也是增加了执行的并行能力。原本20个executor,每个才2个cpu core。
能够并行执行的task数量,就是40个task。
现在每个executor的cpu core,增加到了5个。能够并行执行的task数量,就是100个task。
执行的速度,提升了2.5倍。
4.增加每个executor的内存大小
减少磁盘IO
a.如果需要对RDD进行缓存,那么更多的内存,就可以缓存更多的数据,将更少的数据写入磁盘,甚至不写入磁盘。减少了磁盘IO。
b.对于shuffle操作,reduce端,会需要内存来存放拉取的数据并进行聚合。如果内存不够,也会写入磁盘。如果给executor分配更多内存以后,就有更少的数据,需要写入磁盘,甚至不需要写入磁盘。减少了磁盘IO,提升了性能。
减少垃圾处理的消耗
a.对于task的执行,可能会创建很多对象。如果内存比较小,可能会频繁导致JVM堆内存满了,然后频繁GC,垃圾回收,minor GC和full GC。(速度很慢)。内存加大以后,带来更少的GC,垃圾回收,避免了速度变慢,速度变快了。
相关推荐
spark调优
目录 1、资源调优 1.1、分配更多的资源 1.2、提高并行度 2、开发调优 2.1、RDD的重用和持久化 2.2、广播变量的使用 2.3、尽量避免使用shuffle类算子 2.4、 使用高性能的算子 2.5、使用Kryo优化序列化性能 2.6、使用fastutil优化数据格式 2.7、调节数据本地化等待时长 3、基于spark内存模型调优 3.1、spark中executor内存划分 3.2、 spark的内存模型 3.3、 任务提交脚本参考 4、shuffle相关参数..
Spark 提交任务详解(todo)
参考文章:Spark 提交任务详解 Running Spark on YARN cluster mode : $ ./bin/spark-submit --class org.apache.spark.examples.SparkPi \ --master yarn \ --deploy-mode cluster \ --driver-memory 4g \ ...
Spark性能调优方法总结
Spark的分配资源主要就是 executor、cpu per executor、memory per executor、driver memory 等的调节,我们在生产环境中,提交spark作业时,用的spark-submit shell脚本,里面调整对应的参数: /usr/local/spark/bin/spark-submit –conf spark.default.parallelism=12 –num-executors 3 –executor-cores 2 –executor-me
Spark提交任务时指定资源
--spark-submit --master yarn # 用yarn来管理资源 --deploy-mode cluster --executor-cores # 每个excutor进程分配多少个内核,一般指定为【3-5】个 --num-executors 50 # 一共申请多少个executor进程 --executor-memory 12G # 每个executor进程分配多少内存,(yarn的cpu与内存的配比是1核:3
Spark 调优汇总
阅读文本大概需要 9 分钟。 之前的两篇文章 Spark 调优一瞥 | shuffle 调优 Spark 的 数据本地化 分别讲了 shuffle 的参数调优和数据本地化的调优。 本文将从以下几个方面来介绍一下 Spark 的调优。 资源调优 并行度调优 代码调优 数据本地化 内存调优 shuffle 参数 堆外内存 数据倾斜 (内容较多, 下篇文章...
Spark调优:性能调优、JVM调优、shuffle调优、算子调优、troubleshooting调优、数据倾斜
目录 一、性能调优 1、分配资源 2、提高spark运行的并行度 3、重构RDD架构以及RDD持久化 4、使用广播变量 5、使用Kryo序列化 6、使用fastutil集合 7、调节数据本地化等待时长(s) 二、JVM调优 1、JVM调优:降低cache操作的内存占比 2、JVM调优:executor堆外内存与连接等待时长 三、shuffle性能调优 1、shuffle的原理 2、shuf...
spark中spark-submit提交样例及参数说明
当我们使用像Yarn这样的集群管理器运行spark应用程序时,会有几个守护进程在后台运行,如NameNode,Secondary NameNode,DataNode,JobTracker和TaskTracker等。这是一种很有前景的部署模式。5.如果资源不变,你的RDD只有2个分区,那么同一时刻只有2个task运行,其余18个核空转,造成资源浪费。上面涉及到Spark的许多部署模式,究竟哪种模式好这个很难说,需要根据你的需求,如果你只是测试Spark Application,你可以选择local模式。
Canoe CAPL TCP通信避坑指南:从OnTcpConnect回调不触发到Socket句柄管理
本文详细解析了Canoe CAPL中TCP通信的常见问题与解决方案,包括OnTcpConnect回调不触发的三大原因、Socket句柄管理的内存泄漏风险、数据发送截断规则等。通过实战案例和代码示例,帮助开发者规避TCP通信中的典型陷阱,提升车载网络测试的稳定性和可靠性。
spark常见的submit参数
spark-submit 是在spark安装目录中bin目录下的一个shell脚本文件,用于在集群中启动应用程序
给麒麟KylinOS服务器加把锁:手把手配置符合等保要求的密码强度策略
本文详细介绍了如何在麒麟KylinOS服务器上配置符合等保要求的密码强度策略,包括pwquality.conf和login.defs的核心参数设置、等保合规的进阶配置技巧以及企业环境中的平衡艺术。通过实战案例和测试方法,帮助管理员构建坚固的密码防线,确保系统安全。
MySQL表名大小写敏感问题终极解决:lower_case_table_names=1不生效的3个隐藏坑
本文深入剖析了MySQL表名大小写敏感问题中,设置lower_case_table_names=1参数不生效的三个核心原因。关键在于理解该参数只能在数据库初始化前设置,并需排查配置文件优先级与正确停止服务的顺序。文章提供了从Windows迁移到Linux的完整避坑指南与验证方法,帮助DBA和开发者彻底解决这一跨平台兼容性难题。
Spark调优(5类调优)
目录 1、资源调优 1.1、分配更多的资源 1.2、提高并行度 2、开发调优 2.1、RDD的重用和持久化 2.2、广播变量的使用 2.3、尽量避免使用shuffle类算子 2.4、使用高性能的算子 2.5、使用Kryo优化序列化性能 2.6、使用fastutil优化数据格式 2.7、调节数据本地化等待时长 3、基于spark内存模型调优 3.1、spark中executor内存划分 3.2、spark的内存模型 3.3、任务提交脚本参考 4、shuffle相关参...
Cloudflare 5秒盾逆向实战:13次请求背后的Python补环境框架搭建指南
本文深入解析了如何通过Python构建浏览器环境模拟框架,以应对Cloudflare 5秒盾等现代Web防护机制。文章详细拆解了其背后复杂的13次请求链,涵盖了JavaScript执行引擎集成、DOM事件模拟、网络请求控制及Canvas指纹等环境检测的完整实现方案,为自动化数据采集和逆向工程提供了实战指南。
Spark调优、基于内存模型调优
分配更多的资源 > 它是性能优化调优的王道,就是增加和分配更多的资源,这对于性能和速度上的提升是显而易见的, > 基本上,在一定范围之内,增加资源与性能的提升,是成正比的;写完了一个复杂的spark作业之后,进行性能调优的时候,首先第一步,就是要来调节最优的资源配置;
UFS 3.1协议实战解析:从MIPI M-PHY到SCSI命令的完整链路拆解
本文深入解析UFS 3.1存储协议,从MIPI M-PHY物理层到SCSI命令层,完整拆解数据链路。通过分析协议栈三层架构(UIC、UTP、UCS),结合Wireshark抓包实战,详解UPIU数据包传输与SCSI命令封装,并探讨GEAR模式对性能与功耗的影响,为嵌入式存储开发与调试提供实用指南。
【低轨】Starlink星链-Ku波段OFDM信号同步机制与PNT应用潜力
本文深入解析了Starlink星链Ku波段OFDM信号的同步机制及其在定位、导航与授时(PNT)领域的应用潜力。研究发现,其信号帧内嵌的同步序列具有相位恒定特性,支持超长相干积分,可在极低信噪比下实现高精度伪距测量,为利用低轨卫星通信信号实现高精度PNT服务提供了新的技术路径。
Spark性能调优
Spark性能调优
pnpm 卸载教程:彻底移除 pnpm 及全局缓存的方法
卸载 pnpm = 全局包 → CLI → 环境变量 → store 缓存只要按这个顺序来,基本不会留下任何坑。如果你后面还打算重新安装 pnpm / 切换 npm、yarn / 多包管理器共存,这些细节反而更重要,环境一旦干净,后续问题会少很多。
Spark性能调优之分配资源
分配资源分配资源优化Spark作业问题来了?怎么分配资源? 哪些资源会提高哪块性能?1.增加executor:2.增加每个executor的cpu core:3.增大每个executor的memory内存:结论 分配资源优化Spark作业 分配更多的资源才是性能调优的王道。 在写完一个spark作业后,要进行性能调优的时候,第一件事就是调配更多的资源;如果已经分配到你能力范围内的资源顶端后,公司无...
FPGA学习笔记(一)入门背景、软件及时钟约束的概念及程序下载与固化
使用正点原子的PFPGA开拓者V2学习,通过b站上正点原子的手把手教你学FPGA-基于开拓者V2学习。
RU DOS版、EFI版32bit/64bit BIOS常用工具
DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。
Spark性能调优篇一之任务提交参数调整
写在前面的一些”废话“: 最近在做spark的项目,虽然项目基本功能都实现了,但是在真正的成产环境中去运行,发现程序运行效率异常缓慢;迫于无奈(实际是自己都不忍直视了),所以决定对程序做一番优化操作。在网上查看了不上关于spark程序的优化方法,但是都比较分散不够全面,所以决定就自己编写的基于Java的spark程序,记录一下我所做过的一些优化操作,加深印象方面以后的项目调优使用。这是一个Spark系列的优化操作,包括了很多方面,欢迎大家一块讨论学习。好了,废话好像有点多,下面开始进入正题: 关于spa
最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版
Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。
Spark学习——性能调优(一)
其他更多java基础文章: java基础学习(目录) Spark的性能调优主要有以下几个方向: 常规性能调优:分配资源、并行度、RDD架构与缓存等 JVM调优(Java虚拟机):JVM相关的参数,通常情况下,如果你的硬件配置、基础的JVM的配置,都ok的话,JVM通常不会造成太严重的性能问题;反而更多的是,在troubleshooting中,JVM占了很重要的地位;JVM造成线上的spark作...
IEM模型,地表粗糙度模拟
利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
Spark性能调优01-资源调优
本文来自多易教育公众号 Spark性能调优01-资源调优 1. 概述 在开发完Spark作业之后,就该为作业配置合适的资源了。 Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。 资源参数设置的不合理,可能会导致没有充分利用集群资源,作业运行会极其缓慢;或者设置的资源过大,队列没有足够的资源来提供,进而导致各种异常。总之,无论是哪种情况,都会导致Spark作业的运行效率低下,甚至根本无法运行。 因此我们必须对Spark作业的资源使用原理有一个清晰的认识,并知道在Spark作业运行
spark work目录_Spark 调优指南,8个方面
阅读文本大概需要 9 分钟。之前的两篇文章Spark 调优一瞥 | shuffle 调优mp.weixin.qq.comSpark 的 数据本地化,提供最佳的计算节点,终于入门了mp.weixin.qq.com分别讲了 shuffle 的参数调优和数据本地化的调优。本文将从以下几个方面来介绍一下 Spark 的调优。资源调优并行度调优代码调优数据本地化内存调优shuffle 参数堆外内存数据倾...
数量 spark_spark性能调优1
常规性能调优一:最优资源配置Spark性能调优的第一步,就是为任务分配更多的资源,在一定范围内,增加资源的分配与性能的提升是成正比的,实现了最优的资源配置后,在此基础上再考虑进行后面论述的性能调优策略。资源的分配在使用脚本提交Spark任务时进行指定,标准的Spark任务提交脚本如代码清单2-1所示:代码清单2-1 标准Spark提交脚本/usr/opt/modules/spark/bin/spa...
3572



被折叠的 条评论
为什么被折叠?



