首页 > 解决方案 > 使用 spark submit 在 Spark Cluster 上提交应用程序

问题描述

我是 Spark 的新手。我想在集群上运行 Spark Structured Streaming 应用程序。Master 和 Workers 具有相同的配置。

我对使用 spark-submit 在集群上提交应用程序的查询很少:您可能会发现它们很滑稽或奇怪。

  1. 如何为 lib/* 等 3rd 方 jar 提供路径?(应用程序有 30 多个罐子)
  2. Spark 会自动将应用程序和所需的 jar 分发给工作人员吗?
  3. 是否需要在所有工作人员上托管应用程序?
  4. 我在控制台上工作时如何知道我的应用程序的状态。

我正在使用以下脚本进行 Spark 提交。

   spark-submit 
  --class <class-name> 
  --master spark://master:7077 
  --deploy-mode cluster 
  --supervise 
  --conf spark.driver.extraClassPath <jar1, jar2..jarn> 
  --executor-memory 4G 
  --total-executor-cores 8 
 <running-jar-file>

但是代码没有按预期运行。我错过了什么吗?

标签: apache-sparkspark-structured-streaming

解决方案


要将多个 jar 文件传递​​给 Spark-submit,您可以在文件中设置以下属性SPARK_HOME_PATH/conf/spark-defaults.conf(如果不存在则创建):

不要忘记在路径末尾使用 *

spark.driver.extraClassPath /fullpath/to/jar/folder/*
spark.executor.extraClassPath /fullpathto/jar/folder/*

spark-defaults.conf当您使用 spark-submit 命令时,Spark 将在文件中设置属性。将您的 jar 文件复制到该目录,当您在集群上提交 Spark 应用程序时,指定路径中的 jar 文件也将被加载。

spark.driver.extraClassPath:附加到驱动程序类路径的额外类路径条目。注意:在客户端模式下,这个配置不能直接在你的应用程序中通过 SparkConf 设置,因为此时驱动程序 JVM 已经启动。相反,请通过 --driver-class-path 命令行选项或在您的默认属性文件中进行设置。


推荐阅读