代码之家  ›  专栏  ›  技术社区  ›  Him

Spark如何确定从节点同时线程的数量?

  •  1
  • Him  · 技术社区  · 8 年前

    在我看来,这两个相关参数是 spark.default.parallelism spark.cores.max .

    火花违约相似 设置内存中数据的分区数,以及 火花核心。最大值 设置可用CPU内核数。然而,在传统的并行计算中,我会专门启动一些线程。

    Spark是否会在每个分区上启动一个线程,而不管可用的核心数是多少?如果有100万个分区,Spark会将线程数限制在可用内核数的合理倍数吗?

    如何确定线程数?

    1 回复  |  直到 8 年前
        1
  •  1
  •   zero323 little_kid_pea    8 年前

    在我看来,这两个相关参数是 spark.default.parallelism spark.cores.max .

    这些几乎完全无关。

    每个辅助线程上的数据处理线程数主要取决于三个因素:

    • 特定工作者播发的内核(线程)数。

      这是当时使用的最大线程数,不包括用于次要目的的线程。确定人: CORES ( 广告 并行化功能),以及其他集群管理器中的等效属性。

    • 在此工作进程上分配给执行者的内核数。

      这是活动应用程序实际可以使用的最大线程数(小于或等于第一个线程数)。

    • 分配给此特定工作线程的执行器上计划的活动任务数。

      这是当时使用的实际线程数。小于或等于上一个数字。

    这假设应用程序是诚实的,并且只使用分配的内核,并且任务不尝试启动线程,这些线程没有被请求 spark.task.cpus .