125、Spark核心编程进阶之standalone client模式提交spark作业

本文深入解析Spark中的local、client及standalone模式,阐述了不同模式下的作业提交流程、driver进程启动位置及日志查看方式。同时,介绍了如何通过spark-submit脚本指定master URL和deploy-mode,以及如何管理和分发依赖的jar包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

local模式下,我们都不会放到生产机器上面去提交,local模式,其实仅仅用于eclipse中运行spark作业,以及打断点,调试spark作业来用,通常,用local模式执行,我们都会手工生成一份数据,来使用
通常情况下来说,部署在测试机器上去,进行测试运行spark作业的时候,都是使用client模式,client模式下,提交作业以后,driver在本机启动,可以实时看到详细的日志信息,方便你追踪和排查错误
standalone模式提交,唯一与local区别,就是一定要想办法将master设置成spark://master_ip:port,比如spark://192.168.0.103:7077

三种设置master的方式

  1. 硬编码: SparkConf.setMaster("spark://IP:PORT")
  2. spark-submit: --master spark://IP:PORT
  3. spark-shell: --master spark://IP:PORT

通常来说,上面三种写法,使用第二种,是最合适

一般我们都是用spark-submit脚本来提交spark application的,很少用spark-shell,spark-shell仅仅用于实验和测试一些特别简单的spark作业
使用spark-submit脚本来提交时,还可以指定两种deploy mode,spark standalone cluster支持client mode和cluster mode
client mode下,你在哪台机器上用spark-submit脚本提交application,driver就会在那台机器上启动
cluster mode下,driver会通过master进程,随机被分配给某一个worker进程来启动

这里我们就知道了,standalone模式,是要在spark-submit中,用--master指定Master进程的URL
其次,使用standalone client模式或cluster模式,是要在spark-submit中,使用--deploy-mode client/cluster来设置
默认,如果你不设置--deploy-mode,那么就是client模式

使用spark-submit脚本来提交application时,application jar是会自动被分发到所有worker节点上去的
对于你的application依赖的额外jar包,可以通过spark-submit脚本中的--jars标识,来指定,可以使用逗号分隔多个jar
比如说,你写spark-sql的时候,有的时候,在作业中,要往mysql中写数据,此时可能会出现找不到mysql驱动jar包的情况
此时,就需要你手动在spark-submit脚本中,使用--jars,加入一些依赖的jar包

我们提交standalone client模式的作业
1、--master和--deploy-mode,来提交作业
2、观察作业执行日志,可以看到去连接spark://192.168.0.103:7077 URL的master
3、观察一些spark web ui,可以看到completed applications一栏中,有我们刚刚运行的作业,比对一下ui上的applicationId和日志中的applicationId
4、重新再执行一次作业,一执行,立即看一下jps查看进程,看看standalone client模式提交作业的时候,当前机器上会启动哪些进程
SparkSubmit: 也就是我们的driver进程,在本机上启动(spark-submit所在的机器)
CoarseGrainedExecutorBackend(内部持有一个Executor对象): 在你的执行spark作业的worker机器上,肯定会给你的作业分配和启动一个executor进程,具体名字就是那个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值