环境准备:三台已经配置好网络的虚拟机,能够连接到外网
进入到每台虚拟机中查看虚拟机里面自带的jdk是否已经卸载,输入
rpm -qa | grep -i java
如果有请卸载掉,输入
rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
准备一个集群分发脚本。ps:之后会经常用到,在自己的家目录下创建bin目录(我的家目录是/home/human,可以用 cd ~ 就可以进入到自己的家目录中了)如下图:
cd ~
mkdir bin
进人到bin目录中开始创建脚本
cd /home/human/bin
vi xsync
在文本中输入以下内容
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
echo ==================== $host ====================
#3. 遍历所有目录,挨个发送
for file in $@
do
#4 判断文件是否存在
if [ -e $file ]
then
#5. 获取父目录
pdir=$(cd -P $(dirname $file); pwd)
#6. 获取当前文件的名称
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done
输入完成后,输入:wq退出并保存
输入以下命令,给文件附加权限
chmod 777 xsync
测试脚本
xsync xsync
开始配置ssh免密登录
cd ~/.ssh进入到.ssh目录中,输入
ssh-keygen -t rsa
敲三下回车就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到需要免密登录的机器上面
ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104
hadoop103、hadoop104也要执行上面的命令
ssh-keygen -t rsa
ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104
免密登录完成
开始安装JDK
进入到software目录中
cd /opt/software
里面我已经上传了JDK、Hadoop、Zookeeper的安装包
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
配置JDK环境变量
sudo vi /etc/profile.d/my_env.sh
添加如下内容,然后保存(:wq)退出
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
让环境变量生效
source /etc/profile.d/my_env.sh
分发JDK
xsync /opt/module/jdk1.8.0_212/
分发环境变量(注意,因为是分发系统文件,因此需要root权限,并且要带上脚本文件所在目录)
sudo /home/human/bin/xsync /etc/profile.d/my_env.sh
去其它两台虚拟机上面让环境变量生效
source /etc/profile.d/my_env.sh
JDK配置完成!
开始配置zookeeper
到/home/human中解压zookeeper
tar -zxvf zookeeper-3.5.7.tar.gz -C /opt/module/
修改zookeeper的名字
mv apache-zookeeper-3.5.7-bin/ zookeeper-3.5.7
同步/opt/module/zookeeper-3.5.7目录内容到其它两台虚拟机中
xsync /opt/module/zookeeper-3.5.7/
进入zookeeper中
cd /opt/module/zookeeper-3.5.7
在/opt/module/zookeeper-3.5.7/这个目录下创建zkData
mkdir zkData
在/opt/module/zookeeper-3.5.7/zkData目录下创建一个myid的文件
vi myid
在文件中添加与server对应的编号:
2
拷贝配置好的zookeeper到其他机器上
xsync myid
并分别在hadoop103、hadoop104上修改myid文件中内容为3、4
重命名/opt/module/zookeeper-3.5.7/conf这个目录下的zoo_sample.cfg为zoo.cfg
mv zoo_sample.cfg zoo.cfg
vim zoo.cfg
修改数据存储路径配置
dataDir=/opt/module/zookeeper-3.5.7/zkData
增加如下配置
#######################cluster##########################
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888
同步zoo.cfg配置文件
xsync zoo.cfg
分别在虚拟机中执行以下操作
bin/zkServer.sh start
分别查看每台虚拟机中的状态
bin/zkServer.sh status
在hadoop102的/home/atguigu/bin目录下创建脚本
vim zk.sh
在脚本中编写如下内容
#!/bin/bash
case $1 in
"start"){
for i in hadoop102 hadoop103 hadoop104
do
echo ---------- zookeeper $i 启动 ------------
ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh start"
done
};;
"stop"){
for i in hadoop102 hadoop103 hadoop104
do
echo ---------- zookeeper $i 停止 ------------
ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh stop"
done
};;
"status"){
for i in hadoop102 hadoop103 hadoop104</