Spark:性能调优实战

链接:

文字文档
极客链接

一、资源申请&并行度

spark.executor.cores

一个Executor中同时可以执行的task数目(在Executor内存不变的情况下,executor-cores数越大,平均下来一个task可以使用的内存就越少)

spark.executor.memory

Executor Java进程的堆内存大小,即Executor Java进程的Xmx值

spark.yarn.executor.memoryOverhead

Executor Java进程的off-heap内存,包括JVM overhead,sort、shuffle以及Netty的堆外内存等

spark.dynamicAllocation.enabled

是否开启动态资源分配,强烈建议开启。

spark.dynamicAllocation.maxExecutors

开启动态资源分配后,同一时刻,最多可申请的executor个数

spark.dynamicAllocation.minExecutors

开启动态资源分配后,某一时刻executor的最小个数。默认设置为3,即在任何时刻,作业都会保持至少有3个及以上的executor存活

spark.memory.fraction

存储+执行内存占节点总内存的大小 。

spark.memory.storageFraction

存储内存占(存储+执行)内存的比例

spark.driver.memory

driver使用内存大小

spark.yarn.driver.memoryOverhead

driver进程的off-heap内存

二、文件大小

spark.hadoop.hive.exec.orc.split.strategy

参数控制在读取ORC表时生成split的策略:

  • BI策略以文件为粒度进行split划分;

  • ETL策略会将文件进行切分,多个stripe组成一个split;

  • HYBRID策略当文件的平均大小大于hadoop最大split值(默认256M)时使用ETL策略,否则使用BI策略。
    由于读orc文件时默认按文件划分task(BI模式), 有数据倾斜的表(这里的数据倾斜指大量stripe存储于少数文件中)的情况并发可能不够, 影响执行效率. 可以改成ETL模式
    对于一些较大的ORC表,可能其footer较大,ETL策略可能会导致其从hdfs拉取大量的数据来切分split,甚至会导致driver端OOM,因此这类表的读取建议使用BI策略。

spark.hadoop.mapreduce.input.fileinputformat.split.minsize

计算Split划分时的minSize

spark.hadoop.mapreduce.input.fileinputformat.split.maxsize

控制在ORC切分时stripe的合并处理。具体逻辑是,当几个stripe的大小大于spark.hadoop.mapreduce.input.fileinputformat.split.maxsize时,会合并到一个task中处理。可以适当调小该值,如set spark.hadoop.mapreduce.input.fileinputformat.split.maxsize=134217728。以此增大读ORC表的并发。

spark.hadoopRDD.targetBytesInPartition

读取输入文件时&最终合并小文件时,每个task读取的数据量

spark.sql.adaptive.shuffle.targetPostShuffleInputSize

开启spark.sql.adaptive.enabled后,最后一个stage在进行动态合并partition时,会根据shuffle read的数据量除以该参数设置的值来计算合并后的partition数量。所以增大该参数值会减少partition数量,反之会增加partition数量。

spark.sql.mergeSmallFileSize

与 hive.merge.smallfiles.avgsize 类似,写入hdfs后小文件合并的阈值。如果生成的文件平均大小低于该参数配置,则额外启动一轮stage进行小文件的合并

spark.sql.targetBytesInPartitionWhenMerge

与hive.merge.size.per.task 类似,设置额外的合并job的map端输入size.

合并小文件时候,实际的map输入size=max(spark.sql.mergeSmallFileSize, spark.sql.targetBytesInPartitionWhenMerge , spark.hadoopRDD.targetBytesInPartition )

spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version

文件提交算法,MapReduce-4815 详细介绍了 fileoutputcommitter 的原理,version=2 是批量按照目录进行提交,version=1是一个个的按照文件提交。设置 version=2 可以极大的节省文件提交至hdfs的时间,减轻nn压力 。参考http://www.jasongj.com/spark/committer/

三、shuffle

spark.sql.shuffle.partitions

reduce阶段(shuffle read)的数据分区,分区数越多,启动的task越多,同时生成的文件数也会越多。

spark.sql.adaptive.enabled

是否开启调整partition功能,如果开启,spark.sql.shuffle.partitions设置的partition可能会被合并到一个reducer里运行。

spark.sql.adaptive.minNumPostShufflePartitions

开启spark.sql.adaptive.enabled后,合并之后最少会生成的分区数

spark.sql.adaptive.shuffle.targetPostShuffleInputSize

开启spark.sql.adaptive.enabled后,最后一个stage在进行动态合并partition时,会根据shuffle read的数据量除以该参数设置的值来计算合并后的partition数量。所以增大该参数值会减少partition数量,反之会增加partition数量。

spark.sql.adaptive.join.enabled

是否动态调整join算法

spark.sql.adaptiveBroadcastJoinThreshold

SortMergeJoin 转 BroadcastJoin 的阈值。

如果不设置该参数,该阈值与spark.sql.autoBroadcastJoinThreshold的值相等

 spark.sql.statistics.fallBackToHdfs

当表的文件大小元数据信息不可能用时回退到hdfs计算表的文件大小,从而决定是否使用map join. 分区表如果读入数据较少也不会优化为BroadcastJoin, 可以通过添加该参数优化:

spark.sql.adaptive.allowAdditionalShuffle

是否允许为了优化 Join 而增加 Shuffle。其默认值为 false

spark.sql.adaptive.skewedJoin.enabled

是否自动处理 Join 时数据倾斜 (根据前面stage的shuffle write信息操作来动态调整是使用sortMergeJoin还是broadcastJoin)

spark.sql.adaptive.skewedPartitionMaxSplits

处理一个倾斜 Partition 的 Task 个数上限,默认值为 5

spark.sql.adaptive.skewedPartitionRowCountThreshold

一个 Partition 被视为倾斜 Partition 的行数下限,也即行数低于该值的 Partition 不会被当作倾斜 Partition 处理。其默认值为 10L * 1000 * 1000 即一千万

spark.sql.adaptive.skewedPartitionSizeThreshold

一个 Partition 被视为倾斜 Partition 的大小下限,也即大小小于该值的 Partition 不会被视作倾斜 Partition。其默认值为 64 * 1024 * 1024 也即 64MB

spark.sql.adaptive.skewedPartitionFactor

倾斜因子。如果一个 Partition 的大小大于spark.sql.adaptive.skewedPartitionSizeThreshold的同时大于各 Partition 大小中位数与该因子的乘积,或者行数大于spark.sql.adaptive.skewedPartitionRowCountThreshold的同时大于各 Partition 行数中位数与该因子的乘积,则它会被视为倾斜的 Partition

spark.shuffle.service.enabled

启用外部shuffle服务,这个服务会安全地保存shuffle过程中,executor写的磁盘文件,因此executor即使挂掉也不要紧,必须配合spark.dynamicAllocation.enabled属性设置为true,才能生效,而且外部shuffle服务必须进行安装和启动,才能启用这个属性

spark.reducer.maxSizeInFlight

同一时刻一个reducer可以同时拉取的数据量大小

spark.reducer.maxReqsInFlight

同一时刻一个reducer可以同时产生的请求数

spark.reducer.maxBlocksInFlightPerAddress

同一时刻一个reducer向同一个上游executor最多可以拉取的数据块数

spark.shuffle.io.connectionTimeout

客户端超时时间,超过该时间会fetchfailed

spark.shuffle.io.maxRetries

shuffle read task从shuffle write task所在节点拉取属于自己的数据时,如果因为网络异常导致拉取失败,是会自动进行重试的。该参数就代表了可以重试的最大次数。如果在指定次数之内拉取还是没有成功,就可能会导致作业执行失败。

spark.shuffle.io.retryWait

每次重试的等待间隔:

spark.task.maxFailures

Task的最大重试次数

spark.reducer.maxReqSizeShuffleToMem

shuffle请求的文件块大小 超过这个参数值,就会被强行落盘,防止一大堆并发请求把内存占满。

四、广播mapjoin

spark.sql.autoBroadcastJoinThreshold

当执行join时,小表被广播的阈值。当被设置为-1,则禁用广播。表大小需要从 Hive Metastore 中获取统计信息。该参数设置的过大会对driver和executor都产生压力。

五、推测执行

spark.speculation

spark推测执行的开关,作用同hive的推测执行

spark.speculation.interval

开启推测执行后,每隔多久通过checkSpeculatableTasks方法检测是否有需要推测式执行的tasks

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/825737.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kaggle咖啡销售分析案例侧重可视化折线图条形图扇形图柱状图

目录 概述 环境依赖 数据描述 代码概述 导包 数据读取 统计缺失值 数据结构概述 描述统计 时间轴数据转换 月交易统计直方图 周交易统计图 小时数据转换 小时折线图 销售关系可视化统计 销售占比扇形图 价格箱线图 各类别多维度条形图统计 商店位置交易量折线…

重磅福利!参与现金红包抽奖活动,赶快行动吧!

文章目录 粉丝福利 粉丝福利 亲爱的朋友们,令人振奋的消息来啦!本月,我们特地为大家准备了一份特别的粉丝福利!只要您轻轻一点,关注我们的公众号,就有机会抽取现金红包,让您的生活多一份惊喜与喜…

【微信公众平台】扫码登陆

文章目录 前置准备测试号接口配置 带参数二维码登陆获取access token获取Ticket拼装二维码Url编写接口返回二维码接收扫描带参数二维码事件编写登陆轮训接口测试页面 网页授权二维码登陆生成ticket生成授权地址获取QR码静态文件支持编写获取QR码的接口 接收重定向参数轮训登陆接…

游泳耳机哪个牌子好?体验与口碑兼顾的4大游泳耳机汇总!

最近的天气越来越炎热了,许多人选择游泳作为一种既能锻炼身体又能享受清凉的活动。而随着科技的发展,越来越多的运动爱好者希望在游泳时也能享受到音乐的乐趣。因此,游泳耳机应运而生,成为市场上的热门产品。然而,面对…

使用PixVerse使用指定的角色生成视频

PixVerse 是一款可以将文字描述转换为高清视频的AI视频生成工具,它还支持直接生成原神角色的专属动画视频。以下是如何使用PixVerse使用指定的角色生成视频的步骤: 1. 点击PixVerse 网址 访问以下网址:https://app.pixverse.ai/create/vide…

jvm中的垃圾回收器

Jvm中的垃圾回收器 在jvm中,实现了多种垃圾收集器, 包括: 1.串行垃圾收集器 2.并行垃圾收集器 3.CMS(并发)垃圾收集器 4.G1垃圾收集器 1.串行垃圾回收器 效率低,使用较少 2.并行垃圾回收器 3.并发垃圾回…

软件估算的方法、过程、内容解读(估算指南)

4 估算方法 4.1 基于经验的方法 4.1.1 头脑风暴法 4.1.2 Delphi方法 4.1.2.1 过程图 4.1.2.2 组建评估组 4.1.2.3 系统介绍 4.1.2.4 系统分解与假设 4.1.2.5 设定偏差值 4.1.2.6 个人估计 4.1.2.7 估计结果汇总 4.1.2.8 估计差异讨论 4.1.2.9 结束 4.2 分解的方法…

Brainpan(VulnHub)

Brainpan 1、nmap 2、web渗透 随便看看 目录爆破 使用不同工具,不同字典进行爆破 9999端口分析 10000端口分析 字符串信息中,提示这个程序不能运行在DOS模式下,然后有32个A,还有一行关于复制字节到缓冲区的信息,还有一…

谈谈前端CSS盒模型

前言: 什么是CSS盒模型?盒模型的构造? 在前端开发中,CSS 盒模型是一种非常基础且核心的概念,它描述了文档中的每个元素被框架处理的方式。 ---- 打开浏览器开发者工具,查看Elements右侧下的Styles底部。 …

libVLC Ubuntu编译详解

1.简介 有时候,windows上开发不满足项目需求,需要移植到linux上,不得不自行编译libvlc,编译libvlc相对而言稍微麻烦一点。 我使用的操作系统:Ubuntu20.04 查看系统命令lsb_release -a libvlc版本: 3.0.1…

elment-plus 中 table 左对齐

elment-plus 中 table 左对齐 <el-tablev-loading"loading"class"flex-1 !h-auto":data"roleList":header-cell-style"{text-align: left }":row-style"{ height: 55px }":cell-style"{ text-align: left }"&…

Argus DBM 一款开源的数据库监控工具,无需部署Agent

开箱即用 无需部署Agent&#xff0c;开箱即用。我们使用JDBC直连您的数据库&#xff0c;输入IP端口账户密码即可。 全平台支持 Argus目前支持对Mysql, PostgreSQL, Oracle等数据库类型的监控&#xff0c;我们也会尽快适配其它数据库&#xff0c;致力于监控所有数据库。我们提…

AES 加解密(包含JS、VUE、JAVA、MySQL)工具方法

介绍 AES 是 Advanced Encryption Standard 的缩写&#xff0c;是最常见的对称加密算法。AES 在密码学中又称 Rijndael 加密法&#xff0c;是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的 DES&#xff0c;已经被多方分析且广为全世界所使用。 基本原理&#…

python 使用 Stable Diffusion API 生成图片示例

python 使用 Stable Diffusion API 生成图片示例 一、前言 在无聊的时候&#xff0c;想瞅一下sd生图遂做了一下 二、具体步骤 1、启动SD的api设置 注意&#xff0c;运行后的api相关功能可以在:http://127.0.0.1:7860/docs 查看 比如这一次我们要的生图的地址就是/sdapi/v1…

华为OD机试 - 结队编程(Java 2024 C卷 100分)

华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测试…

户外旅行摄影手册,旅游摄影完全攻略

一、资料前言 本套旅游摄影资料&#xff0c;大小295.47M&#xff0c;共有9个文件。 二、资料目录 《川藏线旅游摄影》杨桦.彩印版.pdf 《户外摄影指南》(Essential.Guide.to.Outdoor.photography.amateur)影印版.pdf 《旅行摄影大师班》(英)科尼什.扫描版.PDF 《旅行摄影…

数据结构面试常见问题:数组和链表的区别是什么?

数组 在编程的世界里&#xff0c;数组无疑是最基础的数据结构之一&#xff0c;它像一排整齐的房子&#xff0c;每个房子都有自己的门牌号&#xff0c;我们可以通过这个门牌号直接找到这个房子&#xff0c;无需从头至尾的逐一查找。这个门牌号&#xff0c;就是我们所说的索引&am…

一键下载全自动安装Office全家桶

概述 今天分享一款超级强大的工具软件&#xff0c;该软件实现了一键自动化下载、安装Office全家桶的功能。整套安装流程堪称行云流水&#xff0c;从下载到安装全自动&#xff0c;无需上手操作。只需要安装该工具软件后&#xff0c;点击安装即可。软件会自动识别不同的操作系统架…

Oracle——领先的企业级数据库解决方案

一、WHAT IS ORACLWE&#xff1a; ORACLE 数据库系统是美国 ORACLE 公司&#xff08;甲骨文&#xff09;提供的以分布式数据库为核心的一组软件产品&#xff0c;是目前最流行的客户/服务器(CLIENT/SERVER)或B/S 体系结构的数据库之一&#xff0c;ORACLE 通常应用于大型系统的数…

【计算机毕业设计】微信小程序:MHK自学平台的设计与实现——后附源码

&#x1f389;**欢迎来到我的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 一名来自世界500强的资深程序媛&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 在深度学习任务中展现出卓越的能力&#xff0c;包括但不限于…