由于导师项目需要,因此临时学习了一下spark,在借鉴别人的基础上完成了原生式spark分布式环境的部署,特此详细的记录一下安装过程,以供后续参考。
一:机器配置(以centos 64位为例)
主节点(命名为Msater) IP:192.168.182.172
从节点1(命名为slave1) IP: 192.168.182.173
从节点2(命名为slave2) IP: 192.168.182.174
从节点3(命名为slave3)IP:192.168.182.175
之后的所有操作都是在root环境下进行的,请提前进入root。
二:修改hosts节点配置
四台机器都需要修改机器配置,操作都一样,如下:
命令:
vi /etc/hosts
在hosts后面添加如下内容:(你可以根据自己的IP和节点命名进行对应修改)
192.168.182.172 Master
192.168.182.173 slave1
192.168.182.174 slave2
192.168.182.175 slave3
最后保存执行一下:
source /etc/hosts
三:SSH无密码验证
3.1安装SSH服务和RSYNC服务(已安装忽略)
1. 查看是否安装SSH和RSYNC服务
rpm -qa|grep openssh rpm -qa|grep rsync
如果没有安装,则通过以下命令安装
yum install ssh (安装ssh协议) yum install rsync (rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件) service sshd restart (启动服务)
3.2 配置Master节点无密码登陆其他节点
Master节点操作:
首先生成密码对,执行以下命令:
ssh-keygen -t rsa
生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/root/.ssh"目录下,可自行查看
接着将刚才生成的密码对添加到authorized_keys后,命令如下:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
然后修改ssh配置文件"/etc/ssh/sshd_config"的下列内容,将以下内容的注释去掉(即去掉语句前的#号):
PermitRootLogin yes AuthorizedKeysFile .ssh/authorized_keys PubkeyAuthentication yes
重启ssh服务,使设置生效
service sshd restart
查看是否能无密码登陆本地主机localhost:
ssh localhost
接下来把公钥复制到其他slave节点上面,命令如下
scp /root/.ssh/id_rsa.pub root@slave1:/root/ scp /root/.ssh/id_rsa.pub root@slave2:/root/ scp /root/.ssh/id_rsa.pub root@slave3:/root/
接下来我们要对slave节点进行操作,我们首先对slave1节点进行操作,以下操作都是在slave1节点进行:
1.首先查看节点是否有/root/.ssh目录,如果没有,则创建此目录
mkdir /root/.ssh
2.将Master节点刚刚发送过来的密钥追加到authorized_keys文件中:
cat /root/id_rsa.pub >> /root/.ssh/authorized_keys
3)修改"/etc/ssh/sshd_config",将以下行注释去掉
PermitRootLogin yes AuthorizedKeysFile .ssh/authorized_keys PubkeyAuthentication yes
重启ssh服务,使修改生效:
service sshd restart
测试一下Master节点是否能无密码登陆slave1节点:
在Master节点执行以下命令:
ssh slave1 或者 ssh 192.168.182.173
将slave1节点的id_rsa.pob删除,在slave1节点执行以下命令
rm –r /root/id_rsa.pub
在slave2和slave3节点也执行slave1节点的步骤,完成Master节点无密码登陆slave1节点。
3.3 slave1节点无密码登陆Mater节点
以下操作在slave1节点完成:
1.首先生成rsa密钥,命令如下:
ssh-keygen -t rsa
2.将密钥追加到authorized_keys文件中:
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
3.将slave1节点的密钥复制到Master节点中
scp /root/.ssh/id_rsa.pub root@Master:/root/
以下操作在Master节点完成:
1.将slave1节点发送来的id_rsa.pub文件追加到authorized_keys文件中
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
2.将Master节点的id_sra.pub文件删除
rm –r /root/id_rsa.pub
以下操作在slave1节点进行:
1.测试slave1节点能否无密码登陆Master节点
ssh Master 或者 ssh192.168.182.172
以上就完成了slave1无密码登陆Master节点。slave2和slave3节点执行同样操作即可完成对Master节点的无密码登陆。
4.安装java环境和SCALA环境(已安装忽略,java环境很重要,后面都要用到)
1.安装java环境
yum install java
2.配置java环境
首先找到java执行路径
which java (如果环境变量没有配置,该命令返回的使java执行路径,如果已配置环境变量,显示的是安装路径)
我这边由于已经配置过环境,返回结果如下
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-1.el7_7.x86_64/jre/bin/java
基于以上返回结果,我是这样配置环境的;
首先进入/ect/profile
vi /etc/profile
在里面增加如下内容
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-1.el7_7.x86_64/jre
PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/rt.jar export JAVA_HOME PATH CLASSPATH
保存以后刷新配置
source /etc/profile
如果没有配置环境,想要找到java安装路径,需要执行以下命令
whic java //找到执行路径
[root@namenode ~]# env |grep JAVA [root@namenode ~]# ls -hltr /usr/bin/java (/usr/bin/java是执行which java返回的执行路径) /usr/bin/java -> /etc/alternatives/java (返回结果) [root@namenode ~]# cd /etc/alternatives [root@namenode alternatives]# ls -hltr java java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-1.el7_7.x86_64/jre/bin/java
最后一行即java安装路径
2.安装scala
一般来说原生centos没有wget,我们首先安装wget
yum install wget
安装好以后,下载scala包
wget https://downloads.lightbend.com/scala/2.11.8/scala-2.11.8.tgz
解压缩scala包
tar -xzvf scala-2.11.8.tgz
把scala-2.11.8文件夹拷贝到/usr/local/scala文件夹下,
如果没有/usr/local/scala文件夹,则创建
mkdir -p /usr/local/scala
cp -r scala-2.11.8 /usr/local/scala
配置环境变量:
cd ~
vi .bash_profile
添加以下配置:
export SCALA_HOME=/usr/local/scala/scala-2.11.8 export PATH=$PATH:$SCALA_HOME/bin
执行以下命令使之生效
source .bash_profile
验证是否安装成功
在命令行输入scala
5.Hadoop完全分布式环境安装