真实工作中还是要将应用提交到集群中去执行,Standalone模式就是使用Spark自身节点运行的集群模式,体现了经典的master-slave模式。集群共三台机器,具体如下
u22server4spark: master worker
u22server4spark2: worker
u22server4spark3: worker
配置免密登录
spark使用standalone模式部署时,从节点要与主节点之间进行通信。如果不配置免密登录,启动时会提示输入密码,很可能造成从节点没有成功启动;启动后当主从节点要互相访问时,依然需要密码,这时肯定失败,例如web查看时只看到一个主节点自身的worker。
节点互访存在于主从之间,从从之间不存在。所以免密配置存在于主从、从主之间。
免密登录配置过程详见:《大数据-spark3.5安装部署之免密登录》
配置master
上传解压
使用PortX将jdk、spark文件上传至/opt
jdk解压
tar zxvf jdk-8u271-linux-x64.tar.gz
spark解压
进入/opt目录,创建目录module,解压文件至/opt/module
进入module,并修改名称为spark-standalone
调整配置文件
要调整的配置内容包括:jdk环境变量、hosts文件、spark配置文件。
jdk环境变量
以root用户配置环境变量
cd ~
保存后,以root用户,执行source .profle,使更改生效,并验证。
hosts文件
除将master本机即u22server4spark的ip与主机名写入外,还需要将将另外两台worker从机的ip地址与主机名写入u22server4spark的/etc/hosts,并将127.0.0.1 u22server4spark注释。否则造成环路,两个从机向master注册不成功,web查看时,wokers只会出现主机所在的这个worker。
vi /etc/hosts
spark配置文件
进入conf目录,修改workers.template为workers
修改workers文件,添加worker节点,即集群中的主机名
修改spark-env.sh.template文件名为spark-env.sh
向spark-env.sh添加内容JAVA_HOME环境变量及对应的master节点
备注:7077是默认的内部通信端口
分发至集群其他机器
分别向两台从机u22server4spark2、u22server4spark3分发jdk、spark文件。
分发至u22server4spark2
scp -r /opt/jdk1.8.0_271 u22server4spark2:/opt
或者 scp -r /opt/jdk1.8.0_271 192.168.12.77:/opt
分发spark前,在u22server4spark2的/opt中新建目录module
scp -r /opt/module/spark-standalone u22server4spark2:/opt/module
分发至u22server4spark3
scp -r /opt/jdk1.8.0_271 u22server4spark3:/opt
或者 scp -r /opt/jdk1.8.0_271 192.168.12.88:/opt
分发spark前,在u22server4spark3的/opt中新建目录module
scp -r /opt/module/spark-standalone u22server4spark3:/opt/module
配置worker
u22server4spark2
jdk环境变量
同前
hosts文件
向从机的/etc/hosts文件中添加master主机信息,并将127.0.0.1 u22server4spark2注释
vi /etc/hosts
配置worker2
u22server4spark3
jdk环境变量
同前
hosts文件
向从机的/etc/hosts文件中添加master主机信息,并将127.0.0.1 u22server4spark3注释
vi /etc/hosts
验证操作
执行以下操作,如果都没有报错,则spark安装部署成功。
启停
启动
直接在master主机即u22server4spark,运行脚本 ./start-all.sh
或者
分别在主机即u22server4spark,运行 ./start-master.sh;从机即u22server4spark2、u22server4spark3运行脚本 ./start-worker.sh
主机jps
从机jps
web
停止
直接在master主机即u22server4spark,运行脚本 ./stop-all.sh
或者
分别在主机即u22server4spark,运行 ./stop-master.sh;从机即u22server4spark2、u22server4spark3运行脚本 ./stop-worker.sh
交互
使用命令行或者提交作业的方式,与spark进行交互。
命令行
同local即本地部署
提交应用
向主机节点即u22server4spark提交一个简单的Spark任务测试集群是否配置成功
bin/spark-submit \
--master spark://192.168.12.66:7077 \
--class org.apache.spark.examples.SparkPi \
./examples/jars/spark-examples_2.12-3.5.5.jar \
10
备注:示例代码在spark的目录中
应用运行中,查看web时,会在Running Applications下方看到;应用完成后,查看web时,会在Compleeted Applications下方看到。