spark-submit兼容所有的集群模式。
1 打包依赖
使用sbt或maven将依赖的代码和包打包。
不必包含Spark或Hadoop,因为集群管理器在运行时自动添加。
2 使用spark-submit运行
1 | ./bin/spark-submit \ |
通常,在与工作节点同一网关环境中提交应用。这种设置适宜使用client模式。驱动程序作为客户端在spark-submit进程中运行。默认输入输出在控制台中,适宜REPL(读取-求值-输出循环)。
如需远程提交应用,为了减少驱动和执行器通信延迟,可以使用cluster模式。
注意:当前standalone部署不支持Python应用的cluster模式。
思考:client和cluster的区别在driver是否在集群外,前者在集群外,后者在集群内。
不同的集群管理器有不同的专用选项,可以通过–help查看。如standalone模式可以使用–supervise启用失败重启。
示例如下:
1 | # Run application locally on 8 cores |
3 主节点URL
4 从文件加载配置
Spark默认从conf/spark-defaults读取Spark configuration values 。详见loading default configurations
配置采用优先级:
SparkConf显式设置>spark-submit参数>文件参数
获取参数来源可以使用spark-submit –verbose查看
5 高级依赖管理
使用spark-submit时,应用程序包和–jars指定的包(逗号分隔)将自动传输到集群中。列表将被包含进驱动和执行器节点的类路径中。注意:不支持目录扩容
文件协议:
- file: 绝对路径和驱动节点提供的文件服务
- hdfs:, http:, https:, ftp:
- local: 工作节点路径,不会触发网络传输
由于jar包和文件传输到每个SparkContext的工作节点的工作目录中,需要清理。YARN自动清理,standalone通过设置spark.worker.cleanup.appDataTtl自动清理。
–packages提供Maven包定位信息
–repositories提供sbt等额外仓库地址,可以通过 https://user:password@host/...
.提供密码,需要注意安全。
6 更多信息
参考资料
[Submitting Appli
cations](https://spark.apache.org/docs/2.3.0/submitting-applications.html)