Spark 平衡 CPU

news2024/9/21 18:33:36

Spark 平衡 CPU

  • CPU/内存平衡
  • CPU 低效
    • 线程挂起
    • 调度开销
  • 优化 CPU

CPU/内存平衡

Spark 将内存分 :

  • Execution Memory : 用于分布式任务执行
  • Storage Memory : 用于 RDD 缓存
  • RDD 缓存展开前消耗 Execution Memory , 最后占用 Storage Memory

线程/执行内存关系:
执行内存抢占规则 : 在同个 Executor 有 N 个线程尝试抢占执行内存
抢占原则:

  • 执行内存总大小 (M) = Execution Memory 初始大小 + Storage Memory 剩余空间
  • 每个线程的可用内存的上下限,下限 : M/N/2,上限 : M/N

平衡 CPU/内存的 3 类配置参数 : 并行度、集群的并行计算能力、执行内存大小

并行度 :分布式数据集的划分数

  • 并行度越高,数据的粒度越细,数据分片越多,数据越分散

并行度的配置项 :

  • spark.default.parallelism : 设置 RDD 的默认并行度
  • spark.sql.shuffle.partitions : Spark SQL 指定 Shuffle Reduce 默认的并行度

并发度 : 同一时间内,一个 Executor 能同时运行的最大任务数量

  • spark.executor.cores :Executor 的线程池大小
  • spark.task.cpus :每个任务在运行时要消耗的线程数
  • 并发度 = Executor 的线程池大小/ 每个任务运行时的线程数
  • spark.task.cpus 默认为 1,并发度默认为 spark.executor.cores

Executor 线程池:线程可以复用,但同一时间中,每个线程只能计算一个任务

  • 每个任务负责处理一个数据分片
  • 在运行时,线程、任务、分区是一一对应的关系

执行内存大小:

  • 堆内执行内存的初始值:spark.executor.memory * spark.memory.fraction * (1 - spark.memory.storageFraction)
  • 堆外执行内存 :spark.memory.offHeap.size * (1 - spark.memory.storageFraction)

CPU 低效

线程挂起

线程挂起的原因 :

  • 动态变化的执行内存总量 M
  • 动态变化的并发度 N~
  • 分布式数据集的数据分布

动态变化的执行内存总量 M :

  • 下限: Execution Memory 初始值
  • 上限: spark.executor.memory * spark.memory.fraction
  • 上限会随着 Storage Memory 增加,而减少

线程总数 (N) 是固定 :

  • Executor 最大并发度 (N) : spark.executor.cores/spark.task.cpus
  • Executor 当前并发度 (N~) : Executor 中当前并行执行的任务数 ( N~ <= N )

数据分片的数据量决定了任务要申请多少内存

  • 当分布式数据集的并行度设置好,线程挂起也就解决

调度开销

并行度设到最大,每个数据分片足够小,小到每个 CPU 线程都能申请到内存

  • 数据分散的副作用:调度开销骤增

优化 CPU

定 Executor 线程池和执行内存大小的算法:

  • 一个数据分片大小在(M/N/2, M/N)之间的并行度

在这里插入图片描述

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

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

相关文章

Eclipse快捷键,IDEA中使用Eclipse快捷键

/** Eclipse中的快捷键&#xff1a;* 1.补全代码的声明&#xff1a;alt /形参提示&#xff1a;Ctrl alt /* 2.快速修复: ctrl 1 * 3.批量导包&#xff1a;ctrl shift o* 4.使用单行注释&#xff1a;ctrl /* 5.使用多行注释&#xff1a; ctrl shift / * 6.取消多行注释…

《数据解构》HashMap源码解读

&#x1f451;作者主页&#xff1a;Java冰激凌 &#x1f4d6;专栏链接&#xff1a;数据结构 目录 了解HashMap HashMap的构造 两个参数的构造方法 一个参数的构造方法 不带参数的构造方法 哈希表初始化的长度 HashMap源码中的成员 Pt Get 了解HashMap 首先我们要明…

C语言——文件操作

文章目录0. 思维导图1. 为什么使用文件2. 什么是文件2.1 程序文件2.2 数据文件2.3 文件名3. 文件的打开和关闭3.1 文件指针3.2 文件的打开和关闭4. 文件的顺序读写4.1 字符/字符串写入&#xff08;出&#xff09;4.2 格式化写入&#xff08;出&#xff09;4.3 二进制输入&#…

拼多多的赶超让京东感受到压力,如今才发起百亿补贴可能晚了

近段时间以来&#xff0c;京东推出百亿补贴计划的宣传可谓铺天盖地&#xff0c;看起来京东这是要奋起反击了&#xff0c;然而拼多多如今的体量已经足够大&#xff0c;超越了京东&#xff0c;京东再发起反击已经晚了。一、拼多多超越了京东在用户数方面&#xff0c;早在2021年底…

GitLab创建仓库分配权限

文章目录创建仓库分配权限参考资料创建仓库 点击“New project”创建新项目 分配权限 点击左侧菜单栏“Members”成员&#xff0c;菜单 “Invite member”邀请成员&#xff0c;添加人员&#xff1b;“Invite group”邀请组织&#xff0c;添加一个组织所有成员下面输入框搜索…

ASEMI高压MOS管7N60参数,7N60封装,7N60规格

编辑-Z ASEMI高压MOS管7N60参数&#xff1a; 型号&#xff1a;7N60 漏极-源极电压&#xff08;VDS&#xff09;&#xff1a;600V 栅源电压&#xff08;VGS&#xff09;&#xff1a;30V 漏极电流&#xff08;ID&#xff09;&#xff1a;7A 功耗&#xff08;PD&#xff09;…

如何规避近年频发的数据安全事故?浅谈 SaaS 数据安全之路

近几年&#xff0c;删库跑路事件在国内频频发生。前有“某公司程序员删库跑路被判刑六年”&#xff0c;后有某公司几百家客户数据遭严重删除。这不仅为公司本身带来直接的财产损失&#xff0c;更为严重的是&#xff0c;公司的公信力、品牌形象也随之毁于一旦。值得注意的是&…

零基础如何学习Web 安全,如何让普通人快速入门网络安全?

前言 网络安全现在是朝阳行业&#xff0c;缺口是很大。不过网络安全行业就是需要技术很多的人达不到企业要求才导致人才缺口大 初级的现在有很多的运维人员转网络安全&#xff0c;初级也会慢慢的卷起来&#xff0c;但是岗位多不用怕&#xff0c;以后各大厂也都会要网络安全人…

代码随想录-50-222. 完全二叉树的节点个数

目录前言题目1.利用完全二叉树性质的递归2. 本题思路分析&#xff1a;3. 算法实现4. pop函数的算法复杂度5. 算法坑点前言 在本科毕设结束后&#xff0c;我开始刷卡哥的“代码随想录”&#xff0c;每天一节。自己的总结笔记均会放在“算法刷题-代码随想录”该专栏下。 代码随想…

基础复习第二十四天  网络编程

网络编程软件结构C/S结构 &#xff1a;全称为Client/Server结构&#xff0c;是指客户端和服务器结构。常见程序有&#xff31;&#xff31;、红蜘蛛、飞秋等软件。B/S结构 &#xff1a;全称为Browser/Server结构&#xff0c;是指浏览器和服务器结构。常见浏览器有IE、谷歌、火狐…

基于React Hooks的简单全局状态共享实现方案

什么是全局状态共享&#xff1f; 常规B端项目中往往需要一些全局通用的状态来实现跨组件层级甚至整个系统全局的共享&#xff0c;比如&#xff1a;当前用户的信息、某些业务状态等。 都有什么解决方案&#xff1f; 业内常规的成熟方案一般有&#xff1a;mobx、redux等专门的全…

containerd启动过程

github: https://github.com/containerd/containerd 1. 前言 dockerd 是 docker engine 守护进程&#xff0c;dockerd 启动时会启动 containerd 子进程&#xff0c;dockerd 与 containerd 通过 rpc 进行通信ctr 是 containerd 的 clicontainerd 通过 shim 操作 runc&#xff0…

throw语句以及throw “error“ 和 throw new Error(“error“)的区别

文章目录什么是 throw 语句&#xff1f;throw 语句后面跟一个对象Error 构造函数对象结论什么是 throw 语句&#xff1f; throw 语句用来抛出一个用户自定义的异常。当前函数的执行将被停止&#xff08;throw 之后的语句将不会执行&#xff09;&#xff0c;并且控制将被传递到调…

AOP的另类用法 (权限校验自定义注解)

&#x1f473;我亲爱的各位大佬们好&#x1f618;&#x1f618;&#x1f618; ♨️本篇文章记录的为 AOP的另类用法 (权限校验&&自定义注解) 相关内容&#xff0c;适合在学Java的小白,帮助新手快速上手,也适合复习中&#xff0c;面试中的大佬&#x1f649;&#x1f649…

磁盘存储和文件系统管理

磁盘存储和文件系统管理1. 磁盘结构1.1设备文件1. 设备类型&#xff1a;2. 磁盘设备的设备文件命名&#xff1a;3. 虚拟磁盘&#xff1a;4. 不同磁盘标识&#xff1a;a-z,aa,ab…5. 同一设备上的不同分区&#xff1a;1,2, ...6. 创建设备文件7. 工具 dd常用选项示例demo8. hexd…

maven的安装配置

目录 1. Maven的安装配置 1.1检测jdk的版本 1.2下载maven 1.3配置maven环境变量 2.认识maven的目录结构 2.1 创建一个文件夹作为项目的根目录 1.创建如下结构的目录 2. 在pom.xml文件中写入如下内容(不用记忆) 3.在mian-->java--》下边创建java文件​编辑 4.cmd下…

XGboost部分细节补充

XGBoost算法原理详解与参数详解 R语言XGBoost参数详解 XGBoost部分细节补充1. XGBoost线性模型的实现2.XGBoost对二分类和多分类的处理方法1. XGBoost线性模型的实现 前面文章中已经详细的介绍了XGBoost基于决策树的实现&#xff0c;今天我们主要介绍XGBoost基于线性模型的实现…

模式识别 —— 第二章 参数估计

模式识别 —— 第二章 参数估计 文章目录模式识别 —— 第二章 参数估计最大似然估计&#xff08;MLE&#xff09;最大后验概率估计&#xff08;MAP&#xff09;贝叶斯估计最大似然估计&#xff08;MLE&#xff09; 在语言上&#xff1a; 似然&#xff08;likelihood&#xf…

【Git】P1 Git 基础

Git 基础Git 基本概念集中式版本控制工具 与 分布式版本控制工具Git 下载与安装Bash 初始设置创建本地仓库Git 三区概念一个简单的提交流程更改文件后再次提交git 实现版本切换查看提交日志设置 git 快捷键版本切换&#xff08;一&#xff09;版本切换&#xff08;二&#xff0…

华为OD机试题,用 Java 解【数据分类】问题

华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典使用说明 参加华为od机试,一定要注意不…