gpt4 book ai didi

apache-spark - 如何在Spark-Submit中使用--num-executors选项?

转载 作者:行者123 更新时间:2023-12-04 04:00:04 26 4
gpt4 key购买 nike

我正在尝试通过spark-submit提交应用程序时覆盖spark属性,例如num-executors,如下所示:

spark-submit --class WC.WordCount \
--num-executors 8 \
--executor-cores 5 \
--executor-memory 3584M \
...../<myjar>.jar \
/public/blahblahblah /user/blahblah

但是,它以默认的执行程序数2运行。但是如果添加,我可以覆盖属性
--master yarn

有人可以解释为什么会这样吗?有趣的是,在我的应用程序代码中,我将master设置为yarn-client:
val conf = new SparkConf()
.setAppName("wordcount")
.setMaster("yarn-client")
.set("spark.ui.port","56487")

val sc = new SparkContext(conf)

有人可以就选项 --master的工作原理发表一些看法吗

最佳答案

I am trying to override spark properties such as num-executors while submitting the application by spark-submit as below



它将 而不是起作用(除非您覆盖 spark.master文件或类似文件中的 conf/spark-defaults.conf,所以不必在命令行上明确指定它)。

原因是默认的Spark主站是 local[*],执行程序的数量恰好是一个,即驱动程序。那只是本地部署环境。参见 Master URLs

实际上, num-executors非常依赖于YARN,如您在帮助中所看到的:
$ ./bin/spark-submit --help
...
YARN-only:
--num-executors NUM Number of executors to launch (Default: 2).
If dynamic allocation is enabled, the initial number of
executors will be at least NUM.

这就解释了为什么当您切换到YARN时它起作用了。它应该与YARN一起使用(无论部署模式如何,即客户端或群集仅与驱动程序无关,而与执行者无关)。

您可能想知道为什么它不能与您的代码中定义的母版一起使用。原因是为时已晚,因为当您使用spark-submit启动应用程序时,已经在启动时分配了主服务器。这就是为什么您不应在代码中将部署环境特定的属性指定为以下原因的原因:
  • 可能并不总是有效(请参阅与主服务器有关的情况)
  • 它要求每次配置更改时都必须重新编译代码(并使其变得有些笨拙)

  • 这就是为什么您应该始终使用 spark-submit提交您的Spark应用程序的原因(除非您有理由不这样做,但是您会知道原因并可以轻松地对其进行解释)。

    关于apache-spark - 如何在Spark-Submit中使用--num-executors选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46842441/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com