【问题标题】:Number of executors and executor memory to process 100gb file in spark在 spark 中处理 100gb 文件的执行器数量和执行器内存
【发布时间】:2021-10-25 05:19:15
【问题描述】:

我在 HDFS 中有一个 100gb 的 csv 文件。集群大小为 10 个节点、15 个内核(在一个节点中)和 64gb RAM(在一个节点中)。我找不到根据文件大小配置执行器数量和执行器内存的文章。有人可以根据集群大小和输入文件大小帮助找到这些参数的最佳值吗

【问题讨论】:

  • 如果您将文件转换为 Parquet 或 ORC,它可能会缩小一半,如果不是更小的话
  • 是的,将其转换为 orc 或 parquet 文件是不错的选择

标签: apache-spark hdfs


【解决方案1】:

文件输入大小和 Spark 集群配置之间没有直接的关联。一般来说,良好的分布式配置(例如:每个执行程序的核心数为 5,并以最佳方式计算其余部分)在大多数情况下都非常有效。

在文件方面:确保它是可拆分的。 (CSV 仅可拆分为原始格式和少数其他格式)。如果它是可拆分的并且在 HDFS 上,那么根据 HDFS 的块大小,您将拥有分区数。

例如:如果块大小为 128MB,则 100GB 的可能分区数:800 个分区。 (这是近似值,实际公式很复杂)

在您的情况下,核心数:14 * 10 = 140,因此您的文件中只有 140 个部分将被并行处理 因此,您拥有的内核数量越高,您将获得更多的并行度。

【讨论】:

  • 感谢您的回答,您能否帮助我了解在哪种情况下我们需要继续增加执行程序内存?
  • 根据我的经验,只有当我必须以 GB 为单位广播变量时​​,我才需要一个胖执行器 (40GB+)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-18
  • 2019-11-07
相关资源
最近更新 更多