不管我怎么摆弄房间里的设置 yarn-site.xml
i、 e使用以下所有选项
yarn.scheduler.minimum-allocation-vcores
yarn.nodemanager.resource.memory-mb
yarn.nodemanager.resource.cpu-vcores
yarn.scheduler.maximum-allocation-mb
yarn.scheduler.maximum-allocation-vcores
我只是仍然不能得到我的应用程序,即Spark利用集群上的所有核心。spark执行器似乎正确地占用了所有可用内存,但每个执行器只占用一个内核,不再占用。
以下是中配置的选项 spark-defaults.conf
```
spark.executor.cores 3
spark.executor.memory 5100m
spark.yarn.executor.memoryOverhead 800
spark.driver.memory 2g
spark.yarn.driver.memoryOverhead 400
spark.executor.instances 28
spark.reducer.maxMbInFlight 120
spark.shuffle.file.buffer.kb 200
注意 `spark.executor.cores` 设置为3,但不起作用。我该怎么解决这个问题?
2条答案
按热度按时间vwkv1x7d1#
问题不在于
yarn-site.xml
或者spark-defaults.conf
但实际上,使用资源计算器,将核心分配给执行器,或者在mapreduce作业的情况下,分配给mappers/reducer。默认资源计算器,即
org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator
仅使用内存信息分配容器,默认情况下不启用cpu调度。要同时使用内存和cpu,需要将资源计算器更改为org.apache.hadoop.yarn.util.resource.DominantResourceCalculator
在capacity-scheduler.xml
文件。这是需要改变的。
q43xntqr2#
我有类似的问题,从我的代码,我正在设置
spark.executor.cores as 5
. 即使它只是取1,这是默认的核心。在spark ui和environment选项卡中,我看到了5个内核。但在检查executors选项卡时,我只能看到1个进程在运行状态,而不是一个executor。我用的是spark版本1.6.3。所以我试着点击spark submit命令
--conf spark.executor.cores=5
使用5个核就可以了或者只是
--executor-cores 5
这同样有效。