【问题标题】:Spark deploy-related properties in spark-submitespark-submit 中与 Spark 部署相关的属性
【发布时间】:2018-08-12 18:40:35
【问题描述】:

在创建基于 spark 的 java 应用程序时,SparkConf 是使用

创建的
sparkConf = new SparkConf().setAppName("SparkTests")
                           .setMaster("local[*]").set("spark.executor.memory", "2g")
                           .set("spark.driver.memory", "2g")
                           .set("spark.driver.maxResultSize", "2g");

但在文档here 中,它说

任何指定为标志或属性文件中的值都将传递给应用程序并与通过 SparkConf 指定的值合并。直接在 SparkConf 上设置的属性具有最高优先级,然后是传递给 spark-submit 或 spark-shell 的标志,然后是 spark-defaults.conf 文件中的选项。自早期版本的 Spark 以来,一些配置键已被重命名;在这种情况下,旧的键名仍然被接受,但优先级低于新键的任何实例。 Spark属性主要可以分为两种:一种是和deploy相关的,比如“spark.driver.memory”、“spark.executor.instances”,这种属性在运行时通过SparkConf编程设置可能不受影响,或者行为取决于您选择的集群管理器和部署模式,因此建议通过配置文件或 spark-submit 命令行选项进行设置;另一个主要和Spark运行时控制有关,比如“spark.task.maxFailures”,这种属性可以任意设置。

那么是否有这些部署相关属性的列表,我只能在 spark-submit 中作为命令行参数提供?

这里给出了local[*],但在运行时我们通过一个纱线集群进行部署。

【问题讨论】:

  • 你好@jashan 你是否设法让你的配置正常工作?

标签: java apache-spark


【解决方案1】:

我也不确定这句话是什么:

这类属性在运行时通过SparkConf编程设置可能不受影响,或者行为取决于你选择的集群管理器和部署模式,所以建议通过配置文件设置或 spark-submit 命令行选项;另一个主要和Spark有关

确切的意思。也许有人可以为我们说清楚。虽然我知道在 YARN 的情况下,优先级如下:

  1. 如果您使用

    从代码中设置设置
    SparkSession.builder()
    .config(sparkConf)
    .getOrCreate() 
    

    这将覆盖所有其他设置(命令行、defaults.conf)。这里唯一的例外是当您修改 初始化会话后设置(调用后 session.getOrCreate)。在这种情况下,它将被忽略 想象一下

  2. 如果您不修改代码中的设置,它将退回到 命令行设置(spark 会考虑那些 在命令行中指定,否则将从 defaults.conf 加载它们)

  3. 最后,如果以上都没有给出,它将从 defaults.conf

所以我的最终建议是随意从您的代码中设置诸如 “spark.driver.memory”、“spark.executor.instances” 之类的设置。

【讨论】:

    猜你喜欢
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    • 2014-10-03
    • 2020-05-20
    • 1970-01-01
    • 2017-01-14
    相关资源
    最近更新 更多