spark.task.cpus和--executor-cores之间有什么区别

时间:2016-05-31 11:54:45

标签: multithreading apache-spark

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

1 个答案:

答案 0 :(得分:4)

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

执行者与任务之间存在细微差别,如here所述。

要知道每个核心可以运行多少个线程,请通过this发布。

根据链接:

创建SparkContext时,每个worker都会启动一个执行程序。这是一个单独的进程(JVM)。执行程序连接回驱动程序。现在驱动程序可以发送命令,如flatMap,map和reduceByKey,这些命令都是任务。

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