第一步:环境准备
~~>前提:
在原有一台基础之上,在创建两台虚拟机(点击管理克隆即可,复制两份出来)
192.168.8.101 LENOVO01
192.168.8.102 LENOVO02
192.168.8.103 LENOVO03
修改主机名
vim /etc/sysconfig/network
HOSTNAME=LENOVO01
同时在这三台其中的/etc/hosts文件中把
192.168.8.101 LENOVO01
192.168.8.102 LENOVO02
192.168.8.103 LENOVO03
修改网卡
定制ip地址
思路:
clone之前:
将systemctl disable mariadb.service ~>将mysql db的开启启动屏蔽掉
clone之后:
systemctl enable mariadb.service ~>将LENOVO01上的mysql db的开启启动启用
①基于LENOVO01这台机器,clone两份(LENOVO02,LENOVO03)。
vim /etc/sysconfig/network-scripts/ifcfg-ens33
②修改clone后的机器的ip地址以及主机名。
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO=static
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="8481efb8-9387-41a6-9c37-fbb554af7a78"
/* uuid记得更为不同的编号*/
IPADDR=192.168.8.101
NETMASK=255.255.255.0
GATEWAY=192.168.8.2
DNS1=8.8.8.8
修改ip后,让ip生效:service network restart
或者重启虚拟机: reboot
vim /etc/sysconfig/network
vim /etc/hosts
添加三个ip地址与主机名的映射关系,目的:集群中的机器通过该配置文件中的信息可以察觉到对方的存在。(如:LENOVO01~>LENOVO02)
~~>因为要执行分布式集群的安装,所以需要将原来的部署重新升级来做
将LENOVO01机器上面的hadoop和zookeeper的数据安装删除即可,
rm -rf /opt/hadoop
rm -rf /opt/zookeeper
清除之前hadoop的数据文件
rm -rf /opt/hadoop-repo/name/*
rm -rf /opt/hadoop-repo/data/*
rm -rf /opt/hadoop-repo/tmp/*
rm -rf /opt/hadoop-repo/secondary (分布式集群中,NameNode没有小秘了!没有SecondaryNameNode进程,需要删除该目录)
______________________________
~~~~~~>配置各个机器间的免密码登录
在三台机器上面都生成相应的密码
ssh-keygen -t rsa
拷贝LENOVO01的密钥到其它两台机器上面,同时将LENOVO02和LENOVO03自己密钥交给自己进行管理
在LENOVO02上面的操作: (希望LENOVO02机器能够启动LENOVO03上相应的进程,需要配置自己到自己,自己到LENOVO03的免密码登录)
ssh-keygen -t rsa
ssh-copy-id -i root@LENOVO02
ssh-copy-id -i root@LENOVO03
目的:让LENOVO02机器上的用户root可以免密码登录自己LENOVO02和另外一台机器LENOVO03
在LENOVO03上面的操作:(LENOVO03只需要免密码登录自己即可)
ssh-keygen -t rsa
ssh-copy-id -i root@LENOVO03
在LENOVO01上面的操作:
ssh-copy-id -i root@LENOVO01
ssh-copy-id -i root@LENOVO02
ssh-copy-id -i root@LENOVO03
经验之谈:使用wq来强制保存vi编辑器编辑的文件
总结:
免密码登录:
LENOVO01~>LENOVO01,LENOVO02,LENOVO03
LENOVO02~>LENOVO02,LENOVO03
LENOVO03~>LENOVO03
--------
将LENOVO01上面的jdk同步到LENOVO02和LENOVO03上面的/opt目录下面
通过scp远程拷贝的命令:
scp -r /opt/jdk root@LENOVO02:/opt/
scp -r /opt/jdk root@LENOVO03:/opt/
同时将环境变量文件也拷贝到LENOVO02和LENOVO03上面的/etc/profile.d目录下面
scp /etc/profile.d/bigdata.sh root@LENOVO02:/etc/profile.d/
scp /etc/profile.d/bigdata.sh root@LENOVO03:/etc/profile.d/
为了让LENOVO02和LENOVO03上面的jdk生效,执行以下动作
source /etc/profile.d/bigdata.sh
第二步:配置ZK,在LENOVO01上面进行配置,同步到其它两台机器(同步:scp 跨越多台机器拷贝)
1°、解压:tar -zxvf zookeeper-3.4.6.tar.gz
2°、在conf目录下创建一个配置文件zoo.cfg
dataDir=/opt/zookeeper/data
新增如下内容
server.101=LENOVO01:2888:3888
server.102=LENOVO02:2888:3888
server.103=LENOVO03:2888:3888
server----》zk服务器
说明:约定~>ip地址最后一段作为集群中zk的唯一标识
101/102/103 ---->zk集群中每一台zk的id标识
LENOVO01/2/3--->zk集群中的每一台zk的主机名或者ip地址
2888 ----->集群间各个server之间通信的端口
3888 ----->选举leader的通信端口
3°、在/opt/zookeeper目录下创建一个data目录,用于存放zk数据
4°、在data目录下绑定当前机器的zk-id(在myid下存储当前机器的唯一标识)
touch data/myid
将LENOVO01对应的zk-id添加进data/myid文件
5°、将LENOVO01配置好的整个目录拷贝到LENOVO02和LENOVO03中去
scp -r /opt/zookeeper root@LENOVO02:/opt
scp -r /opt/zookeeper root@LENOVO03:/opt
6°、根据在zoo.cfg中的配置,修改data/myid文件中的对应id值
其中LENOVO02----->102
其中LENOVO03----->103
7°、分别在LENOVO01~LENOVO03的机器上面启动zk服务
zkServer.sh start
启动之后可以通过zkServer.sh status查看每一台zk的角色
有一个leader和两个follower
要达到的效果:
①在任意一台zookeeper server中,通过客户端连接,在其上手动创建一个znode,观察其余两台server中是否出现了同样的znode
zkCli.sh -server LENOVO01:2181
②这三台zookeeper server中,杀死leader所对应的进程(zkServer.sh stop),另外两台follower的server必然重新选举出新的leader,另外一台就是follower