Spark On YARN部署模式下的内存分配情况
2017-08-02 11:30
323 查看
本文主要了解Spark On YARN部署模式下的内存分配情况,因为没有深入研究Spark的源代码,所以只能根据日志去看相关的源代码,从而了解“为什么会这样,为什么会那样”。
按照Spark应用程序中的driver分布方式不同,Spark on YARN有两种模式:
当在YARN上运行Spark作业,每个Spark executor作为一个YARN容器运行。Spark可以使得多个Tasks在同一个容器里面运行。
关于Spark On YARN相关的配置参数,请参考Spark配置参数。本文主要讨论内存分配情况,所以只需要关注以下几个内心相关的参数:
注意:
的堆的大小,但是 JVM 本身也会占用一定的堆空间,比如内部的 String 或者直接 byte buffer,
YARN 请求的每个 executor 或dirver或am 的额外堆内存大小,默认值为
在 executor 执行的时候配置过大的 memory 经常会导致过长的GC延时,64G是推荐的一个 executor 内存大小的上限。
HDFS client 在大量并发线程时存在性能问题。大概的估计是每个 executor 中最多5个并行的 task 就可以占满写入带宽。
另外,因为任务是提交到YARN上运行的,所以YARN中有几个关键参数,参考YARN的内存和CPU配置:
说明
按照Spark应用程序中的driver分布方式不同,Spark on YARN有两种模式: yarn-client模式、
yarn-cluster模式。
当在YARN上运行Spark作业,每个Spark executor作为一个YARN容器运行。Spark可以使得多个Tasks在同一个容器里面运行。
关于Spark On YARN相关的配置参数,请参考Spark配置参数。本文主要讨论内存分配情况,所以只需要关注以下几个内心相关的参数:
spark.driver.memory:默认值512m
spark.executor.memory:默认值512m
spark.yarn.am.memory:默认值512m
spark.yarn.executor.memoryOverhead:值为
executorMemory * 0.07, with minimum of 384
spark.yarn.driver.memoryOverhead:值为
driverMemory * 0.07, with minimum of 384
spark.yarn.am.memoryOverhead:值为
AM memory * 0.07, with minimum of 384
注意:
--executor-memory/spark.executor.memory控制 executor
的堆的大小,但是 JVM 本身也会占用一定的堆空间,比如内部的 String 或者直接 byte buffer,
spark.yarn.XXX.memoryOverhead属性决定向
YARN 请求的每个 executor 或dirver或am 的额外堆内存大小,默认值为
max(384, 0.07 * spark.executor.memory)
在 executor 执行的时候配置过大的 memory 经常会导致过长的GC延时,64G是推荐的一个 executor 内存大小的上限。
HDFS client 在大量并发线程时存在性能问题。大概的估计是每个 executor 中最多5个并行的 task 就可以占满写入带宽。
另外,因为任务是提交到YARN上运行的,所以YARN中有几个关键参数,参考YARN的内存和CPU配置:
yarn.app.mapreduce.am.resource.mb:AM能够申请的最大内存,默认值为1536MB
yarn.nodemanager.resource.memory-mb:nodemanager能够申请的最大内存,默认值为8192MB
yarn.scheduler.minimum-allocation-mb:调度时一个container能够申请的最小资源,默认值为1024MB
yarn.scheduler.maximum-allocation-mb:调度时一个container能够申请的最大资源,默认值为8192MB
相关文章推荐
- Spark On YARN内存和CPU分配
- Spark On YARN内存和CPU分配
- Spark1.0.0 on YARN 模式部署
- Spark1.0.0 on YARN 模式部署
- Spark on yarn的内存分配问题
- spark on yarn模式里需要有时手工释放linux内存
- Spark on yarn的内存分配问题
- Spark on yarn的内存分配问题
- Spark on YARN两种运行模式
- Spark2.0.1 on yarn with hue 集群安装部署(六)hue+hive+sparksql
- Spark1.0.0 on Standalone 模式部署
- spark集群安装部署(spark on yarn)
- Spark on YARN两种运行模式介绍
- spark on yarn 集群部署
- Spark on Yarn Client和Cluster模式详解
- spark standalone模式作业迁移到spark on yarn
- Spark 1.0.0 横空出世 Spark on Yarn 部署(Hadoop 2.4)
- Spark2.0.1 on yarn with hue 集群搭建部署(二)spark on yarn搭建
- Spark on Yarn: Cluster模式Scheduler实现
- Spark On YARN 集群安装部署