设置火花作业的调整参数

时间:2019-07-14 14:08:11

标签: apache-spark pyspark apache-spark-sql

我对Spark还是比较陌生,我有几个关于spark Submit命令的调优优化问题。

我关注了:How to tune spark executor number, cores and executor memory?

我了解如何利用Spark集群中的最大资源。

但是,最近有人问我如何定义内核,内存和内核的数量,当我要做相对较小的操作时,好像我会提供最大的资源一样,这将被利用不足。

例如

如果我只需要执行合并工作(从hdfs读取文件,然后使用合并将一个大文件写回到hdfs),大约需要60-70 GB(假设每个文件的大小为128 mb,这就是块大小) HDFS的数据(无压缩的avro格式),那么理想的内存是什么,不需要执行器和内核? 假设我的节点配置与上面链接中提到的相同。

如果不存在联接,聚合等操作,我将无法理解整个作业将消耗多少内存的概念。

1 个答案:

答案 0 :(得分:0)

所需的内存量取决于在写操作之前运行的内存。如果您要做的只是读取数据并将其组合并写入,那么每个cpu所需的内存将非常少,因为在写入之前数据集永远不会完全实现。如果您正在执行联接/分组/其他聚合操作,那么所有这些操作都将需要大量的矿石内存。该规则的例外是,火花实际上并未针对大型文件进行调整,通常在处理大小合理的文件集时性能更高。最终,获得答案的最佳方法是使用默认参数运行您的工作,然后看看会发生什么。