【问题标题】:How the Number of partitions and Number of concurrent tasks in spark calculatedspark中分区数和并发任务数是如何计算的
【发布时间】:2017-03-22 17:56:02
【问题描述】:

我有一个使用 Spark 1.0.1 的包含 4 个节点(每个节点有 16 个核心)的集群。

我有一个已重新分区的 RDD,因此它有 200 个分区(希望增加并行度)。

当我对此 RDD 进行转换(例如过滤器)时,我似乎无法同时处理超过 64 个任务(我跨 4 个节点的内核总数)。任务是指在应用程序 Spark UI 下显示的任务数。我尝试将 spark.default.parallelism 显式设置为 128(希望我能同时运行 128 个任务),并在正在运行的应用程序的应用程序 UI 中验证了这一点,但这没有任何效果。也许,对于“过滤器”,这将被忽略,默认值是可用内核的总数。

我对 Spark 还很陌生,所以我可能只是缺少或误解了一些基本的东西。任何帮助将不胜感激。

【问题讨论】:

    标签: apache-spark


    【解决方案1】:

    这是正确的行为。每个“核心”一次只能执行一个任务,每个任务对应一个分区。如果您的集群只有 64 个核心,则一次最多只能运行 64 个任务。

    您可以在每个节点上运行多个工作程序以获取更多执行程序。这将为您在集群中提供更多核心。但是,无论您拥有多少核心,每个核心一次只能运行一项任务。

    您可以在以下线程中查看更多详细信息 How does Spark paralellize slices to tasks/executors/workers?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      • 1970-01-01
      • 2018-01-29
      • 1970-01-01
      • 2016-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多