Standalone模式部署实战
spark有好几种运行模式,本次我们来挑一种standalone模式来操作一下,就是spark独自包揽除了存储文件操作之外的所有操作,包括集群管理,任务调度,程序计算等等,这种模式适合不大的程序,不需要yarn等将部署整的很复杂。专业点的描述就是,利用Spark自带的资源管理与调度器运行Spark集群,采用Master/Slave结构,为解决单点故障,可以采用Xookeeper实现高可靠(High Availability, HA)。开始吧
首先准备以下东西
- 要部署的Application,已经打包成一个jar包,或者没有用自带的实例
- 四台linux机器,物理机或者虚拟机,要求互相能ping通,并且已经安装好jdk 我的是jdk-1.8.0_101
- spark安装包,我的版本spark-2.3-hadoop-2.7版本
- zookeeper安装包
- 每台机器都要安装scala环境 我的版本scala-2.11.12
一、操作系统准备
四台机器ip如下:
- 10.1.161.91
- 10.1.161.92
- 10.1.161.94
- 10.1.161.95
1、主机名修改
为了便于后续操作,修改下主机名,修改成统一格式,我的机器对应如下
10.1.161.91 ---> test01.yuyin
10.1.161.92 ---> test02.yuyin
10.1.161.94 ---> test04.yuyin
10.1.161.95 ---> test05.yuyin
2、配置主机和ip的映射 修改hosts文件
每台机器执行
vi /etc/hosts
在文件后面添加下列配置
10.1.161.95 test05.yuyin
10.1.161.94 test04.yuyin
10.1.161.91 test01.yuyin
10.1.161.92 test02.yuyin
保存好了,可以测试下ping情况,比如在test01.yuyin上ping test02.yuyin,结果如下
每台机器都要试一下,保证映射有效,以免后续出错
同时也要测一下外网的连通性,如下
如果不通的话,检查下是否dns解析有问题
vi /etc/resolv.conf
尝试修改nameServer。或者是其他什么原因,请自行排查
3、无密码访问
如果机器没有安装openssh,执行下列命令安装
yum install openssh-server
每台机器都要安装,安装好了以后,生成密钥,命令如下
ssh-keygen -t rsa
执行的时候直接几次enter就行了,由于我这个已经生成过了,因此会问是否覆盖,如下
生成好了以后,将密钥拷贝到其他机器,通过以下指令:
ssh-copy-id -i test02.yuyin
ssh-copy-id -i test04.yuyin
ssh-copy-id -i test05.yuyin
我在test01上执行
ssh-copy-id -i test02.yuyin
结果
执行过程中需要输入访问密码。所有的机器都要执行,目的是确保任意两台机器之间都可以互相无密码登录,才能作为一个集群,共同协作。
接下来测试下是否可以无密码互通,执行
ssh test02.yuyin
结果
可以看到现在test01.yuyin已经可以无密码访问test02.yuyin了,同时test02.yuyin也可以访问test01.yuyin,如下
其他机器同理,
ssh test04.yuyin
ssh test05.yuyin
保证任意两台机器之间可以互相无密码操作即可,还可以用scp命令测试下是否可以无密码互相复制文件啥的。
这一步算完成了。
二、环境安装
1、安装包分享
包括jdk、scala、spark、hadoop、zookeeper安装包分享如下
https://pan.baidu.com/s/1wq77i-EB5kh5j3ZncBEa6g 密码 1v2p
建议将安装包都下载到一个目录下,比如/usr/local/sparksoft 下,至于是用ftp传上去还是虚拟机用共享目录都可以,方便即可。
至于安装,应该首先在一台机器上安装,比如test01.yuyin,安装好了以后全部复制到其他机器上,保证几台机器的安装和配置都是相同的。
2、基础环境安装
- JDK安装