spark(2)集群安装部署、启动与停止、web界面管理
spark集群安装部署
搭建spark集群要事先搭建好zookeeper集群,spark会依赖zookeeper集群来实现Master的高可用。
第一步:下载安装包
下载安装包:spark-2.3.3-bin-hadoop2.7.tgz
下载地址:
https://archive.apache.org/dist/spark/spark-2.3.3/spark-2.3.3-bin-hadoop2.7.tgz
第二步:解压安装包
上传安装包到node01,解压,修改名称:
cd /kkb/soft
rz
tar -zxvf /kkb/soft/spark-2.3.3-bin-hadoop2.7.tgz -C /kkb/install/
cd /kkb/install
mv spark-2.3.3-bin-hadoop2.7 spark
第三步:修改配置文件
进入到spark的安装目录下对应的conf文件夹
cd /kkb/install/spark/conf
mv spark-env.sh.template spark-env.sh
vim spark-env.sh
添加下面内容
#配置java的环境变量
export JAVA_HOME=/kkb/install/jdk1.8.0_141
#配置zk相关信息
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node01:2181,node02:2181,node03:2181 -Dspark.deploy.zookeeper.dir=/spark"
说明:
- -Dspark.deploy.recoveryMode=ZOOKEEPER 指定spark的恢复模式为ZOOKEEPER
- -Dspark.deploy.zookeeper.url=node01:2181,node02:2181,node03:2181指定zookeeper集群的地址
- -Dspark.deploy.zookeeper.dir=/spark" 指定spark在zookeeper中创建的节点(文件),随便设置一个名字即可
设定spark的从节点:
mv slaves.template slaves
vim slaves
#指定spark集群的worker节点
node02
node03
第四步:分发安装目录到其他机器
scp -r /kkb/install/spark node02:/kkb/install
scp -r /kkb/install/spark node03:/kkb/install
第五步:修改spark环境变量
所有节点修改/etc/profile
sudo vim /etc/profile
export SPARK_HOME=/kkb/install/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
source /etc/profile
spark集群的启动和停止
必须先启动zookeeper集群
启动spark
在任意一台服务器来执行下列脚本(条件:需要任意2台机器之间实现ssh免密登录),
$SPARK_HOME/sbin/start-all.sh
在哪里启动这个脚本,就会在当前该机器启动一个Master进程,整个集群的worker进程的启动由slaves文件决定
后期可以在其他机器单独在启动master,实现高可用:
$SPARK_HOME/sbin/start-master.sh
验证是否成功开启:
[hadoop@node01 conf]$ xcall jps
============= node01 jps =============
7892 Jps
7610 QuorumPeerMain
7739 Master
============= node02 jps =============
7857 Master
7941 Jps
7751 Worker
7611 QuorumPeerMain
============= node03 jps =============
7921 Jps
7802 Worker
7643 QuorumPeerMain
停止spark
在处于active Master主节点执行
$SPARK_HOME/sbin/stop-all.sh
在处于standBy Master主节点执行
$SPARK_HOME/sbin/stop-master.sh
spark高可用思考问题
问题思考:
1、如何恢复到上一次活着master挂掉之前的状态?
在高可用模式下,整个spark集群就有很多个master,其中只有一个master被zk选举成活着的master,其他的多个master都处于standby,同时把整个spark集群的元数据信息通过zk中节点进行保存。
后期如果活着的master挂掉。首先zk会感知到活着的master挂掉,下面开始在多个处于standby中的master进行选举,再次产生一个活着的master,这个活着的master会读取保存在zk节点中的spark集群元数据信息,恢复到上一次master的状态。整个过程在恢复的时候经历过了很多个不同的阶段,每个阶段都需要一定时间,最终恢复到上个活着的master的状态,整个恢复过程一般需要1-2分钟。
2、在master的恢复阶段对任务的影响?
a)对已经运行的任务是没有任何影响
由于该任务正在运行,说明它已经拿到了计算资源,这个时候就不需要master。
b) 对即将要提交的任务是有影响
由于该任务需要有计算资源,这个时候会找活着的master去申请计算资源,由于没有一个活着的master,该任务是获取不到计算资源,也就是任务无法运行。
spark集群的web管理界面
当启动好spark集群之后,可以访问这样一个地址:http://...:8080
比如说,如果node01/node02都启动了Master,则可以访问地址:http://node01:8080和http://node02:8080
可以通过这个web界面观察到很多信息
- 整个spark集群的详细信息
- 整个spark集群总的资源信息
- 整个spark集群已经使用的资源信息
- 整个spark集群还剩的资源信息
- 整个spark集群正在运行的任务信息
- 整个spark集群已经完成的任务信息
node01:
node02:
整个spark集群的计算资源是把所有worker节点的资源进行累加,下面是老师的截图: