在 spark 中处理 100gb 文件的执行者数量和执行者内存
Number of executors and executor memory to process 100gb file in spark
我在 HDFS.and 大小为 10 个节点、15 个内核(在一个节点中)和 64gb RAM(在一个节点中)的集群中有一个 100gb 的 csv 文件。我找不到根据文件大小配置执行器数量和执行器内存的文章。有人可以根据簇大小和输入文件大小帮助找到这些参数的最佳值
文件输入大小和 spark 集群配置之间没有直接的相互关系。通常,良好的分布式配置(例如:将每个执行程序的内核数设为 5,并优化计算其余部分)在大多数情况下都非常有效。
在文件方面:确保它是可拆分的。 (CSV 只能拆分为原始格式和少数其他格式)。如果它是可拆分的并且在 HDFS 上,那么根据 HDFS 的块大小,您将拥有分区数。
例如:如果块大小为 128MB,则 100GB 的可能分区数为:800 个分区。 (这是近似值,实际公式很复杂)
在你的例子中,核心数:14 * 10 = 140,所以你的文件只有 140 个部分会被并行处理
因此,您拥有的核心数越高,您将获得更多的并行性。
我在 HDFS.and 大小为 10 个节点、15 个内核(在一个节点中)和 64gb RAM(在一个节点中)的集群中有一个 100gb 的 csv 文件。我找不到根据文件大小配置执行器数量和执行器内存的文章。有人可以根据簇大小和输入文件大小帮助找到这些参数的最佳值
文件输入大小和 spark 集群配置之间没有直接的相互关系。通常,良好的分布式配置(例如:将每个执行程序的内核数设为 5,并优化计算其余部分)在大多数情况下都非常有效。
在文件方面:确保它是可拆分的。 (CSV 只能拆分为原始格式和少数其他格式)。如果它是可拆分的并且在 HDFS 上,那么根据 HDFS 的块大小,您将拥有分区数。
例如:如果块大小为 128MB,则 100GB 的可能分区数为:800 个分区。 (这是近似值,实际公式很复杂)
在你的例子中,核心数:14 * 10 = 140,所以你的文件只有 140 个部分会被并行处理 因此,您拥有的核心数越高,您将获得更多的并行性。