ETL 组件Spark资源设置指导

news2025/1/16 3:59:01

一、概念介绍

1.RDD

RDD(Resilient Distributed Dataset):弹性分布式数据集,是Spark中最基础的数据抽象。它本质就是一个类,屏蔽了底层对数据的复杂抽象和处理,为用户提供了一组方便数据转换和求值的方法。

简单来说,就是Spark把处理的数据会封装成一个个的数据集,这个数据集是会进行分区的,就是将数据均分,每个分区的数据用一个线程进行处理。所以要理解,Spark是将整个数据切分成多个分区,以启动时指定的核数(如果是使用了超线程技术的核,那处理任务的并行度就是核数的2倍)并行处理数据,例:总共20核,50个分区,那么并行度只有20,要三轮才能处理完所有的数据,最后一轮有10个核是空转的状态。

2.Driver

​ 每个Spark任务的任务分配、协调的角色。

3.Executor

​ 每个Spark任务真正进行数据计算的角色。

在这里插入图片描述

图1

二、资源设置指导

1.主要设置参数:

(1) executor-cores 执行器的核数,spark-submit脚本中指定

如图1所示,该参数设置的是启动的每个执行器的核数,每个执行器都是一个JVM程序,设置核数个数就是该JVM启动的处理线程的个数。

(2) executor-memory 执行器的内存个数,spark-submit脚本中指定

执行器内存,每个执行器JVM内存容量,该内存是由执行器分配的核数存储资源所共享的,计算资源不共享

(3) total-executor-cores 总的执行器核数,spark-submit脚本中指定

总执行器核数数量,该值除以每个执行器的核数,就等于需要启动的执行器数量,该值为Spark任务总的并行度。

(4) number-partition 分区个数,后端传入参数指定

分区个数,该值为程序内使用,数据经过一系列的转换操作后,可能每个分区内的数据数量就不相近了,会使用repartition进行重分区,以使每个分区的数据量重新均分。通过后端传入json参数的sparkConfig.numPartitions参数指定

2.设置建议(重点)

每个执行器设置核数和内存个数时,要基于总待处理数据量及分区个数进行估算,如果总数据量60G,分区个数10,则每个执行器每个线程所分配的内存应该尽可能是6G,如果每个执行器线程分配的内存为3G,则Spark处理完单个分区中3G数据后发现内存不够,会根据优先级删除过期的数据,再开始加载未处理的3G数据。此时虽然标记了删除已处理的数据,然而JVM-GC并未真正开始,对象未真正删除,再加载未处理的数据进行计算,就容易导致OOM task failed。

(1) total-executor-cores设置个数

公式:number-partition = total-executor-cores ✖️ n

n最好为整数,避免最后一轮存在执行器空转。一般为2~3,n越大,每个分区处理的数据量越小,处理的分区轮数越多,需要合理设置

(2) executor-cores与executor-memory

关于executor-memory的内存模型以及executor-cores的内存使用看下图:
在这里插入图片描述

在这里插入图片描述

公式:(executor-memory - 300mb) x 0.6 x 0.5 / executor-cores = 总待处理数据的数据总量 / number-partition

例如:此时待处理的数据总量是1000GB, 此时的 number-partition[分区数] = 1000,则单个task计算所需使用量为:1gb
按照spark官网推荐:spark应用的最大并行度应为total-executor-cores的2~3倍,故total-executor-cores应该设置为1000/[3或2] 约等于:300 ~ 500 左右,为了方便计算设置 total-executor-cores = 300,executor-cores = 3,executor个数则为100,根据上面的公式反向推导,该executor-memory = 1gb * 3 / 0.5 / 0.6 + 300mb = 10.5gb

T为单个分区分配数据量对于单个线程分配内存的倍数,建议1~3倍。每个线程分配的内存一般是3~6G。

(3) number-partition

分区个数的设置参考(1)(2)中的公式。

3.结论

​ 该四项值设置为基础设置,需要综合考虑设置合理范围!

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

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

相关文章

研报精选230505

目录 【行业230505国信证券】风电or电网产业链周评(4月第5周):海风开发资源集中释放,黑色类原材料价格持续下行 【行业230505天风证券】通信AI系列之:人工智能之火点燃算力需求,AI服务器迎投资机遇 【行业2…

数字孪生遇上VR:未来的新生态

数字孪生和虚拟现实(VR)是当今技术领域备受关注的两个概念。 数字孪生作为物理世界的数字映像,已经在许多行业得到了广泛应用。而VR则是一种基于计算机生成的三维交互式虚拟环境,被广泛应用于娱乐、教育和游戏等领域。 数字孪生…

十一、MyBatis的逆向工程

文章目录 十一、MyBatis的逆向工程11.1 (清新简洁版)创建逆向工程的步骤11.2 (奢华尊享版)创建逆向工程的步骤11.3 说明尊享版和简洁版的区别 本人其他相关文章链接 十一、MyBatis的逆向工程 正向工程:先创建Java实体类,由框架负责根据实体类生成数据库…

Spring MVC程序开发

文章目录 一、什么是 Spring MVC(一)MVC的定义(二)MVC 和 Spring MVC 的关系(三)为什么要学习 Spring MVC 二、Spring MVC使用方法和技巧(一)Spring MVC 创建和连接(二&a…

clonezilla(再生龙)克隆系统操作

一、前言 背景:由于存在对嵌入式设备系统备份的需求,主要使用在对一个嵌入式设备安装好ros以及其他插件(安装时间十分冗长),然后对该系统进行备份,快速复制到下一台嵌入式设备中。因此引出了克隆linux系统…

MySQL知识学习08(MySQL自增主键一定是连续的吗)

众所周知,自增主键可以让聚集索引尽量地保持递增顺序插入,避免了随机查询,从而提高了查询效率。 但实际上,MySQL 的自增主键并不能保证一定是连续递增的。 下面举个例子来看下,如下所示创建一张表: 1、自…

C++类与对象(二)——拷贝构造函数

文章目录 拷贝构造函数1.拷贝构造函数的概念2.拷贝构造函数的特性 前言 本章继续学习类的6个默认成员函数——拷贝构造函数 拷贝构造函数 1.拷贝构造函数的概念 拷贝构造函数:使用已经存在的一个对象初始化创建另一个对象。 举例: class Date { publ…

Golang每日一练(leetDay0056) 单个编辑距离、寻找峰值

目录 161. 单个编辑距离 One Edit Distance 🌟🌟 162. 寻找峰值 Find Peak Element 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 …

vmware 安装Kylin-Desktop-V10-SP1-General-Release-2203-X86_64.iso

下载 官网:国产操作系统、银河麒麟、中标麒麟、开放麒麟、星光麒麟——麒麟软件官方网站 (kylinos.cn) 点击桌面操作系统 选择No1 点击申请试用 填写相关信息,点击立即提交,就会获取到下载连接, 点击下载按钮等待下载完成即可 安…

Java中顺序表详解

前言 在Java编程中,顺序表是一种基础且重要的数据结构。它通常用来表示线性结构数据,如数组等。通过使用顺序表,我们可以轻松管理和操作大量的数据,并实现各种算法和功能。本篇博客将详细介绍Java中顺序表相关的原理、方法和实例&…

BRDF

文章目录 0. 写在前面1. 简单理解2. Cook-Torrance BRDF模型2.1 BRDFD 法线分布函数F 菲涅尔G 几何函数1.1.3 L i ( p , ω i ) L_i(p,\omega_i) Li​(p,ωi​)1.1.1 积分框架1.1.2 f r ( p , ω i , ω o ) f_r(p,\omega_i,\omega_o) fr​(p,ωi​,ωo​): 个人疑惑及解答1.…

ESL设计概述

‍‍ ‍‍前言 随着芯片面临着应用场景丰富多变、集成功能模块越来越多、片内通信及模块间接口越来越复杂、设计规模越来越大以及PPA要求越来越高的需求,芯片设计方法面临越来越大的挑战。架构的合理性、完备性和一致性很大程度上决定了芯片设计的成败。基于同样的I…

《基于光电容积图法的两种可穿戴设备在不同身体活动情况下监测心率的一致性:一种新的分析方法》阅读笔记

目录 一、论文摘要 二、论文十问 Q1:论文试图解决什么问题? Q2:这是否是一个新的问题? Q3:这篇文章要验证一个什么科学假设? Q4:有哪些相关研究?如何归类?谁是这一课…

电容笔有必要买最好的吗?推荐的ipad手写笔

随着科技的进步,各种类型的电容笔的生产厂家越来越多。一支好的电容笔,不仅能大大提高我们的工作效率,而且能大大提高我们的学习效果。平替电容笔无论从技术水平,还是从产品品质来看,都具有十分广阔的市场前景。以下是…

redis基本数据类型及常见命令

数据库操作 select <库号>: 切换库 默认共有15个 dbsize: 查看当前库的key数量 flushdb: 清空当前库 flushall: 清空所有库 Key的操作 keys *&#xff1a; 查看当前库的所有key exists <key>: 判断该key是否存在 type <key>: 查看该key的类型 de <…

【原创】使用PowerShell配置新安装的ESXI主机

安装PowerCLI 模块 在线安装 优点&#xff1a;简单 缺点&#xff1a;太慢 启动PowerShell命令行&#xff0c;执行行如下命令 Install-Module -Name VMware.PowerCLI离线安装 先到VMware官网下载离线包&#xff0c;然后分几个步骤安装 https://developer.vmware.com/powercl…

redis5新增数据类型

Bitmaps 概念 &#xff08;1&#xff09; Bitmaps本身不是一种数据类型&#xff0c; 实际上它就是字符串&#xff08;key-value&#xff09; &#xff0c; 但是它可以对字符串的位进行操作。 &#xff08;2&#xff09; 可以把Bitmaps想象成一个以位为单位的数组&#xff0c; 数…

HIEE300024R4 UAA326A04什么是反馈和前馈控制系统?

​ HIEE300024R4 UAA326A04什么是反馈和前馈控制系统&#xff1f; 反馈控制系统&#xff1a; 反馈系统测量过程中的值并对测量值的变化做出反应。 在传感器的帮助下测量过程的输出&#xff0c;并将传感器值提供给控制器以采取适当的控制措施。控制器将此传感器信号与设定点进行…

人物专辑丨技术服务展计讯风采,助力客户显计讯担当

正所谓&#xff1a;平凡铸就伟大。一切令人赞叹的不凡&#xff0c;都来自于平凡点滴的坚守&#xff1b;一切砥砺前行的坚持&#xff0c;都来自于责任的担当。 在计讯物联高质量发展的进程中&#xff0c;不乏敢于担当、踏实勤恳、爱岗敬业的计讯人。他们扎根岗位&#xff0c;坚…

grafana-report在grafana7中遇到的问题

一、点击之后报错pdf报错&#xff1a;NO image renderer available/installed 查看grafana日志后&#xff0c;有以下报错&#xff1a; Could not render image, no image renderer found/installed. For image rendering support please install the grafana-image-renderer …