YARN 上的 Spark 使用的 vcore 太少
Posted
技术标签:
【中文标题】YARN 上的 Spark 使用的 vcore 太少【英文标题】:Spark on YARN too less vcores used 【发布时间】:2016-11-17 01:30:31 【问题描述】:我在具有以下设置的 YARN 集群 (HDP 2.4) 中使用 Spark:
1 个主节点 64 GB RAM(50 GB 可用) 24 核(19 核可用) 5 个从属节点 每个 64 GB RAM(50 GB 可用) 每个24核(19核可用) 纱线设置 所有容器(一台主机)的内存:50 GB 最小容器大小 = 2 GB 最大容器大小 = 50 GB vcores = 19 最少 #vcores/container = 1 最大#vcores/container = 19当我使用命令spark-submit --num-executors 30 --executor-cores 3 --executor-memory 7g --driver-cores 1 --driver-memory 1800m ...
YARN 运行我的 spark 应用程序时,YARN 会创建 31 个容器(每个执行器进程一个 + 一个驱动程序进程),并具有以下设置:
我的问题在这里:为什么spark-submit
参数--executor-cores 3
没有效果?
【问题讨论】:
【参考方案1】:好的,似乎与此处讨论的问题相同:yarn is not honouring yarn.nodemanager.resource.cpu-vcores 该解决方案也对我有用。
【讨论】:
【参考方案2】:使用 Ambari 时:
从右上角选择 YARN 队列管理器 调度器部分 将“计算器”下拉菜单更改为 =“主要资源”【讨论】:
【参考方案3】:用户界面可能具有误导性。当在 YARN 中禁用 vcore 强制时,它只会假设每个容器一个核心,而事实上,如果您查看物理机的实际 CPU 使用率,它可能正在使用所有核心。还要检查 SparkUI 上的核心使用情况,这通常可以更好地了解实际 CPU 使用情况。
【讨论】:
以上是关于YARN 上的 Spark 使用的 vcore 太少的主要内容,如果未能解决你的问题,请参考以下文章
Mesos 上的独立 Spark 集群访问不同 Hadoop 集群中的 HDFS 数据
为啥 Spark(在 Google Dataproc 上)不使用所有 vcore?