【问题标题】:setting tuning parameters of a spark job设置 spark 作业的调整参数
【发布时间】:2019-07-15 05:41:29
【问题描述】:

我对 spark 比较陌生,我有一些与 spark 提交命令相关的优化问题。

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

而且我了解如何最大限度地利用我的 spark 集群中的资源。

但是,最近有人问我,当我有一个相对较小的操作要做时,如何定义内核、内存和内核的数量,就好像我给了最大的资源一样,它会被充分利用。

例如,

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

如果没有连接、聚合等,我无法理解整个作业将使用多少内存的概念。

【问题讨论】:

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


    【解决方案1】:

    您需要的内存量取决于您在写操作之前运行的内容。如果您所做的只是读取数据并将其组合并写出,那么每个 cpu 将需要很少的内存,因为数据集在写出之前永远不会完全物化。如果您正在执行连接/分组/其他聚合操作,所有这些操作都将需要大量矿石内存。此规则的例外是 spark 并没有真正针对大文件进行调整,并且在处理大小合理的文件集时通常性能更高。最终,获得答案的最佳方法是使用默认参数运行您的作业,看看会发生什么。

    【讨论】:

      猜你喜欢
      • 2018-10-15
      • 1970-01-01
      • 1970-01-01
      • 2016-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-07
      相关资源
      最近更新 更多