Zookeeper集群搭建
文章目录
集群规划:目前我有hadoop1、hadoop2、hadoop3
三个节点,都部署Zookeeper
资源:
补充知识:
- Apache相关软件下载目录
一、上传Zookeeper
将zookeeper
上传到虚拟机的/opt/software
目录下,专门存放软件包的位置
rz
选择文件zookeeper进上传
补充知识:主要是通过lrzsz
-
sudo yum install lrzsz
如果上传时,出现apache-zookeeper-3.5.7-bin.tar.gz was skipped
错误,说明权限不够
可以用sudo rz
,因为上传的目录的所有权不是你
sudo rz
也可以修改拥有者
sudo chown 用户名:用户名 -R 目录
-R 是递归将该目录下的文件的拥有者全部一同修改
二、解压Zookeeper
将apache-zookeeper-3.5.7-bin.tar.gz
解压到/opt/module
tar -zxvf /opt/software/apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/
并进行重命名为zookeeper-3.5.7
mv apache-zookeeper-3.5.7-bin zookeeper-3.5.7
三、进入Zookeeper中创建一个zkData文件夹
1、在/opt/module/zookeeper-3.5.7
中创建一个zkData
,用来保存zookeeper的数据
cd /opt/module/zookeeper-3.5.7
mkdir zkData
2、在zkData目录下创建一个myid文档(作用:服务器的编号)
vim myid
在里面添加数值,作为你的主机的固定id号,一般从1开始依次往后递增,并分别在hadoop2、hadoop3中添加myid为2、3
1
注意:上下不要有空行,左右不要有空格
四、进入conf中,将zoo_simple.cfg进行重命名
1、重新命名/opt/module/zookeeper-3.5.7/conf
的zoo_sample.cfg
,改为zoo.cfg
mv zoo_sample.cfg zoo.cfg
五、配置zoo.cfg
1、打开zoo.cfg
vim zoo.cfg
修改数据存储路径
dataDir=/opt/module/zookeeper-3.5.7/zkData
添加集群节点信息
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888
2、补充知识:
- zoo.cfg详细解读
注意:myid中这个文件时放在==dataDir
==目录下的,zookeeper启动时会读取该文件,拿到里面的数据与zoo.cfg配置文件进行比较那个是server,因此为什么不能myid中上下左右不要空格了
六、进行分发zookeeper
将配置好的zookeeper分发到其他节点上
可以通过scp、rsync
都是可以的
详细请看linux远程拷贝命令
这里分别用scp和rsync进行分发
scp -rv /opt/module/zookeeper-3.5.7 hadoop2:/opt/module/
rsync -av /opt/module/zookeeper-3.5.7 hadoop3:/opt/module/
注意:hadoop2、hadoop3
是我自己的主机名,在/etc/hostname
进行修改了的,并在/etc/hosts
进行映射的
可看下面详细教程
七、修改hadoop2和hadoop3的myid
分别将修改成自己对应的myid,hadoop2和hadoop3
的myid是hadoop1的
八、集群操作
1、分别在Hadoop1、hadoop2、hadoop3中执行下面命令启动zookeeper
/opt/module/zookeeper-3.5.7/bin/zkServer.sh start
停止zkServer.sh stop
2、查看状态,需要在每一个节点中查看太麻烦了
/opt/module/zookeeper-3.5.7/bin/zkServer.sh status
九、启动、停止脚本
1、在$HOME/bin中创建脚本zk.sh,如果没有bin目录,需要自己创建一个
vim zk.sh
#!/bin/bash
case $1 in
"start"){
for i in hadooop1 hadoop2 hadoop3
do
echo "-----启动$i------"
ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh start"
done
}
;;
"stop"){
for i in hadoop1 hadoop2 hadoop3
do
echo "----停止$i----"
ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh stop"
done
}
;;
"status"){
for i in hadoop1 hadoop2 hadoop3
do
echo "-----查看$i状态-----"
ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh status"
done
}
;;
esac
注意:目前文件是没有执行权限的,默认创建的文件都是没有执行权限,因此我们需要增加文件的执行权限
相关知识可以查看umask
2、提高权限
chmod u+x zk.sh
$HOME/bin是在PATH路径上的,因此可以任何地方能执行
3、使用
zk.sh start
zk.sh status