spark 配置yarn_YARN上Spark的资源分配配置

spark 配置yarn

映射器数据平台 在此博客文章中,我将解释YARN上Spark的资源分配配置,描述yarn-client和yarn-cluster模式,并包括示例。

Spark可以在YARN中请求两个资源:CPU和内存。 请注意,用于资源分配的Spark配置在spark-defaults.conf中设置,名称类似于spark.xx.xx。 其中一些具有客户端工具(例如spark-submit / spark-shell / pyspark)的对应标志,名称类似于–xx-xx。 如果该配置具有客户端工具的相应标志,则需要将该标志放在括号“()”中。 例如:

spark.driver.cores 
(--driver-cores)

1.纱线客户端与纱线群集模式

有两种部署模式可用于在YARN上启动Spark应用程序:

Per Spark文档

  • yarn-client模式下,驱动程序在客户端进程中运行,而应用程序主控仅用于从YARN请求资源。
  • yarn-cluster模式下,Spark驱动程序在由YARN在群集上管理的应用程序主进程中运行,并且客户端可以在启动应用程序后消失。

2. Application Master(AM)

一个。 纱线客户

重新分配博客Img1

让我们以下面的设置为例:

[root@h1 conf]# cat spark-defaults.conf |grep am
spark.yarn.am.cores     4
spark.yarn.am.memory 777m

默认情况下,spark.yarn.am.memoryOverhead是AM内存* 0.07,最小为384。这意味着,如果将spark.yarn.am.memory设置为777M,则AM容器的实际大小为2G。 这是因为777 + Min(384,777 * 0.07)= 777 + 384 = 1161,并且默认值为yarn.scheduler.minimum-allocation-mb = 1024,因此会将2GB容器分配给AM。 结果,分配了一个Java堆大小为-Xmx777M的(2G,4核)AM容器:

分配的容器container_1432752481069_0129_01_000001的容量

<memory:2048, vCores:4, disks:0.0>
b。 纱线簇

在纱线群集模式下,Spark驱动程序位于YARN AM中。 下面列出的与驱动程序相关的配置还控制AM的资源分配。

重新分配博客Img2

以下面的设置为例:

MASTER=yarn-cluster /opt/mapr/spark/spark-1.3.1/bin/spark-submit --class org.apache.spark.examples.SparkPi  \
--driver-memory 1665m \
--driver-cores 2 \
/opt/mapr/spark/spark-1.3.1/lib/spark-examples*.jar 1000

由于1665 + Min(384,1665 * 0.07)= 1665 + 384 = 2049> 2048(2G),因此会将3G容器分配给AM。 结果,分配了一个Java堆大小为-Xmx1665M的(3G,2核)AM容器:

分配的容器container_1432752481069_0135_02_000001的容量:

<memory:3072, vCores:2, disks:0.0>

3. Spark执行者的容器

对于Spark执行程序资源,yarn-client和yarn-cluster模式使用相同的配置:

重新分配博客Img3

在spark-defaults.conf中,spark.executor.memory设置为2g。

Spark将启动Java堆大小为-Xmx2048M的2个(3G,1核)执行程序容器:分配的容器container_1432752481069_0140_01_000002的容量:

<memory:3072, vCores:1, disks:0.0>

分配的容器container_1432752481069_0140_01_000003的容量:

<memory:3072, vCores:1, disks:0.0>

但是,每个执行程序只有一个核心,这意味着一个执行程序在任何时候都只能运行一个任务。 在广播连接的情况下,如果我们增加每个执行器的内核数,则可以由同一执行器中的多个正在运行的任务共享内存。

请注意,如果通过将spark.dynamicAllocation.enabled设置为true启用了动态资源分配 ,则Spark可以根据工作负载来上下扩展在此应用程序中注册的执行程序的数量。 在这种情况下,您无需手动指定spark.executor.instances。

重要要点

  • 与Spark驱动程序资源相关的配置还可以在yarn-cluster模式下控制YARN应用程序主资源。
  • 计算执行程序的内存时,请注意最大(7%,384m)的堆外开销内存。
  • 每个执行程序的CPU核心数控制每个执行程序的并发任务数。

在此博客文章中,您了解了YARN上Spark的资源分配配置。 如果您还有其他问题,请在下面的评论部分中提问。

翻译自: https://www.javacodegeeks.com/2015/09/resource-allocation-configuration-for-spark-on-yarn.html

spark 配置yarn

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值