yarn 内存计算

Spark的Excutor的Container内存有两大部分组成: 堆外内存和Excutor内存

  •   堆外内存(spark.yarn.executor.memoryOverhead)

      主要用于JVM自身的开销。 默认: MAX(executorMemory * 0.10, 384m)

 Excutor内存(spark.executor.memory)

  •  Execution: shuffle、 排序、 聚合等用于计算的内存
  •  Storage: 用于集群中缓冲和传播内部数据的内存(cache、 广播变量)

堆外内存: 除了前面介绍的Executor的堆外内存, Driver、 Application Master进程也有堆外内存。

Driver的堆外内存设置

  • spark.driver.memoryOverhead

     默认: MAX(Driver memory * 0.10, 384m)
Application Master的堆外内存设置

  • spark.yarn.am.memoryOverhead

默认: MAX(AM memory * 0.10, 384m)
Application Master的内存也是--conf参数设置。
 

spark-shell --master yarn \
--master yarn-client \
--num-executors 4 \
--driver-memory 10g \
--executor-memory 3g \
--executor-cores 6 \
--conf spark.yarn.executor.memoryOverhead=1024m \
--conf spark.yarn.am.memory=1000m \
--conf spark.yarn.am.memoryOverhead=600m

从Yarn的管理页面, 分配了5个Container, 25个Cpu Core, 18432M内存
 

  • 占用的CPU Core数

Excutor的Core数 = 4 * 6个core = 24个
AM的Core数默认为1
占用的CPU Core数: Excutor的Core数 + AM的Core数 = 4 * 5 + 1 = 25个。

  • 占用的Container数

4个Excutor 进程 + 1个Applicatoin Master进程 = 5个Container

  •  占用的资源情况:

1. Excutor的Container内存: 堆外内存 + Excutor内存。
(1) 堆外内存 = 4 * 1024 = 4048M
(2) Excutor内存: 4 * 3 * 1024 = 12288M
Excutor的Container内存: 4096M+ 12288M = 16336M
2. AM(Application Master)的Container内存: 堆外内存 + AM内存
AM内存是1000M, 根据参数参数分配1024M。
堆外内存 = 1024M。
AM内存的Container内存: 1024M + 1024M = 2048M。
总的内存大小: Excutor的Container内存 + AM的Container内存 = 16336M+ 2048M= 18432M
注意: Driver的内存分配在Yarn的管理页面没有体现

 

1. Application Master, 是一个非Executor的容器, 它会从YARN申请Container运行。 因此, 在考虑spark的资源分
配的时候, 需要将Application Master所需要的内存和cpu core考虑在内。
在yarn client模式, spark版本为1.6, 默认是512M 和 一个vcore。
在yarn cluster模式, driver是运行在application上面, 因此可以设置--driver-memory 和--driver-cores属性强化AM
的资源。
2. 运行的一个executor内存过大通常会导致过多的垃圾回收延迟。 对于单个executor来说, 64GB是一个很好的上限。
3. 最好将executor的core数量保持在5个以下, 即 每个executor 最多可以指定五个任务, 以实现完全的写入吞吐量。
4. 每个executor的core数量太小, 比如一个executor只分配一个core和足够的内存, 这会导致申请非常多的executor。
这个将抛弃使用单个JVM运行多个任务带来的好处。 首先是JVM自身需要开销, 此外广播变量是在每个executor上复
制一次, 如果很多小的executor会导致更多的数据副本。
 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值