【问题标题】:What is the difference between spark.task.cpus and --executor-coresspark.task.cpus 和 --executor-cores 有什么区别
【发布时间】:2016-05-31 11:54:44
【问题描述】:

在我的 mapPartition 部分,有多线程工作要做,我使用线程池并希望并行运行一个任务。但是我无法区分这两个参数。 我想我可以将 --executor-cores 设置为 5,并在我的任务中运行 4 个线程。是这样吗?

【问题讨论】:

    标签: multithreading apache-spark


    【解决方案1】:

    spark.task.cpus 是为每个任务分配的核心数,--executor-cores 指定每个执行程序的核心数。

    正如here 解释的那样,执行程序和任务之间存在细微差别。

    要了解每个核心可以运行多少个线程,请查看this 帖子。

    根据链接:

    当您创建 SparkContext 时,每个工作人员都会启动一个执行程序。这是一个单独的进程 (JVM)。执行程序连接回您的驱动程序。现在驱动程序可以向它们发送命令,例如 flatMap、map 和 reduceByKey,这些命令就是任务。

    要了解您的 CPU 支持的每个核心运行的线程数 lscpu 并检查Thread(s) per core: 的值。

    【讨论】:

    • 我设置了 spark.task.cpus--executor-cores--num-executors 和我希望获得 --executor-cores * --num-executors 个核心。但是集群信息显示我错了。
    • 您如何获取集群信息?您是否对 SPARK_WORKER_CORES 和 SPARK_EXECUTOR_CORES 感到困惑?
    • spark.task.cpus 的 cli 参数是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    • 2015-07-13
    • 2023-03-16
    • 2011-12-07
    • 2010-10-02
    相关资源
    最近更新 更多