Spark性能调优(三)

spark性能调优(三)之数据倾斜 一、什么是数据倾斜 所谓数据倾斜(data skew)是由于数据分布不均匀造成计算时间差异很大,产生了一些列异常现象。 二、常见现象 1、个别task作业运行缓慢 大多数的task运行都很快速,但是极个别的task运行非常缓慢,甚至是正常task运行时间好多倍。 而一个作业运行的最终时间是由时间最短的那些task决定还是有哪些时间最长的task决定。 2、莫名其妙的OOM异常 这是一种相对比较少见... 阅读详情

一:Spark程序数据结构的优化 1,Java的对象:对象头是16个字节(例如指向对象的指针等元数据信息),如果对象只有一个int的property,则此时会占据20字节,也就是说对象的元数据占用了大部分的空间,所有在封装数据的时候尽量不要使用对象!例如说使用JSON格式来封装数据; 2,Java中的基本的数据类型会自动的封箱操作,例如int会自动变成Integer,这会额外增加对象头的空间占用; 3,Java的String在实际占用内存方面要额外使用40个字节(String的内部使用char[]来保存字符序列),另外需要注意的是String每个字符是2字节(UTF-16),如果内部有5个字符的话,实际上会占用50个字节; 4,Java中的集合List,HashMap等等其内部一般使用链表,具体的每个数据使用Entry等,这些也非常消耗内存; 5,优先使用原生数组,尽可能不要使用ArrayLiast、HashMap、LinkedList等数据结构,例如说List list = new ArrayList()需要考虑替换为int[] array = new int[]; 6,优先使用String(推荐使用JSON),而不是采用HashMap、List等来封装数据,例如Map<Integer,Worker> workers = new HashMap<Integer,Worker>(),建议使用JSON字符串或者自己构建的String字符串对象,例如“id:name,salary||id:name,salary||id:name,salary”;

二:Spark内存消耗诊断

1,JVM自带众多内存消耗诊断的工具如JMAP、JCONSOLE等,第三方IBM JVM Profile Tools等;

2,在开发、测试、生产环境下用的最多的是日志?Driver产生的日志!!!最简单也是最有效就是调用RDD.cache,当进行cache操作的时候Driver上的BlockManagerMaster会记录该信息并写进日志中!!!

三:persist和checkpoint

1,当反复使用某个(些)RDD的时候强烈建议使用persist来对数据进行缓存(MEMORY_AND_DISK);

2,如果某个RDD就算特别耗时或者经历了很多步骤的计算,如果数据丢失则重新计算的代价特别大,此时考虑使用checkpoint,因为checkpoint是把数据写入HDFS,天然具有高可靠性;

1.作业:使用cache诊断内存消耗。

程序如下:

Scala> val lines = sc.parallelize(Array(1,2,3,4,5,6,7,8,9))

lines: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at :21

scala> lines.cache

res0: lines.type = ParallelCollectionRDD[0] at parallelize at :21

scala> lines.count

res1: Long = 9

spark性能调优(三):磁盘 spark性能调优 阅读详情

相关推荐

Unity多渠道APK打包:同一工程稳定输出不冲突安装包

Android应用多渠道分发是移动开发的基础场景,其核心在于解决包名唯一性、渠道可识别性与构建可重复性三大问题。原理上,Unity安卓打包本质是三阶段流程:生成Android工程、Gradle编译、APK签名,而包名冲突根源在生成阶段对PlayerSettings的强依赖。技术价值体现在规避人工配置失误、支撑CI/CD自动化、满足华为/小米等商店合规要求。典型应用场景包括应用宝、TapTap、B站等渠道独立包管理,以及AB测试、灰度发布等运营需求。本文聚焦Unity原生方案,通过BuildPlayerOpt

weixin_33736048的博客 794

Spark性能优化

Spark性能优化 最新文章访问我的博客:http://bryce-loski.github.io/ 在大数据处理过程中,涉及到最多的就是性能优化。这个也是大数据场景的重点与难点。 本文将从常见的几个方面与实现spark的优化 常规性能调优 1.1 常规性能调优一:最优资源配置   Spark性能调优的第一步,就是为任务分配更多的资源,在一定范围内,增加资源的分配与性能的提升是成正比的,实现了最优的资源配置后,在此基础上再考虑进行后面论述的性能调优策略。    资源的分配在使用脚本提交Spark任务时进行指

Bryce_Loski的博客 1674

Ubuntu下NVIDIA驱动安装全攻略:从报错到完美运行nvidia-smi的完整流程

本文提供了在Ubuntu系统中安装NVIDIA驱动的完整解决方案,重点解决因驱动版本冲突、内核模块未加载或Secure Boot安全启动导致的`nvidia-smi`报错问题。通过彻底清理旧驱动、处理Secure Boot、选择兼容版本并正确安装,最终确保驱动完美运行。

weixin_29196891的博客 364

spark调优详解

本文参考中华石杉老师的课程总结。后面一部分是总结了一下当spark必须要按列处理时的调优方式。 1、spark调优之分配更多资源 /usr/local/spark/bin/spark-submit \ --class cn.spark.sparktest.core.WordCountCluster \ --num-executors 3 \  配置executor的数量 --driver...

hgy0403的博客 1809

深度学习十大算法之Word2Vec

Word2Vec的提出,标志着词嵌入技术的一次重大进步。Word2Vec是一种高效的词嵌入模型,由Google的研究团队于2013年开发。它使用一种称为神经网络的机器学习方法,通过学习大量文本数据,生成能够表达词语间丰富语义关系的词向量。Word2Vec的核心优势在于它能够捕捉到词语之间的细微关系。例如,在Word2Vec模型中,可以通过计算向量之间的距离来估计词语之间的相似度。这不仅能帮助理解语言的复杂性,还可以应用于各种NLP任务,如机器翻译和搜索引擎优化。

第欧根尼的酒桶的博客 1864

VESC电调高级调参指南:电机校准与性能优化实战解析

本文详细解析了VESC电调的高级调参方法,包括电机校准与性能优化实战技巧。从基础参数设置到高级机械参数优化,再到动态性能调优,提供了全面的调参指南。特别针对电机类型、功率设置、电池参数配置等关键环节给出实用建议,帮助用户充分发挥VESC电调的性能潜力。

weixin_30772105的博客 196

Spark之【性能调优】

task在运行地时候,想要使用广播变量中地数据,此时首先会在自己本地的Executor对应的BlackManager中尝试获取变量,如果本地没有,BlockManager就会从Driver或者其他节点的BlockManager上远程拉取变量的副本,并由本地的BlockManager进行管理,之后此Executor的所有task都会直接从本地的BlockManager中获取变量。默认情况下,task中地算子如果使用了外部地变量,每个task都会获取一份变量地副本,这就造成了内存极大地消耗。

xiayuhaisong的博客 2387

保姆级教程:在ESXi 8.0上为NVIDIA ConnectX-5/6网卡开启SR-IOV(从BIOS到虚拟机配置)

本文提供在ESXi 8.0上为NVIDIA ConnectX-5/6网卡开启SR-IOV的详细教程,涵盖BIOS设置、固件配置、驱动优化及虚拟机部署。通过SR-IOV技术,显著提升虚拟化环境中的网络性能,适用于高性能计算、AI训练等场景。

weixin_26934905的博客 455

Spark性能调优

Spark性能调优

qq_40822132的博客 5782

基于STM32与MPU6050的实时姿态检测系统设计与实现(源码+硬件解析)

本文详细介绍了基于STM32单片机与MPU6050传感器的实时姿态检测系统设计与实现。通过硬件解析、传感器校准、卡尔曼滤波算法和欧拉角计算,实现高精度姿态检测。提供完整源码和调试技巧,适用于无人机、平衡车等嵌入式开发项目,解决噪声干扰和数据漂移等常见问题。

jupi8的博客 493

centos7 python3.12.1 报错 No module named _ssl,坑我几个小时

网上的教程很多,但几乎是无效的,跟着我这教程,可以完美解决。

Amio_的博客 1万+

(转载)Spark 性能调优

Spark 性能优化概览: 由于Spark 的计算本质是分布式计算。 Spark程序的性能可能因为集群中的任何因素出现瓶颈:CPU,网络带宽、内存。 如果内存比较紧张,不足以放下所有数据,需要对内存的使用进行性能优化。 比如说:使用一些手段来减少内存消耗。 park的性能优化,其实主要就是在对于内存的使用进行调优。 Spark 性能优化的主要手段: 1、使用高性能的序列化类库 2、优化数据结构 3、RDD持久化、checkpoint 4、使用序列化的持久化级别:MEMORY_ONLY不序列化,MEM

moose_killer的博客 501

ubuntu恢复分区表——testdisk

testdisk恢复ubuntu分区表testdisk介绍安装testdisk使用testdisk恢复分区表 testdisk介绍 testdisk 具有广泛的功能,包括恢复丢失或损坏的分区和使不能启动磁盘可以重新启动,也经常被用来恢复被误删的文件。 安装testdisk 如果系统分区表被删除,需要使用ubuntu的启动盘,选择try ubnutu模式进入试用系统。 1、可以直接在终端安装testdisk: sudo apt-get install testdisk 通过命令直接打开testdisk: t

ZNestor的博客 6459

Spark性能调优 之 Shuffle调优(三)

参考网站: http://spark.apache.org/docs/latest/configuration.html http://spark.apache.org/docs/latest/tuning.html 一:调节map端缓冲区大小 在Spark任务运行过程中,如果shuffle的map端处理的数据量比较大,但是map端缓冲的大小是固定的,可能会出现map端缓冲数据频繁s...

MannerXu的博客 631

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Spark四种性能调优思路(三)——shuffle调优

呕心沥血之作《Spark四种性能调优思路》

a805814077的博客 1228

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Spark性能调优(三) 算子调优

1.Map到MapPartitions的使用 如果是普通的map,比如一个partition中有1万条数据;ok,那么你的function要执行和计算1万次。 但是,使用MapPartitions操作之后,一个task仅仅会执行一次function,function一次接收所有的partition数据。只要执行一次就可以了,性能比较高。 1.1. MapPartitions的缺点 如果是普...

yuxiang1014的专栏 358

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

spark调优(三)【spark性能调优】

spark性能调优 当你开始编写Apache Spark代码或者浏览公开的API的时候,你会遇到诸如transformation,action,RDD等术语。了解到这些是编写Spark代码的基础。同样,当你任务开始失败或者你需要透过web界面去了解自己的应用为何如此费时的时候,你需要去了解一些新的名词:job, stage, task。对于这些新术语的理解有助于编写良好Spark代码。这里

极客神殿 1133

Spark性能优化【三】- 数据倾斜调优

调优概述 有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能。 数据倾斜发生时的现象 绝大多数task执行得都非常快,但个别task执行极慢。比如,总共有1000个task,997个task都在1分钟之内执行完了,但是剩余两三个task却要一两个小时。这种情况很常见。 原本能够正常执行的Spark作业,某天突然报出OOM(内存溢出)异常,观察异常

Rnan_prince的博客 340

Spark学习——性能调优(三)

其他更多java基础文章: java基础学习(目录) 继续上一篇Spark学习——性能调优(二)的讲解 使用MapPartition提升性能 什么时候比较适合用MapPartitions系列操作? 数据量不是特别大的时候,都可以用这种MapPartitions系列操作,性能还是非常不错的,是有提升的。 在项目中,自己先去估算一下RDD的数据量,以及每个partition的量,还有自己分配给每个...

weixin_34327223的博客 134

三、Spark性能优化:数据倾斜调优

转自:https://blog.youkuaiyun.com/u012102306/article/details/51556450 前言 继《Spark性能优化:开发调优篇》和《Spark性能优化:资源调优篇》讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为《Spark性能优化指南》的高级篇,将深入分析数据倾斜调优与shuffle调优,以解决更加棘手的性能问题。 1.数据...

一朵的专栏 291

三、Spark性能调优——并行度调节

val conf = new SparkConf() .set("spark.default.parallelism", "500") Spark 作业中的并行度指各个 stage 的 task 的数量。 如果并行度设置不合理而导致并行度过低, 会导致资源的极大浪费,例如, 20个 Executor,每个 Executor 分配 3 个 CPU core, 而 Spark 作业有 40 个 ...

嘻哈吼嘿呵的博客 456

Spark SQL --- 性能调优(三)

Spark SQL --- 性能调优3. 性能调优3.1 在内存中缓存数据3.2 其他配置选项3.3 SQL查询的广播提示参考 3. 性能调优 对于有一定计算量的Spark作业来说,可能的性能改进的方式,不是把数据缓存在内存里,就是调整一些开销较大的选项参数。 3.1 在内存中缓存数据 Spark SQL可以通过调用SQLContext.cacheTable(“tableName”)或者DataF...

weixin_42051034的博客 525

spark算子_Spark 性能优化(三)——运行资源调优

在开发完 Spark 作业之后,就该为作业配置合适的资源了。Spark 的资源参数,基本都可以在 spark-submit 命令中作为参数设置。很多 Spark 初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设置,甚至压根儿不设置。资源参数设置的不合理,可能会导致没有充分利用集群资源,作业运行会极其缓慢;或者设置的资源过大,队列没有足够的资源来提供,进而导致各种异常...

weixin_39942335的博客 129

Spark总结整理(三):Spark Core 性能优化之开发调优

Spark性能优化主要分为: 开发调优 资源调优 数据倾斜调优 shuffle调优 Spark性能优化的第一步,就是要在开发Spark作业的过程中注意和应用一些性能优化的基本原则 开发调优,就是要让大家了解以下一些Spark基本开发原则,包括:RDD lineage设计、算子的合理使用、特殊操作的优化等 在开发过程中,时时刻刻都应该注意以上原则,并将这些原则根据具体的业务以及实际的应用场景,灵...

super_wj0820的博客 455
上一篇: Spark性能调优(二)
下一篇: Spark性能调优(四)
囧芝麻
博客等级 码龄10年 10粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值