gpt4 book ai didi

apache-spark - 在 YARN 上以集群模式运行 Spark 应用程序时不使用 SparkConf 设置

转载 作者:行者123 更新时间:2023-12-04 04:13:48 25 4
gpt4 key购买 nike

我写了一个 Spark 应用程序,它通过 SparkConf 设置了一些配置内容。例如,像这样:

SparkConf conf = new SparkConf().setAppName("Test App Name");

conf.set("spark.driver.cores", "1");
conf.set("spark.driver.memory", "1800m");

conf.set("spark.yarn.am.cores", "1");
conf.set("spark.yarn.am.memory", "1800m");

conf.set("spark.executor.instances", "30");
conf.set("spark.executor.cores", "3");
conf.set("spark.executor.memory", "2048m");

JavaSparkContext sc = new JavaSparkContext(conf);

JavaRDD<String> inputRDD = sc.textFile(...);
...

当我使用命令 ( master=yarn & deploy-mode=client ) 运行此应用程序时
spark-submit --class spark.MyApp --master yarn --deploy-mode client /home/myuser/application.jar

一切似乎都正常,Spark History UI 显示正确的执行程序信息:
enter image description here

但是当用 ( master=yarn & deploy-mode=cluster ) 运行它时

我的 Spark UI 显示错误的执行程序信息(~512 MB 而不是 ~1400 MB):
enter image description here

我的应用程序名称也等于 Test App Name在客户端模式下运行时,但为 spark.MyApp在集群模式下运行时。然而,似乎在集群模式下运行时采用了一些默认设置。我在这里做错了什么?如何为集群模式进行这些设置?

我在由 YARN 管理的 HDP 2.5 集群上使用 Spark 1.6.2。

最佳答案

好的,我想我发现了问题!简而言之:在 中运行 Spark 设置之间存在差异独立 并在 YARN 管理 模式!

因此,当您在 中运行 Spark 应用程序时单机模式 ,可以关注Spark的Configuration文档,见http://spark.apache.org/docs/1.6.2/configuration.html

您可以对 Driver & Executor CPU/RAM 使用以下设置(如文档中所述):

  • spark.executor.cores
  • spark.executor.memory
  • spark.driver.cores
  • spark.driver.memory


  • 但是:在 中运行 Spark 时YARN 管理的 Hadoop 环境 ,您必须小心以下设置并考虑以下几点:
  • 定位“ yarn 上的 Spark ”文档,而不是上面链接的配置文档:http://spark.apache.org/docs/1.6.2/running-on-yarn.html (这里解释的属性比配置文档中解释的属性具有更高的优先级(这似乎只描述了独立集群与客户端模式,而不是 YARN 集群与客户端模式!))
  • 您不能使用 SparkConf在 yarn 簇模式下设置属性!而是使用相应的 spark-submit参数:
  • --executor-cores 5
  • --executor-memory 5g
  • --driver-cores 3
  • --driver-memory 3g
  • 在 yarn 客户端模式下,您不能使用 spark.driver.coresspark.driver.memory特性!您必须在 SparkConf 中使用相应的 AM 属性。实例:
  • spark.yarn.am.cores
  • spark.yarn.am.memory
  • 您无法通过 spark-submit 设置这些 AM 属性参数!
  • 要在 yarn 客户端模式下设置执行程序资源,您可以使用
  • spark.executor.coresspark.executor.memorySparkConf
  • --executor-coresexecutor-memory spark-submit 中的参数
  • 如果同时设置,SparkConf设置覆盖 spark-submit参数值!


  • 这是我笔记的文本形式:

    enter image description here

    希望我能帮助其他人解决这个问题......

    关于apache-spark - 在 YARN 上以集群模式运行 Spark 应用程序时不使用 SparkConf 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43784747/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com