ZooKeeper 是一个分布式数据一致性解决方案,致力于为分布式应用提供一个高性能、高可用,且具有严格顺序访问控制能力的分布式协调服务。
ZooKeeper 的翻译其实也是「动物园管理员」,最初由雅虎研究院开发,是 Google Chubby 的开源版实现,后来托管到 Apache 基金会。
分布式应用程序可以基于 ZooKeeper 实现数据发布与订阅、负载均衡、命名服务、分布式协调与通知、集群管理、Leader选举、分布式锁、分布式队列等功能。
ZooKeeper
在部署 HBase 数据库前需要先部署 ZooKeeper,需要注意的是,因为 ZooKeeper 本身也是选举机制,因此部署 ZooKeeper 的节点数量应该为单数。
规划
hostname | IP |
---|---|
hadoop1 | 10.10.10.11 |
hadoop2 | 10.10.10.12 |
hadoop3 | 10.10.10.13 |
下载
从官方下载二进制包
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
解压到安装目录
sudo tar xf apache-zookeeper-3.7.1-bin.tar.gz -C /opt/
授权
sudo chown -R $USER:$USER /opt/apache-zookeeper-3.7.1-bin/
配置
先行配置
## 创建数据存储目录
mkdir /opt/apache-zookeeper-3.7.1-bin/data
配置文件
## 修改主配置
vim /opt/apache-zookeeper-3.7.1-bin/conf/zoo.cfg
## 写入以下内容
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/apache-zookeeper-3.7.1-bin/data
clientPort=2181
4lw.commands.whitelist=stat, ruok, conf, isro, mntr
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888
分发至所有节点
sudo rsync -av /opt/apache-zookeeper-3.7.1-bin root@hadoop2:/opt/
sudo rsync -av /opt/apache-zookeeper-3.7.1-bin root@hadoop3:/opt/
小贴士:如果rsync
命令的源目录加末尾的/
则默认为传送的为目录中的全部文件,如果不加/
则默认为传送文件夹及其中的内容。
配置集群 ID(在三个节点分别进行操作)
## 节点 1(hadoop1)
echo "1" > /opt/apache-zookeeper-3.7.1-bin/data/myid
## 节点 2(hadoop2)
echo "2" > /opt/apache-zookeeper-3.7.1-bin/data/myid
## 节点 3(hadoop3)
echo "3" > /opt/apache-zookeeper-3.7.1-bin/data/myid
编写集群管理脚本
sudo vim /usr/local/bin/zk
## 写入以下内容
#!/bin/bash
ZK_PATH="/opt/apache-zookeeper-3.7.1-bin/bin/zkServer.sh"
case $1 in
"start"){
for i in hadoop1 hadoop2 hadoop3
do
echo ---------- $i Zookeeper Cluster Push Starting ----------
ssh $i "$ZK_PATH start"
done
}
;;
"stop"){
for i in hadoop1 hadoop2 hadoop3
do
echo ---------- $i Zookeeper Cluster Push Stoping ----------
ssh $i "$ZK_PATH stop"
done
}
;;
"status"){
for i in hadoop1 hadoop2 hadoop3
do
echo ---------- $i Zookeeper Cluster Push Stating ----------
ssh $i "$ZK_PATH status"
done
}
;;
esac
## 授权
sudo chmod +x /usr/local/bin/zk
服务
启动集群
zk start
检查状态
zk status
可以看到其中两个状态为 follower 另一个为 leader 。
测试
可以使用命令行客户端测试 deleteall
命令慎用,仅供参考。
zkCli.sh
## 查询存储
[zk: localhost:2181(CONNECTED) 0] ls /
[hbase, zookeeper]
## 删除存储
[zk: localhost:2181(CONNECTED) 1] deleteall /hbase
附录
参考链接
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2022-11-11 14:12 PM