目录
vim /etc/sysconfig/network-scripts/ifcfg-ens33
三.在ant151机器运行自动安装jdk脚本autoinstall.sh
设置标识在datas里面创建myid用于标识便于找到ant151这台机器
一.创建多台虚拟机
这里以四台虚拟机为例 ant151 / ant152 / ant153 / ant154
1.1查看虚拟机名称
[root@localhost ~]# hostname
1.2修改计算机名称
三台虚拟机修改名称
[root@localhost ~]# hostnamectl set-hostname ant151
[root@localhost ~]# hostnamectl set-hostname ant152
[root@localhost ~]# hostnamectl set-hostname ant153
[root@localhost ~]# hostnamectl set-hostname ant154
快速生效
[root@localhost ~]# bash
二.开始配置
2.1修改网络信息
vim /etc/sysconfig/network-scripts/ifcfg-ens33
按前面编号写入以下代码
4 BOOTPROTO=static
15 ONBOOT=yes
16 IPADDR=192.168.78.*
17 GATEWAY=192.168.78.2
18 NETMASK=255.255.255.0
19 DNS1=8.8.8.8
2.2重启网络服务
两种方法:
systemctl restart network.service
service network restart
关闭和禁用每台机的防火墙
[root@ant151 ~]# systemctl stop firewalld
[root@ant151 ~]# systemctl disable firewalld
2.3同步时间
同步时间的下面操作三台机都需要
安装ntpdate
[root@ant151 soft]# yum install -y ntpdate定时更新时间
[root@ant151 soft]# crontab -e每五分钟更新一次时间
*/5 * * * * /usr/sbin/ntpdate -u time.windows.com
启动定时任务
[root@ant151 soft]# service crond start
2.4设置集群中每台机器的/etc/hosts
[root@ant151 opt]# vim /etc/hosts
下面加入
IP地址 计算机名称
例如:
192.168.111.111 ant151
192.168.111.111 ant152
192.168.111.111 ant153
把hosts拷贝发送到每一台虚拟机
[root@ant151 opt]# scp /etc/hosts root@ant152:/etc/
[root@ant151 opt]# scp /etc/hosts root@ant153:/etc/
并且在windows界面c盘的system32目录下配置hosts文件
再次加入以下代码
192.168.111.111 ant151
192.168.111.111 ant152
192.168.111.111 ant153
2.5配置免密登陆
[root@ant151 ~]# ssh-keygen -t rsa -P ''
[root@ant151 ~]# cd .ssh/
把id_rsa.pub追加到au...下面
[root@ant151 .ssh]# cat id_rsa.pub >> ./authorized_keys
2.6将本机的公钥拷贝到要免密登陆的目标机器
[root@ant151 .ssh]# ssh-copy-id -i ./id_rsa.pub -p22 root@ant151
[root@ant151 .ssh]# ssh-copy-id -i ./id_rsa.pub -p22 root@ant152
[root@ant151 .ssh]# ssh-copy-id -i ./id_rsa.pub -p22 root@ant153
每一台机器都要执行
2.7 测试免密登陆是否成功
[root@ant151 .ssh]# ssh -p22 root@ant151
[root@ant151 .ssh]# ssh -p22 root@ant152
[root@ant151 .ssh]# ssh -p22 root@ant153
三.在ant151机器运行自动安装jdk脚本autoinstall.sh
教程
[root@ant153 shellfile]# ./autoinstall.sh
刷新资源
[root@ant153 shellfile]# source /etc/profile
[root@ant153 shellfile]# javac
把JDK180发送到每一台虚拟机上面
[root@ant151 opt]# scp -r ./soft/jdk180/ root@ant152:/opt/soft/
[root@ant151 opt]# scp -r ./soft/jdk180/ root@ant153:/opt/soft/
把JDK环境变量拷贝到每一台虚拟机
[root@ant151 zk345]# scp /etc/profile root@ant152:/etc/
[root@ant151 zk345]# scp /etc/profile root@ant153:/etc/
把zookeeper拷贝到虚拟机里面
可用xftp直接拉进去
解压zookeeper
[root@ant151 install]# tar -zxf zookeeper-3.4.5-cdh5.14.2.tar.gz -C ../soft
改名zookeeper
[root@ant151 install]# mv /opt/soft/zookeeper-3.4.5-cdh5.14.2/ /opt/soft/zk345
可以不改,改名便于操作
进入conf
[root@ant151 soft]# cd /opt/soft/zk345/conf
把zoo_sample.cfg,copy一份改名为zoo.cfg
修改zoo_cfg
[root@ant151 conf]# vim ./zoo.cfg
:set nu查看行号
修改12行用于存放数据
在最后加上server.0=ant151:22887:3387
创建目录
[root@ant151 conf]# mkdir /opt/soft/zk345/datas
设置标识
在datas里面创建myid用于标识便于找到ant151这台机器
[root@ant151 conf]# cd /opt/soft/zk345/datas/
[root@ant151 datas]# echo "0" > myid
配置环境变量
[root@ant151 zk345]# vim /etc/profile
把环境变量拷贝到其余机器
[root@ant151 zk345]# scp /etc/profile root@ant152:/etc/
[root@ant151 zk345]# scp /etc/profile root@ant153:/etc/
#ZK
export ZOOKEEPER_HOME=/opt/soft/zk345
export PATH=$PATH:$ZOOKEEPER_HOME/bin
从 解压 开始到 配置环境变量 的操可提取到一个脚本里面直接操作
操作方法类似JDK 教程
#! /bin/bash
echo 'auto install begining....'
#global var
zk=true
hostname=`hostname`
if [ "$zk" = true ];then
echo 'zookeeper install set true'
echo 'setup zookeeper-3.4.5-cdh5.14.2.tar.gz'
tar -zxf /opt/install/zookeeper-3.4.5-cdh5.14.2.tar.gz -C /opt/soft/
mv /opt/soft/zookeeper-3.4.5-cdh5.14.2 /opt/soft/zk345
cp /opt/soft/zk345/conf/zoo_sample.cfg /opt/soft/zk345/conf/zoo.cfg
mkdir -p /opt/soft/zk345/datas
sed -i '12c dataDir=/tmp/zookeeper/datas' /opt/soft/zk345/conf/zoo.cfg
echo "server.0='$hostname':2287:3387" >> /opt/soft/zk345/conf/zoo.cfg
echo "0" > /opt/soft/zk345/datas/myid
sed -i '73a\export PATH=$PATH:$ZOOKEEPER_HOME/bin' /etc/profile
sed -i '73a\export ZOOKEEPER_HOME=/opt/soft/zk345' /etc/profile
sed -i '73a\#ZK' /etc/profile
echo 'setup zookeeper success!!!'
fi
TIP:
如果start出现下面问题
只需 kill 掉这个process即可
[root@ant151 soft]# kill -9 92810
再次启动则会正常
启动zookeeper
[root@ant151 zk345]# ./bin/zkServer.sh start
查看zookeeper状态
[root@ant151 zk345]# ./bin/zkServer.sh status
停止zookeeper
[root@ant151 soft]# zkServer.sh stop
搭建zookeeper集群
[root@ant151 zk345]# vim ./conf/zoo.cfg
在最下面加上
server.0=ant151:2287:3387
server.1=ant152:2287:3387
server.2=ant153:2287:3387
这里只能是奇数,不能是偶数,因为要投票选举,如果是偶数则会出现平票的情况,所有只能是偶数
删除datas里面的所有数据
[root@ant151 zk345]# rm -rf /opt/soft/zk345/datas/*
把zk345拷贝到其余机器上面
[root@ant151 zk345]# scp -r ../zk345/ root@ant152:/opt/soft
[root@ant151 zk345]# scp -r ../zk345/ root@ant153:/opt/soft
设置标识
注意:目录要在datas下面,上面有一步把ant151里面的datas删除了,所有这里还要设置
ant151 [root@ant151 datas]# echo "0" > myid
ant152 [root@ant152 datas]# echo "1" > myid
ant153 [root@ant153 datas]# echo "2" > myid
这里设置的标识要与上面的zoo.cfg下面设置的对应
刷新资源
再次启动zookeeper
[root@ant151 datas]# zkServer.sh start[root@ant152 datas]# zkServer.sh start
[root@ant153 datas]# zkServer.sh start
三台机器都要启动
查看zookeeper状态
[root@ant153 datas]# zkServer.sh statusant151:follower
ant152:leader
ant153:follower
启动/关闭所有zookeeper/查看所有zookeeper状态
在opt下面创建一个shell目录,在创建一个zkop.sh文件用于存放脚本
创建目录
[root@ant151 opt]# mkdir shell
进入shell
[root@ant151 opt]# cd ./shell
创建zkop.sh并编辑
[root@ant151 shell]# vim zkop.sh
修改权限
[root@ant151 shell]# chmod 733 zkop.sh
zkop.sh脚本
#! /bin/bash
case $1 in
"start"){
for i in ant151 ant152 ant153
do
ssh $i "source /etc/profile; /opt/soft/zk345/bin/zkServer.sh start "
done
};;
"stop"){
for i in ant151 ant152 ant153
do
ssh $i "source /etc/profile; /opt/soft/zk345/bin/zkServer.sh stop "
done
};;
"status"){
for i in ant151 ant152 ant153
do
ssh $i "source /etc/profile; /opt/soft/zk345/bin/zkServer.sh status "
done
};;
esac
关闭所有 zookeeper
开启所有zookeeper
查看所有zookeeper状态
查看所有zookeeper服务启动情况
在opt下面创建一个shell目录,在创建一个showjps.sh文件用于存放脚本
创建showjps.sh并编辑
[root@ant151 shell]# vim showjps.sh
修改权限
[root@ant151 shell]# chmod 733 showjps.sh
showjps.sh脚本
# showalljps.sh
#! /bin/bash
for i in ant151 ant152 ant153
do
echo ---------- $i 服务启动状态 -------------
ssh $i "source /etc/profile; /opt/soft/jdk180/bin/jps "
done
[root@ant151 shell]# ./showjps.sh
集群配置图
ant151 ant152 ant153 ant154
NameNode NameNode
DataNode DataNode DataNode DataNode
NodeManager NodeManager NodeManager NodeManager
ResourceManager ResourceManager
JournalNode JournalNode JournalNode
DFSZKFConler DFSZKFConler
zk0 zk1 zk2
JobHistory
集群首次启动
1.启动zk集群
2.启动ant151,ant152,ant153的journalnode服务:hdfs --daemon start journalnode
3.在ant151格式化hdfs namenode: hdfs namenode -format
4.在ant151启动namenode服务:hdfs --daemon start namenode
5.在ant152机器上同步namenode信息 [root@ant152 soft]# hdfs namenode -bootstrapStandby
6.在ant152启动namenode服务:hdfs --daemon start namenode
查看namenode节点状态:hdfs haadmin -getServiceState nn1|nn2
7.关闭所有dfs有关的服务[root@ant151 soft]# stop-dfs.sh
8.格式化zk:[root@ant151 soft]# hdfs zkfc -formatZK
9.启动dfs: [root@ant151 soft]# start-dfs.sh
10.启动yarn: [root@ant151 soft]# start-yarn.sh
查看resourcemanager节点状态:yarn rmadmin -getServiceState rm1|rm2