Spark性能调优(五)

Spark开发性能调优 Spark开发性能调优 标签(空格分隔): Spark –Write By Vin 1. 分配资源调优 Spark性能调优的王道就是分配资源,即增加和分配更多的资源对性能速度的提升是显而易见的,基本上,在一定范围之内,增加资源与性能的提升是成正比的,当公司资源有限,能分配的资源达到顶峰之后,那么才去考虑做其他的调优 如何分配及分配哪些资源 在生产环境中,提交spark作业时... 阅读详情

一:性能优化之数据本地性

1,数据本地性对分布式系统的性能而言是一件最为重要的事情(之一),程序运行本身包含代码和数据两部分,单机版本一般情况下很少数据本地性的问题(因为数据在本地),但是对于单机版本的程序由于数据本地性有PROCESS_LOCAL和NODE_LOCAL之分,所以我们还是尽量的让数据处于PROCESS_LOCAL;Spark作为分布式系统更加注意数据本地性,在Spark中数据本地性分为PROCESS_LOCAL(同一个JVM)、NODE_LOCAL(同一个node,比如数据在HDFS上,但是和代码在同一个node)、NO_PREF、RACK_LOCAL(不在同一个server,但在同一个机架)、ANY(数据可能在任何地方,包括在其他网络环境中;例如说百度云,数据和计算集群不在同样的集群中,此时就是ANY一种表现);

2,对于ANY的情况,默认状态下性能会非常低下,此时强烈建议使用Tachyon;例如在百度云上为了确保计算速度,就在计算集群和存储集群之间加入了Tachyon,通过Tachyon来从远程抓取数据,而Spark基于Tachyon来进行计算,这就更好的满足了数据本地性;

3,如果数据是PROCESS_LOCAL,但是此时并没有空闲的Core来运行我们的Task,此时Task就要等待,例如等待3000ms,3000ms内如果能够运行待运行的Task则直接运行,如果超过了3000ms,此时数据本地性就要退而求其次采用NODE_LOCAL,同样的道理NODE_LOCAL也会等待的超时时间,以此类推…

4,如何配置Locality呢?可以统一采用spark.locality.wait来设置(例如设置5000ms),当然你可以分别设置spark.locality.wait.process,spark.locality.wait.node, spark.locality.wait.rack等;一般的具体设置是Locality优先级越高则可以设置越高的等待超时时间;

二:RDD的自定义(以Spark on Hbase为例)

1,第一步是定义RDD.getPartitions的实现:

a)createRelation具体确定HBase的链接方式和具体访问的表;

b)然后通过HBase的API来获取Region的List;

c)可以过滤出有效地数据;

d)最后返回Region的Array[Partition],也就是说一个Partition处理一个Region的数据,为更佳的数据本地性打下基础;

2,第二步是RDD.getPreferredLocations

a)根据Split包括的Region信息来确定Region具体在什么节点上,这样Task在调度的时候就可以优先被调度到Region所在的机器上,最大化的提高数据本地性;

3,第三步是RDD.compute

a) 根据Split中的Region等信息调用HBase的API来进行操作(主要是查询)

4,Spark on Hbase开源实现

1.作业:从网络上查询RDD封装MySQL的具体实现

在Spark中提供了一个JdbcRDD类,该RDD就是读取JDBC中的数据并转换成RDD,之后我们就可以对该RDD进行各种的操作。我们先看看该类的构造函数:

JdbcRDD[T: ClassTag](

    sc: SparkContext,

    getConnection: () => Connection,

    sql: String,

    lowerBound: Long,

    upperBound: Long,

    numPartitions: Int,

    mapRow: (ResultSet) => T = JdbcRDD.resultSetToObjectArray _)

这个类带了很多参数,关于这个函数的各个参数的含义,我觉得直接看英文就可以很好的理解,如下:

1、getConnection 返回一个已经打开的结构化数据库连接,JdbcRDD会自动维护关闭。

2、sql 是查询语句,此查询语句必须包含两处占位符?来作为分割数据库ResulSet的参数,例如:”select title, author from books where ? < = id and id <= ?”

3、lowerBound, upperBound, numPartitions 分别为第一、第二占位符,partition的个数。例如,给出lowebound 1,upperbound 20, numpartitions 2,则查询分别为(1, 10)与(11, 20)

4、mapRow 是转换函数,将返回的ResultSet转成RDD需用的单行数据,此处可以选择Array或其他,也可以是自定义的case class。默认的是将ResultSet 转换成一个Object数组。

Spark调优—参数调优 spark调优—参数调优 阅读详情

相关推荐

别再手动改文献了!手把手教你定制Mendeley的GB/T 7714-2005引用格式(附常见问题修复)

本文详细指导如何定制Mendeley的GB/T 7714-2005引用格式,解决科研文献管理中的常见问题。通过深度解析Mendeley样式编辑器,精准控制作者显示规则、出版社信息精简及期刊页码处理,实现参考文献一键合规。附常见问题修复和实战调试方法,大幅提升学术写作效率。

weixin_26833503的博客 374

SPARK 数据本地化(spark.locality.wait)

1.概念:task在执行前都会获取数据的分区信息进行分配,总是会优先将其分配到它要计算的数据所在节点,尽可能的减少网络传输 2.过程:一般会默认3s,重试5次的去分配,一旦超时失败,将会选择一个比上一个本地级别差的级别再一次分配,如果发生了数据传输,那么task首先通过blockmanager获取数据,如果本地没有数据,则通过getRemote方法从数据所在节点的blockmanager获取数据...

遥望...... 6813

雷达仿真:FMCW TDMA-MIMO 3D点云获取方法

2 信号建模摘要:通过设置时分复用(TDMA)波形结合FMCW毫米波雷达仿真获取目标的距离、速度和方位角3D点云信息。在本案例中,首先通过发射天线交替发射FMCW波形并通过接收天线依次接收回波信号从而得到雷达原始数据,其次对获取的原始数据依次经行距离、速度、角度估计从而输出目标的3D点云。阅读本文档,你将对TDMA-MIMO雷达的基本原理、毫米波雷达距离估计、速度估计以及角度估计的基本原理有所了解,另外CA-CFAR恒虚警以及MUSIC-DOA估计在本案例中也有所涉及。1 TDMA-MIMO原理。

Poulen的博客 6958

大数据-Spark调优(三)

大数据-Spark调优(三) Spark在Driver上对Application的每一个stage的task进行分配之前,都会计算出每个task要计算的是哪个分片数据,RDD的某个partition;Spark的task分配算法,优先会希望每个task正好分配到它要计算的数据所在的节点,这样的话就不用在网络间传输数据; 但是通常来说,有时事与愿违,可能task没有机会分配到它的数据所在的节点,为什么呢,可能那个节点的计算资源和计算能力都...

海恋北斗星 621

YOLO11 Backbone改进:二值化、三值化权重实战(一)

本文介绍了二值化/三值化神经网络的基本概念、优势挑战及应用场景。二值化网络将权重限制为±1,三值化则增加0值,显著减少模型存储需求和计算复杂度。虽然存在精度下降等挑战,但通过技术改进已能在移动设备、自动驾驶等领域应用。文章分析了YOLO11中适合量化的层,并详细阐述了二值化权重原理及Straight-Through Estimator等关键技术。二值化/三值化神经网络为资源受限设备提供了高效的深度学习解决方案。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 298

学 Simulink—— 基于高频方波电压注入的表贴式永磁电机无感控制仿真

本文手把手教授基于Simulink的高频方波电压注入法实现表贴式永磁同步电机(SPMSM)无传感器控制。针对表贴式电机微弱凸极特性(Lq/Ld≈1.05-1.15),详解方波注入相比正弦注入的优势:通过5kHz方波(PWM频率半值)集中能量提升信噪比,并采用相邻周期电流直接相减的零延迟分离技术。系统架构包含高频注入器、无滤波器信号分离模块、锁相环观测器和磁饱和极性辨识等关键环节,提供参数设置经验(如注入幅值10-15%Vdc)和典型性能指标(位置误差<0.2rad)。特别强调工程实现要点:PWM同步时

xiaoheshang_123的博客 167

Spark性能优化第五季

一:性能优化之数据本地性1,数据本地性对分布式系统的性能而言是一件最为重要的事情(之一),程序运行本身包含代码和数据两部分,单机版本一般情况下很少数据本地性的问题(因为数据在本地),但是对于单机版本的程序由于数据本地性有PROCESS_LOCAL和NODE_LOCAL之分,所以我们还是尽量的让数据处于PROCESS_LOCAL;Spark作为分布式系统更加注意数据本地性,在Spark中数据本地性分为

sundujing的博客 1647

Agent应用实践之三十六 - AgentScope高阶用法:AG-UI

AI 大模型飞速进化,不懂 AI、不会用 Agent 的程序员,正在慢慢被行业淘汰。现在 AI 新技术迭代快到离谱:RAG 还没学明白,MCP 接踵而来;工具刚上手,Skills、各类新 Agent 概念又轮番刷屏;Manus还没看懂,就出来OpenClaw,OpenClaw热度还没退,又出来Hermes。越追越乱、越学越焦虑,永远在被动跟风,陷入学不完、跟不上、用不上的内耗。其实焦虑的根本原因,不是新技术太多,而是不懂大模型 Agent 应用底层原理,只会零散跟风,没有通用方法论。为此我专门推出Agent

代码让AI扣 139

Spark调优秘诀——超详细

版权声明:本文为博主原创文章,转载请注明出处。 Spark调优秘诀 1.诊断内存的消耗 在Spark应用程序中,内存都消耗在哪了? 1.每个Java对象都有一个包含该对象元数据的对象头,其大小是16个Byte。由于在写代码时候,可能会出现这种情况:对象头比对象本身占有的字节数更多,比如对象只有一个int的域。一般这样设计是不合理的,造成对象的“浪费”,在实际开发中应避免这种情况。 ...

weixin_33979745的博客 290

人工智能算法面试大总结-总目录

涉及秋招、春招、社招

啥都生的博客 2万+

机器人环境仿真软件:Webots_(9).路径规划与导航算法仿真实现

通过仿真,我们可以验证路径规划算法的有效性和鲁棒性,同时优化机器人在不同环境中的导航性能。动态窗口法是一种局部路径规划算法,通过在机器人当前速度空间中选择一个最优的速度窗口,使机器人在动态环境中安全地移动。算法的代价函数通常包括两个部分:从起始点到当前节点的实际代价(g-cost)和从当前节点到目标节点的估计代价(h-cost)。在World Editor中,选择“Insert”菜单,添加“Robot”对象,如“E-puck”或“Thymio”。Dijkstra算法的实现与A*算法类似,但不使用启发函数。

kkchenjj的博客 2006

Spark(Locality)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34056162的博客 190

PyTorch实战:卷积神经网络详解+Python实现卷积神经网络Cifar10彩色图片分类

PyTorch可以说是三大主流框架中最适合初学者学习的了,相较于其他主流框架,PyTorch的简单易用性使其成为初学者们的首选。这样我想要强调的一点是,框架可以类比为编程语言,仅为我们实现项目效果的工具,也就是我们造车使用的轮子,我们重点需要的是理解如何使用Torch去实现功能而不要过度在意轮子是要怎么做出来的,那样会牵扯我们太多学习时间。以后就出一系列专门细解深度学习框架的文章,但是那是较后期我们对深度学习的理论知识和实践操作都比较熟悉才好开始学习,现阶段我们最需要的是学会如何使用这些工具。

master_hunter的博客 8933

spark性能调优五

一:Shuffle性能调优 1, 问题:Shuffle output file lost?真正的原因是GC导致的!!!如果GC尤其是Full GC产生通常会导致线程停止工作,这个时候下一个Stage的Task在默认情况下就会尝试重试来获取数据,一般重试3次每次重试的时间为5s,也就是说默认情况下15s内如果还是无法抓到数据的话,就会出现Shuffle output file lost等情

a11a2233445566的专栏 317

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Spark性能调优 之 Spark 数据倾斜(五)

参考网站: http://spark.apache.org/docs/latest/configuration.html http://spark.apache.org/docs/latest/tuning.html *最终极的办法就是自定义分区器 Spark中的数据倾斜问题主要指shuffle过程中出现的数据倾斜问题,是由于不同的key对应的数据量不同导致的不同task所处理的数据量不同...

MannerXu的博客 623

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Spark总结整理(五):Spark Core 性能优化之数据倾斜调优

Spark性能优化主要分为: 开发调优 资源调优 数据倾斜调优 shuffle调优 数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能 1. 数据倾斜发生时的现象 绝大多数task执行得都非常快,但个别task执行极慢 比如,总共有1000个task,997个task都在1分钟之内执行完了,但是剩余两三个task却要一两个小时,这种情况很常见 原本...

super_wj0820的博客 308

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Spark性能调优篇五之使用fastUtil工具包

Spark性能调优篇五之使用fastUtil工具包        今天再来介绍一个小的优化点,是一个通过使用fastutil工具包对数据格式进行优化。首先来明确一个东西,什么是fastutil?        fastutil是一个Java集合框架的扩展,通过实现Java集合的接口,提供了特殊类型的map,list等等。通过使用fastutil可以使

E_Possible的博客 527

spark性能调优之五:数据计算本地化

spark在driver上,对application的每一个stage的task,进行分配之前都会计算出每个task要计算的是哪个分片数据,RDD的某个partition;spark的task分配算法,优先会希望每个task正好分配到它要计算的数据所在的节点,这样就不用在网络间传输数据; 但是,如果节点的计算资源和计算能力都满了,那么task就没有机会分配到它数据所在的节点。这种时候,spark...

weixin_30296405的博客 203

Spark性能调优-----常规性能调优(五)Kryo序列化

默认情况下,Spark使用Java的序列化机制。Java的序列化机制使用方便,不需要额外的配置,在算子中使用的变量实现Serializable接口即可,但是,Java序列化机制的效率不高,序列化速度慢并且序列化后的数据所占用的空间依然较大。 Kryo序列化机制比Java序列化机制性能提高10倍左右,Spark之所以没有默认使用Kryo作为序列化类库,是因为它不支持所有对象的序列化,同时Kryo需要...

weidajiangjiang的博客 267

Spark性能调优(五)---其他(广播大变量、Kryo序列化等)性能调优策略

1.广播大变量 被大量task使用的变量,使用广播。被广播的变量,在Driver中存在一个初始副本。这样,就不需要每个task都拥有一个变量的副本,节省网络传输的资源和内存的资源;每一个BlockManager有一个变量的副本,BlockManager中没有变量的时候,可以去Driver中获取,也可以从距离最近的其他BlockManager中获取。 设置广播变量:s...

SimpleSimpleSimples的博客 578

Spark性能调优系列:(五)开发调优(尽量使用map-side预聚合的shuffle操作)

使用map-side预聚合的shuffle操作 如果一定需要使用shuffle操作,无法使用map类的算子来替代的时候,尽量使用map-side预聚合的算子。 map-side预聚合 每个节点本地对相同的key进行一次聚合操作,类似MapReduce中的本地Combiner,map-side预聚合之后,每个节点本地就只有一条相同的key,在其它节点在拉取所有节点上的相同key时,就会大量减...

Mr.Cao 754

【Spark 】Spark 调优原则

Spark的调优是面试或者笔试考察的重点:总结下 ​ ​ 1.开发调优: 原则一:避免创建重复的RDD。 原则二:尽可能复用同一个RDD。 原则三:对多次使用的RDD进行持久化。 原则四:尽量避免使用shuffle类算子 。 原则五:使用map-side预聚合的shuffle操作。 原则六:使用高性能的算子 原则七:广播大变量。 原则八:使用Kryo优化序列化性能。 原则九:优化数据结

a6458360的博客 389

Spark性能调优--资源参数调优、算子调优、Shuffle参数调优、Spark 数据倾斜调优

一、资源参数调优 了解完了Spark作业运行的基本原理之后,对资源相关的参数就容易理解了。所谓的Spark资源参数调优,其实主要就是对Spark运行过程中各个使用资源的地方,通过调节各种参数,来优化资源使用的效率,从而提升Spark作业的执行性能。以下参数就是Spark中主要的资源参数,每个参数都对应着作业运行原理中的某个部分,我们同时也给出了一个调优的参考值。 num-executors   参数说明:该参数用于设置Spark作业总共要用多少个Executor进程来执行。Driver在向...

. 9593

Spark性能调优

摘要:Spark性能调优主要从资源分配、并行度、Shuffle优化、序列化压缩及数据倾斜处理等方面入手。关键参数包括executor内存/核数设置、shuffle分区数、序列化方式选择等。代码层面应减少shuffle操作、合理缓存数据、广播小表,优先使用列式存储。数据倾斜可通过加盐、分区优化等方法处理。调优建议先分析瓶颈,逐步调整参数并监控效果,结合SparkUI等工具定位问题,实现代码和参数的双重优化,最终提升Spark作业执行效率。

onlymscn的博客 2071

Spark优化----Spark 性能调优

本文介绍了Spark的常规性能调优;算子调优;Shuffle调优;JVM调优

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值