运行比内核数量更多的分区是否有意义?

2024-03-24

鉴于 Spark 任务数量不能高于核心数量,运行比核心数量更多的分区是否有意义?如果是这样,您能详细说明一下吗?


  • 正如您提到的,您需要至少 1 个任务/核心才能利用所有集群的资源。
  • 根据每个阶段/任务所需的处理类型,您可能会遇到处理/数据倾斜 - 这可以通过使分区更小/更多分区来缓解,这样您就可以更好地利用集群(例如,当执行程序运行更长的任务时,需要5 分钟内其他执行器能够运行 10 个 30 秒的较短任务)。
  • 在其他情况下,您可能希望增加分区数量(例如,如果您达到大小/内存限制)。

    查看这篇关于并行性调整的好文章:http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/ http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/

Update:这如何帮助处理/数据倾斜并为您提供更好的集群利用率和更快的作业执行(下面是 Spark UI 的示例屏幕截图,您可以在其中看到任务之间的倾斜 - 请参阅中值与最大任务持续时间的比较):

假设您有一个可以并行运行 2 个任务的集群。

  • 1 个任务(1 个空闲核心)处理数据需要 60 分钟 - 作业需要 60m。
  • 如果将其分成 2 个,您可能会发现由于倾斜:Task1:45m,Task-2:15m。作业需要 45m(对于 30m,你有 1 个空闲核心)。
  • 如果将其分成 4 个,您可能会得到:Task1:30m,Task-2:10m,Task-3:10m,Task-4:10m。作业需要 30m(第一个核心运行 1 个任务 30m,而另一个核心运行其他 3 个较小的任务,每个任务 10m)。 ETC。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

运行比内核数量更多的分区是否有意义? 的相关文章

随机推荐