smz*_*smz 18 multithreading scala apache-spark
我不太了解spark.task.cpus参数.在我看来,"任务"对应于"线程"或"进程",如果您愿意,则在执行程序中.假设我将"spark.task.cpus"设置为2.
线程如何同时使用两个CPU?它不能需要锁定并导致同步问题吗?
我正在查看launchTask()deploy/executor/Executor.scala 中的函数,我在这里看不到任何"每个任务的cpus数"的概念.那么Spark最终在独立模式下如何/如何为一项任务分配多个cpu?
mar*_*ios 18
据我所知spark.task.cpus,在已知某些特定任务具有自己的内部(自定义)并行性的情况下,控制群集中任务的并行性.
更详细:
我们知道spark.cores.max定义应用程序需要多少个线程(也称为核心).如果您离开,spark.task.cpus = 1那么您将同时运行#spark.cores.max并发Spark任务数.
spark.task.cpus如果您知道自己的任务本身是并行化的(或许每个任务产生两个线程,与外部工具交互等)spark.task.cpus,您只需要更改.通过相应设置,您将成为一个好的"公民".现在如果你有spark.cores.max = 10和spark.task.cpus = 2 Spark只会创建10/2 = 5个并发任务.鉴于您的任务在内部需要(比方说)2个线程,执行线程的总数将永远不会超过10.这意味着您永远不会超过您的初始合同(由定义spark.cores.max).
| 归档时间: |
|
| 查看次数: |
7210 次 |
| 最近记录: |