apache-spark - 使用 spark submit 在 Spark Cluster 上提交应用程序
问题描述
我是 Spark 的新手。我想在集群上运行 Spark Structured Streaming 应用程序。Master 和 Workers 具有相同的配置。
我对使用 spark-submit 在集群上提交应用程序的查询很少:您可能会发现它们很滑稽或奇怪。
- 如何为 lib/* 等 3rd 方 jar 提供路径?(应用程序有 30 多个罐子)
- Spark 会自动将应用程序和所需的 jar 分发给工作人员吗?
- 是否需要在所有工作人员上托管应用程序?
- 我在控制台上工作时如何知道我的应用程序的状态。
我正在使用以下脚本进行 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>
但是代码没有按预期运行。我错过了什么吗?
解决方案
要将多个 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 命令行选项或在您的默认属性文件中进行设置。