由于条件限制,只能在虚拟机调试部署
宿主机为dell inspiron 14R SE 7420
虽然是老掉牙的机器,不过加个SSD再战2年应该问题不大,具体配置 :
cpu intel i7 3612QM,内存 8G ddr3 ,硬盘 256SSD + 1T机械
OS Windows10 RS4_17134.1
虚拟化平台为 VirtualBox 5.2.8
集群所有虚拟机均配置为 4G内存,1核CPU ,40G系统盘+80G数据盘,操作系统为 Debian Buster 最小化安装
数据盘加载点 /workspace
集群为 1台master+slave ,两台 slave 共三台虚拟机。
master ip 192.168.1.111 host debian-master
slave1 ip 192.168.1.112 host debian-slave-01
slave2 ip 192.168.1.113 host debian-slave-02
假设已最小化安装完系统及基本软件包和库(如ssh,sshd 等 如果不是最小化安装,必须要开通防火墙策略或关闭防火墙)
可以只安装一台master,然后另外两台slave用虚拟机克隆,改个主机名重置网卡就可以了
以root登入debian-master
1、编辑 /etc/hosts 添加 host映射
192.168.1.115 debian-master
192.168.1.116 debian-slave-01
192.168.1.117 debian-slave-02
2、生成ssh key,使ssh免密登入
ssh-keygen -t rsa 一路回车,在~/.ssh 生成 id.rsa 和 id.rsa_pub
cd ~/.ssh && cat is.rsa_pub >> authorized_keys
------------------------
下载 java8,
java目录为 /usr/local/jdk1.8.0_162
添加环境变量 :
cd /usr/local/jdk1.8.0_162
echo "export JAVA_HOME="$(pwd) >> /etc/profile
官网下载 spark-2.3.0-bin-hadoop2.7.tgz
解压后复制到 /usr/local
我的spark主目录为 /usr/local/spark-2.3.0-bin-hadoop2.7
添加环境变量 cd /usr/local/spark-2.3.0-bin-hadoop2.7 && echo "export SPARK_HOME="$(pwd) >> /etc/profile
添加path:
echo "PATH=$PATH:$JAVA_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin >> /etc/profile
刷新环境变量
source /etc/profile
至此,环境设置完成。
进入 $SPARK_HOME/conf
把slaves.template 和spark-env.sh.template 分别复制一份为 slaves 和 spark-env.sh
前者是slave列表,后者是设置spark环境
在slaves里把所有slave添加进去
我这里是
debian-master
debian-slave-01
debian-slave-02
然后修改spark-env.sh
vim spark-env.sh
添加如下
#据说早期版本的spark必须要添加java目录,否则会出错,没试过,安全起见还是加上,反正又没多少事
export JAVA_HOME=/usr/local/jdk1.8.0_162
#spark 工作结点最多内存数,这里设512m,单位可以是m或是g
export SPARK_WORKER_MEMORY=512m
#master 主机名或地址
export SPARK_MASTER_IP=debian-master
#本机地址
export SPARK_LOCAL_IP=debian-master
#其他一些环境变量,可以参考spark-env.sh原始的注释。比如说端口、内核数等
--------------------------------------------------------
master设置完成。把master主机的 ~/.ssh/authorized_keys 复制到各个slave相应的目录(当然也可以全部设完后直接clone成slave)
把master的把hosts ,profile, java和spark 都复制到 slave主机上:
scp /etc/hosts root@192.168.1.116:/etc
scp /etc/profile root@debian-salve-01:/etc
scp -r $JAVA_HOME root@debian-slave-01:/usr/local
scp -r $SPARK_HOME root@debian-slave-01:/usr/local
其他都不变,在slave1主机上,在$SPARK_HOME/conf里把spark-env.sh里SPARK_LOCAL_IP改成相应的主机名
slave2也一样操作
至此,设置完成。
起动master:
root@debian-master# start-master.sh -h debian-master
这里可以不加 -h 主机名,但是这样虽然能起动,但是work线程看不到
用jps命令看看 master是否起动。
起动slave,并用jps查看
至此,在master主机上已经起动了 master和一个slave,在debian-slave-01和02上分别起动slave
因为所有的虚拟机都是以桥接网络连接。所以起动后在宿主机的浏览器上就可以看到spark的webui
在浏览器里输入master的ip
http://192.168.1.115:8080
看到三个worker node都alive了。至此,spark standalone方式已部署完毕,正常生产环境一般都是以hadoop yarn或是apache mesos为资源管理部署。
安装部署笔记就此结束,留此博文以备后参考。