【问题标题】:spark : HDFS blocks vs Cluster cores vs rdd Partitionsspark:HDFS 块 vs 集群核心 vs rdd 分区
【发布时间】:2019-12-22 06:05:18
【问题描述】:

我确实对 spark 有疑问:HDFS 块 vs 集群核心 vs rdd 分区。

假设我正在尝试处理 HDFS 中的文件(例如块大小为 64 MB,文件为 6400 MB)。所以理想情况下它确实有 100 个拆分。

我的集群总共有 200 个核心,我提交的作业有 25 个执行器,每个执行器有 4 个核心(意味着可以运行 100 个并行任务)。

简而言之,我在 rdd 中默认有 100 个分区,并且将运行 100 个内核。

这是一个好方法,还是我应该将数据重新分区到 200 个分区并使用集群中的所有核心?

【问题讨论】:

  • 如果你重新分区,它会增加额外的开销并且需要更长的时间。最好不要使用重新分区。

标签: apache-spark apache-spark-sql


【解决方案1】:

由于您总共有 200 个内核,因此使用所有内核可以提高性能,具体取决于您运行的工作负载类型。

将您的 Spark 应用程序配置为使用 50 个执行程序(即 Spark 可以使用所有 200 个内核)。还将您的 spark 拆分大小从 64 MB 更改为 32 MB。这将确保 6400 MB 的文件将被划分为 200 个 RDD 分区,因此您的整个集群都可以被它使用。

不要使用重新分区——它会很慢,因为它涉及到随机播放。

【讨论】:

  • 感谢您的回复。它是一个共享集群,而我的只是它上面的一个应用程序。所以我无法为我的应用程序更改集群的拆分大小。如果我用 50 个执行者提交作业会发生什么,它会使用 200 个核心还是只使用 100 个(因为它确实只有 100 个拆分并且我没有进行重新分区)
  • 您不能更改应用程序的拆分大小吗?如果您不更改 splitSize,那么将执行程序从 25 更改为 50 没有意义,因为它们将只有 100 个任务。
猜你喜欢
  • 1970-01-01
  • 2016-10-02
  • 2014-06-27
  • 2019-08-04
  • 2012-03-23
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多