Spark搭建过程参考了Spark分布式集群环境搭建_BoSea-CSDN博客_spark集群,但是在部署过程中由于软件版本不同踩了很多坑,在此以原版本为基础,针对hadoop3.2和spark3.1.2进行集群搭建的说明
一、平台与软件
虚拟机:VMware Workstation Pro 64位
操作系统:Ubuntu16.04 64位
Java: jdk-8u3301-linux-x64.tar.gz
Scala: scala-2.12.15.tgz
Hadoop: hadoop-3.2.2.tar.gz
Spark: spark-3.1.2-bin-hadoop3.2.tgz
二、搭建过程
1.建立一台虚拟机,可以为虚拟机设立一个专用于spark用途的用户。在命令行中依次执行以下命令
sudo user add -m hadoop -s /bin/bash //创建hadoop用户
sudo passwd hadoop //设置hadoop的密码
sudo adduser hadoop sudo //将hadoop用户加入到sudo组
2.集群搭建后会有1台master,2台worker(worker1、worker2)。现在将第一台虚拟机设为master。修改主机名为master
sudo vi /etc/hostname //设置hsotname
reboot //使设置生效
3.修改自身IP地址,设为固定值
sudo vi /etc/network/interfaces //修改IP
ifconfig //查看当前IP
4.修改host文件,把master、worker1、worker2的hosts一起写入。设定worker1的IP为192.168.127.200,worker2的IP为192.168.127.210
sudo vi /etc/hosts //修改hosts
5.安装JDK
建议下载好安装包后在统一搬运到虚拟机上。在/home/hadoop下创建spark文件夹,在spark文件夹下又创建多个文件夹,每个文件夹用于存放各个软件的多个版本。比如我的结构是这样的:
tar -zvxf jdk-8u301-linux-x64.tar.gz //解压安装包
之后将包所在位置添加到环境变量,sudo vi /etc/profile
source /etc/profile //使设置生效
java -version //检查是否安装成功
6.安装scala
tar -zxvf scala-2.12.15.tgz //解压安装包
将包所在位置添加到环境变量,sudo vi /etc/profile
source /etc/profile //使设置生效
scala -version //检查是否安装成功
7.安装ssh服务
sudo apt-get install openssh-server //安装ssh
8.克隆主机
在已有的通用配置的基础上,克隆出来两台虚拟机作为worker1和worker2。克隆出的主机需要修改hostname(分别改为worker1、worker2)和IP地址(分别为192.168.127.200和192.168.127.210)。修改完成后,使用ping,检查三台机器之间是否可以连通。
9.在每台主机上,生成公钥和私钥对。
ssh-keygen -t rsa
之后将woker1和worker2上的id_rsa.pub发给master
worker1上:scp ~/.ssh/id_rsa.pub hadoop@master:~/.ssh/id_rsa.pub.woeker1
worker2上:scp ~/.ssh/id_rsa.pub hadoop@master:~/.ssh/id_rsa.pub.woeker2
在master上,将所有公钥加载到用于认证的公钥文件authorized_key中cat ~/.ssh/id_rsa.pub* >> ~/.ssh/authorized_keys
然后将master上的公钥文件authorized_key分发给worker1、worker2
scp ~/.ssh/authorized_keys hadoop@worker1:~/.ssh/
scp ~/.ssh/authorized_keys hadoop@worker2:~/.ssh/
最后在master上尝试是否可以用ssh免密码登陆其他主机ssh worker1
10.安装hadoop
tar -zxvf hadoop-3.2.2.tgr.gz //解压安装包
解压之后,进入hadoop配置目录修改配置文件
cd spark/hadoop/hadoop-3.2.2/etc/hadoop //进入配置目录
vi hadoop-env.sh // 修改配置文件
配置文件修改后是这个样子:
hadoop-env.sh:
yarn-env.sh:
workers:
core-site.xml:
hdfs-site.xml:
mapred-site.xml:
yarn-site.xml:
11.在master上完成hadoop的配置后,将hadoop分发给两个worker。
scp -r ~/saprk/hadoop/hadoop-3.2.2 haddop@worker1:~/spark/hadoop/hadoop-3.2.2
scp -r ~/saprk/hadoop/hadoop-3.2.2 haddop@worker2:~/spark/hadoop/hadoop-3.2.2
12.格式化namenode
cd ~/spark/hadoop/hadoop-3.2.2
bin/hadoop namenode -format
13.启动hadoop集群并进行验证
cd ~/spark/hadoop/hadoop-3.2.2
sbin/start-dfs.sh
sbin/start-yarn.sh
之后在三台机器上分别执行jps,可以看到master上运行有namenode、datanode、nodemanager,两个worker上运行有datanode。
14.安装并配置spark
tar -zxvf spark-3.1.2-bin-hadoop3.2.tgz //解压安装包
进入spark-3.1.2-bin-hadoop3.2/conf,将模板文件都复制一份,将复制文件名字里的.template去掉,在此基础上进行编辑vi spark-env.sh
spark-env.sh:
workers:
将master上的spark进行分发,
scp -r ~/saprk/spark-3.1.2-bin-hadoop3.2 haddop@worker1:~/spark/saprk-3.1.2-bin-hadoop3.2
scp -r ~/saprk/spark-3.1.2-bin-hadoop3.2 haddop@worker2:~/spark/saprk-3.1.2-bin-hadoop3.2
15.启动spark集群
首先,按照【13】将hadoop集群启动。
cd ~/spark/spark-3.1.2-bin-hadoop3.2 sbin\start-all.sh,将spark启动。
可以使用jps命令、访问master:8080进行验证。在spark目录下,也可以运行./bin/spark-shell进入spark控制台