TL; DR
Spark UI显示的内核和内存数量与我在使用spark-submit
时的要求不同更多详情:
我在独立模式下运行Spark 1.6。 当我运行spark-submit时,我传递了1个执行程序实例,其中1个核心用于执行程序,还有1个核心用于驱动程序。 我期望发生的是我的应用程序将运行总共2个核心。 当我检查UI上的环境选项卡时,我看到它收到了我给它的正确参数,但它看起来仍然使用不同数量的核心。你可以在这里看到它:
这是我正在使用的spark-defaults.conf:
spark.executor.memory 5g
spark.executor.cores 1
spark.executor.instances 1
spark.driver.cores 1
检查Spark UI上的环境选项卡显示这些确实是收到的参数,但UI仍显示其他内容
有没有人知道什么可能导致Spark使用不同于我想要传递的内核数量的内核?我显然尝试使用谷歌搜索,但没有找到任何有用的主题
提前致谢
答案 0 :(得分:6)
TL; DR
使用spark.cores.max
来定义可用的核心总数,从而限制执行者的数量。
在独立模式中,使用贪心策略,并且会创建尽可能多的执行程序,因为您的工作人员可以使用核心和内存。
在您的情况下,您为每个执行程序指定了1个内核和5GB内存。 以下内容将由Spark计算:
Spark基本上满足了你的要求。为了实现您的目标,您可以使用spark.cores.max
记录here选项,并指定所需的确切核心数。
一些附注:
spark.executor.instances
是仅限YARN的配置spark.driver.memory
默认为1核我也在努力简化独立模式下执行程序数量的概念,这可能会集成到Spark的下一个版本中,并希望能够帮助确定您将拥有的执行程序的数量,而无需计算它在旅途中。