如何为Spark应用程序分配--num-executors,--execuor-cores和--executor-memory

本文讨论了为Spark应用程序分配executor数量、核心和内存的最佳实践。考虑到Hadoop/Yarn守护进程、ApplicationMaster资源需求、HDFS吞吐量以及内存开销。分析了小、大、优化三种executor配置的优劣,建议每个executor分配5个核心,以平衡资源利用和性能。
摘要由CSDN通过智能技术生成

前言

在我们提交spark程序时,应该如何为Spark集群配置–num-executors, - executor-memory和–execuor-cores 呢?

一些资源参数设置的基本知识
  • Hadoop / Yarn / OS Deamons
    当我们使用像Yarn这样的集群管理器运行spark应用程序时,会有几个守护进程在后台运行,如NameNode,Secondary NameNode,DataNode,JobTracker和TaskTracker等。因此,在指定num-executors时,我们需要确保为这些守护进程留下足够的核心(至少每个节点约1 CPU核)以便顺利运行。
  • Yarn ApplicationMaster(AM)
    ApplicationMaster负责协调来自ResourceManager的资源,并与NodeManagers一起执行container并监控其资源消耗。如果我们在YARN上运行Spark,那么我们需要预估运行AM所需要的资源(至少1024MB和1 CPU核)。
  • HDFS吞吐量
    HDFS客户端遇到大量并发线程会出现一些bug。一般来说,每个executors最多可以实现5个任务的完全写入吞吐量,因此最好将每个executors的核心数保持在该数量之下。
  • MemoryOverhead
    JVM还需要一些off heap的内存,请参考下图中描绘的Spark和YARN中内存属性的层次结构,
test

简单来说,有以下两个公式:

每个executor从YARN请求的内存 = spark-executor-memory + spark.yarn.executor.memoryOverhead
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值