使用spark提交在Spark Cluster上提交应用程序

时间:2018-12-07 16:41:51

标签: apache-spark spark-structured-streaming

我是Spark的新手。 我想在集群上运行Spark结构化流应用程序。 主人和工人的配置相同。

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

  1. 如何为lib / *之类的第三方聚会提供路径? (应用程序有30多个jar)
  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>

但是代码未按预期运行。 我想念什么吗?

3 个答案:

答案 0 :(得分:1)

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

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

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

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

  

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

答案 1 :(得分:0)

--jars会将您的jar文件传输到工作节点,并在驱动程序和执行者的类路径中可用。

请参阅下面的链接以查看更多详细信息。

http://spark.apache.org/docs/latest/submitting-applications.html#advanced-dependency-management

答案 2 :(得分:-1)

您可以制作一个包含所有依赖项的胖子。下面的链接可帮助您了解这一点。

https://community.hortonworks.com/articles/43886/creating-fat-jars-for-spark-kafka-streaming-using.html