[Spark] 固定资源申请和动态资源分配

本文假设Spark部署方式为YARN。

一个Container包含一个Executor(即一个JVM进程)。

一、固定资源申请

driver-cores:设置 Driver的核数,默认1
driver-memory:设置Driver进程的内存,默认1G

num-executors:设置Spark作业总共要用多少个Executor进程来执行,默认2
executor-cores:设置每个Executor进程的核数,默认1
executor-memory:设置每个Executor进程的内存,默认1G

spark.default.parallelism:设置每个Stage的默认Task数量,建议设定为CPU总核数的2-3倍,默认为空。

spark-submit  \
--driver-cores 2 \
--driver-memory 15G \
--num-executors 4 \
--executor-cores 2 \
--executor-memory 20G \
--conf spark.default.parallelism=4
--queue root.default \
--verbose \
model.py

问题:通过parallelize()函数创建的RDD,分区数是怎么确定的?
首先根据函数参数numSlices;如果参数为空,则根据spark.default.parallelism;如果再为空,则取所有Executor的总核数,即num-executors*executor-cores(如果总核数小于2,则取2)。

问题:设定–num-executors 4 --executor-cores 2 --executor-memory 3G时,请问占用了多少资源(CPU和内存)?
除了Driver默认的1核1G外,Executor占用的CPU总核数=4×2=8 vcores,总内存=4×3=12G,可以简单理解为用了4台机器,每台机器都是2核3G的配置。

pyspark --queue gld --num-executors 4 --executor-cores 25 --executor-memory 100G
java.lang.IllegalArgumentException: Required executor memory (102400+2048 MB) is above the max threshold (65535 MB) of this cluster! Please check the values of ‘yarn.scheduler.maximum-allocation-mb’ and/or ‘yarn.nodemanager.resource.memory-mb’.

二、动态资源分配

Spark可以根据任务的情况动态申请资源,空闲时可以释放资源,避免资源的浪费。

配置例子:

spark-sql \
--queue gld \
--conf spark.shuffle.service.enabled=true \
--conf spark.dynamicAllocation.enabled=true \ 
--conf spark.dynamicAllocation.maxExecutors=90 \
--executor-cores 4 \
--executor-memory 4G

1、Spark动态资源调整
2、Spark Dynamic Allocation动态资源分配使用方法

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spark分配资源优化是通过调节各种参数来提升Spark作业的执行性能。在动态资源分配方面,可以根据任务的复杂程度和性能需求来选择使用动态资源分配还是静态资源分配。根据引用\[2\]的阶段性总结,动态资源分配在简单任务性能与静态资源分配差不多,在复杂任务中性能提升较多。这可能是由于常驻的外部shuffle服务带来的性能提升。然而,在实际应用中,如果executor内存都分配得较大,总资源一定的情况下,任务的并行度较小,任务执行会更慢。为了提升任务并行度,可以增加spark.sql.shuffle.partition参数,但是根据引用\[2\]的观察,并没有明显的性能提升。因此,在优化Spark资源分配时,需要综合考虑任务的复杂度、性能需求以及资源的分配情况。同时,还需要注意可能的约束,比如流式采集使用DC时,是否可用动态分配,以及算法引擎的资源管控可能会失效等。总之,通过调节Spark资源参数,可以优化资源的使用效率,提升Spark作业的执行性能。 #### 引用[.reference_title] - *1* *2* [利用动态资源分配优化Spark应用资源利用率](https://blog.csdn.net/xingyuan8/article/details/104652128)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [spark资源分配优化](https://blog.csdn.net/amazon2006/article/details/84803665)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

手撕机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值