
spark-submit脚本位于Spark的bin目录中. 您可以使用此脚本将Spark应用程序提交到集群. 该脚本为Spark支持的所有集群管理器()提供统一的界面,因此您基本上可以使用相同的配置和脚本将应用程序提交给不同类型的集群管理器.
如果您的代码依赖于其他项目,则需要打包依赖项并将其分发到Spark集群. 这需要创建一个包含您自己的代码及其依赖项的程序集jar包(或uber jar). sbtandMaven有一个程序集插件. 创建组装jar包时,请注意,Spark和Hadoop jar包都可以设置为经过验证. 这些jar包已经存在于Spark集群中,不需要打包. 完成jar包后,您可以使用bin / spark-submit提交您的jar包.
对于Python,您可以使用spark-submit的–py-files参数以.py,.zip或.egg文件格式将程序提交到集群. 如果您需要依赖许多Python文件spark程序入口,建议您使用.zip或.egg进行打包.
打包好应用程序后,您可以使用bin / spark-submit提交它. 该脚本将自动设置Spark及其相关的类路径,并且可以支持许多不同类型的集群管理器和不同的部署模式:
./bin/spark-submit \
--class <main-class>
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # 其他选项
<application-jar> \
[application-arguments]
一些常用的选项如下:
一种常见的部署策略是在网关计算机上提交您的应用程序,以便到工作节点的物理距离相对较近. 在这种情况下,客户端模式将更适合. 在客户端模式下,驱动程序直接在提交火花的过程中运行,并且驱动程序就像集群的客户端一样. 应用程序的输入和输出也绑定到控制台. 因此,此模式特别适合交互式执行(REPL),spark-shell是此模式.
当然,您也可以从远离工作节点的计算机(例如您的笔记本电脑)提交应用程序. 在这种情况下spark程序入口,通常应用群集模式以减少网络驱动器和执行器之间的网络通信延迟. 注意: 对于Mesos集群管理器,Spark尚不支持集群模式. 当前,只有YARN上的Python应用程序支持群集模式.
对于Python应用程序,只需将
一些参数专门用于设置集群管理器(). 例如,在独立群集(Spark独立群集)中,并使用群集模式,可以使用–supervise参数来确保驱动器在异常退出(退出并返回非零值)的情况下自动重启. spark-submit –帮助可以查看选项的完整列表. 以下是一些常见示例:
# 本地运行,占用8个core
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[8] \
/path/to/examples.jar \
100
# 独立部署,client模式
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://207.184.161.138:7077 \
--executor-memory 20G \
--total-executor-cores 100 \
/path/to/examples.jar \
1000
# 独立部署,cluster模式,异常退出时自动重启
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://207.184.161.138:7077 \
--deploy-mode cluster
--supervise
--executor-memory 20G \
--total-executor-cores 100 \
/path/to/examples.jar \
1000
# YARN上运行,cluster模式
export HADOOP_CONF_DIR=XXX
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \ # 要client模式就把这个设为client
--executor-memory 20G \
--num-executors 50 \
/path/to/examples.jar \
1000
# 独立部署,运行python
./bin/spark-submit \
--master spark://207.184.161.138:7077 \
examples/src/main/python/pi.py \
1000
# Mesos集群上运行,cluster模式,异常时自动重启
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master mesos://207.184.161.138:7077 \
--deploy-mode cluster
--supervise
--executor-memory 20G \
--total-executor-cores 100 \
http://path/to/examples.jar \
1000
传递给Spark的主URL可以采用以下格式:
主URL含义
本地

仅使用1个工作线程在本地运行Spark(无需并行计算)
本地[K]
在本地运行Spark并使用K个工作线程(理论上,最好将此值设置为计算机上的CPU内核数)
本地[*]
在本地运行Spark,使用工作线程数作为计算机上逻辑CPU核心数
火花: //主机: 端口
连接到指定的Spark独立群集. 该端口是可配置的,默认为7077.

mesos: //主机: 端口
连接到指定的Mesos群集. 可以配置端口号,默认为5050. 如果Mesos群集取决于ZooKeeper,则可以使用mesos: // zk: //…提交. 请注意,需要将–deploy-mode设置为cluster,同时将HOST: PORT指向.
连接到指定的YARN群集,使用–deploy-mode指定客户端模式或群集模式. YARN群集的位置需要通过$ HADOOP_CONF_DIR或$ YARN_CONF_DIR变量找到.
yarn-client
YARN客户模式的缩写等同于--master yarn --deploy-mode客户
纱簇
YARN群集模式的缩写等同于--master yarn --deploy-mode群集

spark-submit脚本可以从属性文件加载默认的Spark配置值,并将这些属性传递给您的应用程序. 默认情况下,Spark将从conf / spark-defaults.conf中读取这些属性配置. 有关更多详细信息,请参阅.
以这种方式加载默认的Spark属性配置,可以在调用spark-submit脚本时省略一些参数标志. 例如: 如果在属性文件中设置了spark.master属性,则可以忽略spark-submit的–master参数. 通常,代码中SparkConf中设置的参数具有最高优先级,其次是spark-submit中传递的参数,再是spark-defaults.conf文件中的配置值.
如果您始终不清楚最终配置值来自何处,则可以通过spark-submit的–verbose选项打印细粒度的调试信息.
通过spark-submit提交应用程序时,应用程序jar和–jars选项中的jar软件包将自动传输到集群. Spark支持以下URL协议,并使用不同的分发策略:
请注意,需要将与每个SparkContext对应的jar包和文件复制到相应执行器的工作目录中. 一段时间后,这些文件可能会占用大量磁盘. 在YARN上,这些清理是自动完成的;并且当独立部署Spark时,此自动清理功能需要配置spark.worker.cleanup.appDataTtl属性.
用户还可以使用–packages参数通过指定逗号分隔的Maven坐标来指定其他依赖项. 此命令将自动处理依赖关系树. 可以使用–repositories参数指定其他Maven库(或SBT解析器). Spark命令(pyspark,spark-shell,spark-submit)都支持这些参数.
对于Python,您还可以使用等效的–py-files选项将.egg,.zip和.py文件分发给执行程序.
部署应用程序后,群集模式概述描述了分布式执行中涉及的各种组件以及如何监视和调试应用程序.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-222352-1.html
说白了就是要个面子
我看你还能嚣张到什么时候