Spark SQL调优实战

1、新添参数说明

// Driver和Executor内存和CPU资源相关配置

--是否开启executor动态分配开启时spark.executor.instances不生效

spark.dynamicAllocation.enabled=false

--配置Driver内存

spark.dirver.memory=5g

--driver最大结果大小,设置为0代表不限制,driver在拉取结果时,如果结果超过阈值会报异常

spark.driver.maxResultSize=0

--配置executor内存和cpu

spark.executor.memory=5g

spark.executor.cores=8

--executor额外内存,executor内存包括三个部分,heap、off-heap以及overhead,heap和off-heap用于存储executor上任务的执行结果块以及用作执行内存,overhead作为额外内存用于存储虚拟机的开销

spark.yarn.executor.memoryOverhead=6120

--配置executor实例个数,此种方式是固定资源分配方式

spark.executor.instances=25

--是否开启executor堆外内存,以及堆外内存的的大小

spark.memory.offHeap.enabled=true

spark.memory.offHeap.size=2048mb

--spark内存既可以用于存储也可以用于计算,计算内存和存储内存是软边界,这个参数用于设置存储内存的比例

spark.memory.fraction=0.4

// 序列化器相关配置,spark默认采用java序列化器,也提供kryoserializer的实现后者的性能是前者的十倍

spark.kryoserializer.buffer.max=2047mb

spark.kryoserializer.buffer=16384kb

//中间结果网络传输压缩,缓解内存和网络传输压力

spark.shuffle.compress=true

spark.rdd.compress=true

//开启spark任务推断,优化分区任务执行时间不均衡问题,避免严重拖后腿任务

spark.speculation=true

spark.speculation.interval=60s

spark.speculation.multiplier=1.3

spark.speculation.quantile=0.99

//网络通信超时和失败重试相关参数,避免网络质量差或不稳定导致的任务失败

spark.network.timeout=300

spark.shuffle.io.maxRetries=30

spark.shuffle.io.retryWait=10s

//spark对分区结果的大小做了2G的限制,超出了就会报too large dataframe异常,这时需要增加shuffle分区,缓解数据倾斜,但是如果数据本身是倾斜了,下面参数治标不治本,默认300

spark.sql.shuffle.partitions=500

//设置自动广播阈值,在大表join小表时可以将小表作为广播变量,存在内存中,提升join的性能

spark.sql.autoBroadcastJoinThreshold=-1

  1. 参数影响
  • 什么时候需要将spark.dynamicAllocation.enable设置为false?

回答:spark默认按照128m来对文件进行分区如果文件比较大比如40G分区多达300多个采用动态分配策略可能导致占用太多的集群资源使得集群崩溃,如下对比图。

1: 采用动态分配策略executor实例数高达115(116另Driver)

2:采用静态分配策略executor实例数固定为25

  • spark.memory.offHeap.enabled和spark.memory.offHeap.size的影响

回答在运行百万级别job_trsf_dim_chl_cust_spark_df任务时使用默认配置参数报直接内存不足异常导致作业运行失败如下图

3: 堆外内存不足导致任务运行失败

添加以上参数后作业运行成功

  • spark.kryoserializer.buffer大小的调整

回答当使用kryoserializer序列化器时遇到Buffer大小不足提示require ** but available等信息需要调大上述参数

第四、调大spark.sql.shuffle.partitions的目的?

4: 分区结果超过2G错误

回答当出现如上图所示错误很大程度是因为数据发生了倾斜这时可以调整shuffle的分区均衡分区中的数据但如果数据本身是倾斜只能自定义分区规则重写Spark Partitioner或进行SQL调优

  • 为什么要避免对大表进行select * 操作

回答因为Spark是以Client方式向Yarn提交作业查询的结果会返回给Driver端对一个40G的表进行全量查询会导致Driver端崩溃导致如下图所示的错误

5: Jave堆内存

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

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

相关文章

SQLserver2008 r2 下载安装配置、使用、新建登录用户及通过Navicat远程连接

目录 一、下载 二、安装配置 1.安装 2.许可条款 3.安装程序支持文件 4.功能选择 5.实例配置 6.服务器配置 7.数据库引擎配置 8.Reporting Services 配置 9.安装进度 ​编辑 10.完成 三、使用 四、新建登录用户 1.新建登录名 2.常规 3.服务器角色 4. 用户映…

基于CNN+LSTM深度学习网络的时间序列预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 卷积神经网络(CNN) 4.2 长短时记忆网络(LSTM) 4.3 CNNLSTM网络结构 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MA…

Java设计模式大全:23种常见的设计模式详解(一)

本系列文章简介: 设计模式是在软件开发过程中,经过实践和总结得到的一套解决特定问题的可复用的模板。它是一种在特定情境中经过验证的经验和技巧的集合,可以帮助开发人员设计出高效、可维护、可扩展和可复用的软件系统。设计模式提供了一种在…

架构学习(四):scrapy下载中间件实现动态切换User-Agent

scrapy下载中间件实现动态与固定UserAgent 前言关卡:实现动态切换User-Agentscrapy设置User-Agent方式梳理User-Agent生效梳理为何选择在下载中间件中实现自定义User-Agent下载中间件 结束 前言 请求头User-Agent是比较常规的反爬手段,不同站点对其检测…

thinkphp6入门(17)-- 网站开发中session、cache、cookie的区别

Session(会话): 定义: Session是一种用于在服务器端存储用户信息的机制,以跟踪用户的状态。 数据存储位置: 存储在服务器端,可以存在于内存、数据库或文件系统中。 生命周期: 存在于用户访问应…

离散数学——图论(笔记及思维导图)

离散数学——图论(笔记及思维导图) 目录 大纲 内容 参考 大纲 内容 参考 笔记来自【电子科大】离散数学 王丽杰

AI助力农作物自动采摘,基于YOLOv3全系列【yolov3tiny/yolov3/yolov3spp】参数模型开发构建作物生产场景下番茄采摘检测计数分析系统

去年十一那会无意间刷到一个视频展示的就是德国机械收割机非常高效自动化地24小时不间断地在超广阔的土地上采摘各种作物,专家设计出来了很多用于采摘不同农作物的大型机械,看着非常震撼,但是我们国内农业的发展还是相对比较滞后的&#xff0…

Dockerfile文件参数配置和使用

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

C# Socket通信从入门到精通(21)——Tcp客户端判断与服务器断开连接的三种方法以及C#代码实现

前言 我们开发的tcp客户端程序在连接服务器以后,经常会遇到服务器已经关闭但是作为客户端的我们不知道,这时候应该应该有一个机制我们可以实时监测客户端和服务器已经断开连接,如果已经断开了连接,我们应该及时报警提示用户客户端和服务器已经断开连接,本文介绍三种可以监…

幸福小院小区中央空调节能改造项目

空调计费是指“中央空调计费”,这种技术实际上是在对水、电、煤气的基础上发展起来的对冷热能量进行计量的一种计费系统技术。 节能改造项目:幸福小院小区. 项目情况需求: 该项目是小区住宅用户建筑,根据功能分区管理…

Vue中路由的使用

目录 1 作用 2 使用方法 2.1 安装路由 2.2 创建路由并导出 2.3 在应用实例中使用vue-router 2.4 声明router-view,展示组件内容 2.5 页面跳转 3 补充内容-子路由 1 作用 能够按不同的访问路径,展示不同组件的内容。 2 使用方法 2.1 安装路由 …

问题:塑瓷后的牙冠要比完成的牙冠大() #学习方法#其他

问题:塑瓷后的牙冠要比完成的牙冠大() A.10% B.10%-15% C.15%-20% D.20%-30% E.50% 参考答案如图所示

springboot157基于springboot的线上辅导班系统的开发与设计

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

智能优化算法 | Matlab实现合作优化算法(CSA)(内含完整源码)

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 智能优化算法 | Matlab实现合作优化算法(CSA)(内含完整源码) 源码设计 clear clc close SearchAgents_no=30; % Number of search agents Max_iteration=1000;

PiflowX新增Apache Beam引擎支持

参考资料: Apache Beam 架构原理及应用实践-腾讯云开发者社区-腾讯云 (tencent.com) 在之前的文章中有介绍过,PiflowX是支持spark和flink计算引擎,其架构图如下所示: 在piflow高度抽象的流水线组件的支持下,我们可以…

【Leetcode】1696. 跳跃游戏 VI

文章目录 题目思路代码结果 题目 题目链接 给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。 一开始你在下标 0 处。每一步,你最多可以往前跳 k 步,但你不能跳出数组的边界。也就是说,你可以从下标 i 跳到 [i 1, min(n -…

sqli.labs靶场(54-65关)

54、第五十四关 提示尝试是十次后数据库就重置,那我们尝试union 原来是单引号闭合 id-1 union select 1,database(),(select group_concat(table_name) from information_schema.tables where table_schemadatabase()) -- 数据库:challenges&#xff0c…

【计算机网络】计算机网络复习资料(期末)

复习要点 一、填空题 1.计算机网络的两个重要基本特点 连通性、共享 2.计算机中的端口号类型 两类端口号 { 服务器端 { 熟知端口号(系统端口号)数值为0~1023 登记端口号,1024~49151 } 客户端使用的端口号:短…

米桃安全漏洞讲堂系列第2期:XSS跨站脚本攻击漏洞

一、一次钓鱼攻击引发的反制 某日,安全团队收到监控预警,有外部人员使用钓鱼邮件对公司内部人员进行信息诈骗。安全团队立即开始分析事件进程。 攻击者以劳动补贴名义群发邮件,诱导内部员工扫描二维码,进而填写个人信息、银行卡等…

WPF控件-ItemsControl

介绍 ItemsControl是用于展示一组项的控件。我们常见的列表&#xff08;ListBox&#xff09;、数据表格&#xff08;DataGrid&#xff09;等都是继承自ItemsControl。可用于自定义样式展示各种批量的数据集合。 常见使用示例&#xff1a; <ItemsControl ItemsSource"…