【分布式】Zookeeper分布式安装部署
本文介绍了zookeeper完全分布式的搭建,基于hadoop集群,在三台机器上部署zookeeper。
环境准备:
(1)VMware Workstation Pro17(其他也可)
(2)Centos7
(3)FinalShell
(4)hadoop集群(具体搭建看我以前的文章:Hadoop完全分布式的搭建(零基础)https://blog.csdn.net/fukase_mio/article/details/143310087)
- Zookeeper分布式安装部署
1.集群规划
在node1、node2和node3三个节点上部署Zookeeper。
- 解压安装
下载zookepper软件,解压至/opt/module/
[hduser@node1 software]$ tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz -C /opt/module/
在module下找到已解压的zookepper软件
图片1
将文件名改为zookeeper-3.8.4
[hduser@node1 module]$mv apache-zookeeper-3.8.4-bin zookeeper-3.8.4
同步/opt/module/zookeeper-3.8.4目录内容到node2和node3上
[hduser@node1 module]$ xsync zookeeper-3.8.4/
xsync编写见我之前的文章:Hadoop完全分布式的搭建
3.配置服务器编号
在zookeeper下创建一个存放数据的文件夹
[hduser@node1 zookeeper-3.8.4]$ mkdir -p zkData
图片2
在刚刚创建的zkData下面创建myid,并给三台虚拟机编号
[hduser@node1 zkData]$ touch myid
[hduser@node1 zkData]$ vi myid
(添加myid文件,注意一定要在linux里面创建)
在文件中添加与server对应的编号如node1中输入1,注意不要有其他空格,回车等。
图片3
拷贝配置好的zookeeper到其他机器上
[hduser@node1 zkData]$ xsync myid
并分别在node2和node3上修改myid文件中内容为与server对应的编号
图片4
图片5
4.配置zoo.cfg文件
(1)重命名/opt/module/zookeeper-3.8.4/conf这个目录下的zoo_sample.cfg为zoo.cfg
[hduser@node1 conf]$ mv zoo_sample.cfg zoo.cfg
修改/crof中的zoo.cfg
[hduser@node1 conf]$vim zoo.cfg
修改数据存储路径配置
图片6
增加以下内容:
图片7
将zoo.cfg分发到三台虚拟机上
[hduser@node1 conf]$ xsync zoo.cfg
- 配置参数解读
server.A=B:C:D。
A是一个数字,表示这个是第几号服务器;
集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。
B是这个服务器的ip地址;
C是这个服务器与集群中的Leader服务器交换信息的端口;
D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口
(5)配置Zookeeper环境变量
[hduser@node1 conf]$ sudo vim /etc/profile.d/my_env.sh
图片8
分发环境变量并source
[hduser@node1 zkData]$ xsync /etc/profile.d/my_env.sh
5.启动zookeeper
(1)分别启动Zookeeper
[hduser@node1 zookeeper-3.8.4]$ bin/zkServer.sh start
[hduser@node2 zookeeper-3.8.4]$ bin/zkServer.sh start
[hduser@node3 zookeeper-3.8.4]$ bin/zkServer.sh start
图片9
(2)查看状态
[hduser@node1 zookeeper-3.8.4]# bin/zkServer.sh status
群起zookeeper脚本(创建方式与xsync相似,可去我以前的文章找)
#!/bin/bash
case $1 in
"start"){
for i in node1 node2 node3
do
echo ---------------zookeeper $i 启动------------------
ssh $i "/opt/module/zookeeper-3.8.4/bin/zkServer.sh start"
done
}
;;
"stop"){
for i in node1 node2 node3
do
echo ---------------zookeeper $i 停止------------------
ssh $i "/opt/module/zookeeper-3.8.4/bin/zkServer.sh stop"
done
};;
"status"){
for i in node1 node2 node3
do
echo ---------------zookeeper $i 状态------------------
ssh $i "/opt/module/zookeeper-3.8.4/bin/zkServer.sh status"
done
};;
Esac
更多推荐
所有评论(0)