小编Nod*_*ame的帖子

Spark如何在多核或超线程机器上的一个任务中实现并行性

我一直在阅读并试图了解Spark框架如何在独立模式下使用其核心.根据Spark文档,参数" spark.task.cpus "的值默认设置为1,这意味着为每个任务分配的核心数.

问题1: 对于多核机器(例如,总共4个核心,8个硬件线程),当"spark.task.cpus = 4"时,Spark将使用4个核心(每个核心1个线程)或2个核心超级核心线?

如果我将"spark.task.cpus = 16"设置为超过此机器上可用硬件线程的数量,会发生什么?

问题2: 这种硬件并行性是如何实现的?我试图查看代码,但找不到任何与硬件或JVM通信的内核级并行性.例如,如果任务是"过滤器"功能,那么单个过滤器任务如何分配到多个核心或线程?

也许我错过了什么.这与Scala语言有关吗?

parallel-processing multithreading multicore apache-spark

9
推荐指数
1
解决办法
9333
查看次数