我正在一个YARN集群(HDP 2.4)中使用Spark,具体设置如下:
- 1个主节点
- 64 GB RAM(可用50 GB)
- 24个核心(可用19个核心)
- 5个从节点
- 每个节点64 GB RAM(可用50 GB)
- 每个节点24个核心(可用19个核心)
- YARN设置
- 所有容器的内存(一个主机):50 GB
- 最小容器大小=2 GB
- 最大容器大小=50 GB
- vcores = 19
- 每个容器的最小vcores = 1
- 每个容器的最大vcores = 19
spark-submit --num-executors 30 --executor-cores 3 --executor-memory 7g --driver-cores 1 --driver-memory 1800m ...
运行我的Spark应用程序时,YARN会创建31个容器(每个执行器进程和一个驱动程序进程),具体设置如下:
- 正确:主容器具有1个核心和约1800 MB RAM
- 正确:30个从容器,每个容器约7 GB RAM
- 但是不正确:每个从容器仅使用1个核心,而不是3个,根据YARN ResourceManager UI(它只显示使用了31个容器,而不是91个= 30 * 3 + 1),请参见下面的屏幕截图
我的问题是:为什么spark-submit
参数--executor-cores 3
没有效果?