Spark 通用的性能配置方法:内存和CPU的配置

简介: 前言 本文主要介绍关于通过配置Spark任务运行时的内存和CPU(Vcore)来提升Spark性能的方法。通过配置内存和CPU(Vcore)是比较基础、通用的方法。本文出现的Demo以X-Pack Spark数据工作台为背景介绍,数据工作台的详细介绍请参考:数据工作台。

前言

本文主要介绍关于通过配置Spark任务运行时的内存和CPU(Vcore)来提升Spark性能的方法。通过配置内存和CPU(Vcore)是比较基础、通用的方法。本文出现的Demo以X-Pack Spark数据工作台为背景介绍,数据工作台的详细介绍请参考:数据工作台

提交Spark任务的参数

提交Spark任务时需要提供如下的参数。

--class org.apache.spark.examples.SparkPi
--driver-memory 2G 
--driver-cores 1
--executor-cores 2
--executor-memory 8G
--num-executors 3
--name spark-pi
...

其中下面的参数都是和此次spark任务执行的性能相关。

--driver-memory 2G   //分配给Driver的内存。
--driver-cores 1         // 分配给Driver的Vcore。
--executor-cores 2    //分配给Executor的Vcore。
--executor-memory 8G   //分配给Executor的内存。
--num-executors 3  //分配的Executor的个数。

这些配置会影响spark任务执行的并行度、可用的Vcore和内存,从而影响执行的性能。下面分别看下如何配置这些参数。

并行度

按照上面的配置,此次spark任务的运行并行度为:--executor-cores的值 --num-executors的值,即23=6;也就是说同时最多会有6个task同时执行。
假设此次任务60个task,每个task执行时间为1秒,则此任务运行时间为:60/6*1=10秒;
先把--executor-cores提升为3,--num-executors提升为10,则此任务运行时间为:60/30*1=2秒。
所以增加并行度是提升性能比较常用和直接的方法。

Executor的资源配置

--executor-cores一般设置为2~4比较合适,一般通过和--num-executors组合来提升spark任务的并行度。
--executor-memory内存的配置一般和--executor-cores有一定的比例关系,比例常用的访问为1:2 到1:4之间。可以根据task运行过程GC的情况适当调整。Task运行时的GC情况可以通过Spark Job UI查看,如下图:
Snip20190708_3
其中Duration为task运行的时间,GC Time为task运行的Gc 时间。如果GC时间较长,可以适当增加--executor-memory的值或者减少--executor-cores的值(如果资源不足的话)

Driver的资源配置

--driver-memory和--driver-cores一般设置比较少,2G和1cores也基本共用。但是如果有算子把数据都拉倒Driver上去处理,需要增加--driver-memory的值,不过也建议这么做,因为这样最增加Driver的压力。如果

结束语

本文主要列出最基本的方法,Spark性能的调优时可以结合运行时Spark Job UI 查看每个任务的运行状态进行调优。其他调优方法和参数会陆续推出。
Spark详细配置请参考:Spark Configuration
X-Pack Spark介绍请参考:Spark 基本介绍

相关文章
|
5天前
汇编语言(第四版) 实验一 查看CPU和内存,用机器指令和汇编指令编程
汇编语言(第四版) 实验一 查看CPU和内存,用机器指令和汇编指令编程
|
11天前
|
Python
python3获取内存和cpu利用率记录日志文件psutil
python3获取内存和cpu利用率记录日志文件psutil
13 1
|
13天前
|
运维 Serverless Nacos
Serverless 应用引擎产品使用合集之在访问量过大的情况下,函数配置的cpu和内存会自动扩容吗
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
1月前
|
消息中间件 监控 NoSQL
中间件应用合理配置内存
【5月更文挑战第4天】中间件应用合理配置内存
30 2
中间件应用合理配置内存
|
1月前
|
存储 弹性计算 监控
【阿里云弹性计算】深入阿里云ECS配置选择:CPU、内存与存储的最优搭配策略
【5月更文挑战第20天】阿里云ECS提供多种实例类型满足不同需求,如通用型、计算型、内存型等。选择CPU时,通用应用可选1-2核,计算密集型应用推荐4核以上。内存选择要考虑应用类型,内存密集型至少4GB起。存储方面,系统盘和数据盘容量依据应用和数据量决定,高性能应用可选SSD或高效云盘。结合业务特点和预算制定配置方案,并通过监控应用性能适时调整,确保资源最优利用。示例代码展示了使用阿里云CLI创建ECS实例的过程。
103 5
|
1月前
|
关系型数据库 MySQL Java
实时计算 Flink版操作报错之整内存和cpu分配之后启动报错如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
1月前
|
监控 Linux API
LabVIEW监控实时嵌入式目标上的CPU和内存使用情况
LabVIEW监控实时嵌入式目标上的CPU和内存使用情况
193 4
|
1月前
LabVIEW中CPU和内存使用情况在NI分布式系统管理器中不可见
LabVIEW中CPU和内存使用情况在NI分布式系统管理器中不可见
28 3
|
8天前
|
消息中间件 存储 Kafka
实时计算 Flink版产品使用问题之 从Kafka读取数据,并与两个仅在任务启动时读取一次的维度表进行内连接(inner join)时,如果没有匹配到的数据会被直接丢弃还是会被存储在内存中
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
3天前
|
存储
数据在内存中的存储(2)
数据在内存中的存储(2)
18 5

热门文章

最新文章