首页 > 解决方案 > spark:HDFS 块 vs 集群核心 vs rdd 分区

问题描述

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

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

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

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

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

标签: apache-sparkapache-spark-sql

解决方案


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

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

不要使用重新分区 - 因为它涉及洗牌,所以它会很慢。


推荐阅读