借鉴地址
转载(报错处理): https://blog.csdn.net/Abandon_Sun/article/details/76686398
转载(虚拟机克隆问题):https://blog.csdn.net/qq_31089125/article/details/95728140
转载(Linux常用命令):https://www.cnblogs.com/wujunbin/p/7465538.html
转载(spark安装运行在webUI界面不显示worker):https://blog.csdn.net/qq1187239259/article/details/79489800
转载(Spark项目实战-集群SSH免密码登录):https://blog.csdn.net/Anbang713/article/details/82215339
软件下载
linux
https://pan.baidu.com/s/1kS9XrddRdkCMwQKC1A1otg
提取码:kgcm
jdk1.8
https://pan.baidu.com/s/1ZqNldVY9ZylL4PwHQAxRLQ
提取码:h33s
WinSCP_5.15.2
https://pan.baidu.com/s/1fAZOyhASb12jeAIiE-xI_A
提取码:kxld
VMware spark-2.3.3-bin-hadoop2.7
https://pan.baidu.com/s/1ynBBzzrOMrG3y7KUv2aIzw
提取码:qcvs
以上工具软件都可自行百度下载
配置环境变量
jdk配置
WinSCP可直接托文件上传,需要关闭虚拟机的防火墙service iptables stop
vim /etc/profile
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190720165736634.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM4NTQxOQ==,size_16,color_FFFFFF,t_70
export JAVA_HOME=/home/usr/java/jdk1.8.0_11
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
export SPARK_HOME=/home/usr/java/spark-2.3.3-bin-hadoop2.7
export PATH=$PATH:${SPARK_HOME}/bin
vim /root/.bashrc
这里的的坑比较大,一直没有设置,目前我只是在worker设置了,最好全部都设置,后面会用到
source /etc/profile 使设置的环境变量起作用
spark配置
解压后修改conf文件 删除指定文件后缀
修改前
修改后
设置环境变量
vim spark-env.sh
export JAVA_HOME=/home/usr/java/jdk1.8.0_11
export SPARK_MASTER_HOST=192.168.1.105(作为master的ip)
export SPARK_MASTER_POST=7077(默认7077)
vim slaves 添加所有虚拟机的ip或者主机名(主机名需要添加映射关系)
添加映射关系 vim /etc/hosts
虚拟机克隆
选定设置好的虚拟机
虚拟机–>管理–>克隆
克隆完成修改主机名
vim /etc/sysconfig/network
查看虚拟机是否可以上网(右上角两个小电脑的图标)
虚拟机–>设置–>网络适配器–>桥接模式
得到ip 修改完主机名后去完善制定文件
需要master 启动时通信的worker (参考上文):vim slaves
添加映射关系(参考上文):vim /etc/hosts
启动
成功
基于zookeeper的Spark高可用集群配置
普通的spark集群只有一个master若干worker,一旦master宕机,就会影响到程序
zk(zookeeper) 的搭建方式比较多:
1.单机模式
2.集群模式
3.伪集群模式
有兴趣的可以看看:转载:Zookeeper简介与集群搭建 https://blog.csdn.net/qiushisoftware/article/details/79043379
我采用的是zk集群搭建:
1.准备zk::http://apache.fayea.com/zookeeper/
2.准备虚拟机:克隆一个上面已经配置好的虚拟机谨记修改主机名(vi /etc/sysconfig/network),如:克隆CentOS-1 ;
3.配置zk环境:3.1:上传文件,解压 ==tar -zxvf ==
3.2:修改conf下zoo_sample.cfg改名为zoo.cfg(mv zoo_sample.cfg zoo.cfg)
3.3:在解压后zookeeper文件夹下 建一个data文件夹(mkdir)进入data创建一个文件 vi myid 里面的数字随便写一个,后面会使用。效果如下图:
3.4:修改datadir,路径为刚才的data路径,(默认值存在虚拟机重启后会被清理掉) ,增加server.0=192.168.X.X:2888:3888 2888.3888 zk的端口
server.A=B:C:D其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。
3.5:克隆配置好的zk虚拟机,我克隆了三个(谨记修改主机名(vi /etc/sysconfig/network))
3.6:修改刚才创建的myid文件的数字,
3.7:获取三台机器的ip(ifconfig)
3.8:修改每台机器conf文件 数字和IP对应
3.9:如果写的主机名则需要映射关系如图
>3.10设置完成,启动,在每个zk目录下分别启动启动:bin/zkServer.sh start
全部启动完毕查询状态:bin/zkServer.sh status
以上zk搭建完毕(步骤比较粗糙,忽略的还请指出,谢谢)4.修改之前已经可以运行的master机器
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=192.168.X.X:2181,192.168.X.X:2181,192.168.X.X:2181 -Dspark.deploy.zookeeper.dir=/spark"(url写zk的地址,注意两边的双引号)
5.克隆若干master(谨记修改主机名(vi /etc/sysconfig/network)):
6.如果有映射关系修改其他克隆的master映射关系 vi /etc/hosts
7.选择一个master启动 sbin/start-all.sh
8.其他的master启动 sbin/start-master.sh
kill -9 pid pid=线程id 模拟机器宕机—结束原来活跃的master线程,zk会帮你把备用的master投票选择一个活跃起来,继续程序。
坑比较多,依附于百度和美女大神的帮助
如有错误请指正