【问题标题】:CPU cores configuration in Spark does not workSpark 中的 CPU 内核配置不起作用
【发布时间】:2016-02-20 17:05:25
【问题描述】:

我试图按照教程设置 Spark 独立模式 http://spark.apache.org/docs/latest/spark-standalone.html.

教程说我们可以将“-c CORES”传递给worker来设置允许的CPU内核总数。根据我对本教程的理解,我尝试通过以下方式启动集群,仅使用我的工作机器的 40 个内核中的 16 个内核:

${SPARK_HOME}/sbin/start-all.sh -c 16

然后我使用 spark-submit 运行了一项工作,并查看了 master:8080 的 webUI。但是,它表明它仍然使用全部 40 个内核而不是 16 个内核。我在 ${SPARK_HOME}/sbin 中阅读了 start-master.sh 和 start-slave.sh,但我认为它们实际上并没有解析参数。

所以我目前可以限制应用程序核心数量的唯一方法是在 ${SPARK_HOME}/conf/spark_env.sh 中设置 SPARK_WORKER_CORES

我想知道如何使用教程中讨论的 -c 参数。

【问题讨论】:

    标签: apache-spark


    【解决方案1】:

    我提交的问题 (issues.apache.org/jira/browse/SPARK-11841) 已得到答复。 -c、-m 和 -d 只能传递给 start-slave.sh。而且您只能在您想用作工作人员的机器上运行这些脚本。 用法是:

    start-slave.sh [选项]

    例如,要启动一个 16 核的 slave,我们可以使用:

    start-slave.sh spark://master_ip:7077 -c 16

    【讨论】:

      【解决方案2】:

      该参数 - 正如您在脚本中看到的那样 - 不支持 AFAIK。正确的做法是结合使用

      spark-defaults.conf, 
      spark-env.sh
      command line settings e.g.  --executor_cores
      

      表示用于给定任务的核心数。

      【讨论】:

      • 我认为这是一个错误,并已在 spark jira 网站issues.apache.org/jira/browse/SPARK-11841 上发布了一张票。这是我发布问题的正确网站吗?
      • 那是正确的地方。但我从未见过-c 的任何文档。仅适用于 --executor_cores
      • 地址为spark.apache.org/docs/latest/spark-standalone.html。标题“集群启动脚本”上方有一个表格。实际上-h、-i、-p、--webui-port 和--properties-file 是支持的,但只有start-master.sh 支持。其余的 - -c、-m 和 -d - 不是。而且我认为 spark.executor.cores 是设置每个工作节点的执行器数量而不是每个工作节点的核心数。
      • 您正在考虑 --num-executors。我已经使用了 --executor-cores 并且按照上面的说明做了。
      • 独立模式下的“spark.executor.cores”似乎意味着根据spark.apache.org/docs/latest/configuration.html,每台工作机器的执行器数量,它表示“每个执行器上使用的核心数。对于YARN和仅限独立模式。在独立模式下,设置此参数允许应用程序在同一个工作人员上运行多个执行程序,前提是该工作程序上有足够的核心。否则,每个应用程序只能在每个工作人员上运行一个执行程序。"
      猜你喜欢
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-27
      • 2017-08-30
      • 2017-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多