ZooKeeper 是一个开源的分布式协调服务框架。
ZooKeeper是 Hadoop项目中的一个子项目,是 Hadoop集群管理的一个必不可少的模块,它主要用来解决分布式集群中应用系统的一致性问题。
ZooKeeper本质上是一个分布式的小文件存储系统(Zookeeper=文件系统+监听机制)。但并不是用来专门存储数据,它的作用主要是用来维护和监控你存储的数据的状态变化。从而可以设计出多种多样的分布式的数据管理模型。
Zookeeper提供了基于层次型的目录树(类似于文件系统)的数据存储结构,并且可以对树中的节点进行有效管理,从而用来维护和监控存储的数据的状态变化。通过这些数据状态的变化,可以达到基于数据的集群管理、数据发布订阅、负载均衡、统一命名服务、分布式配置管理、分布式消息队列、分布式锁、分布式协调、Master选举等功能。
Zookeeper的安装方式有很多,这里使用 Docker进行安装使用。
1) 查找 Zookeeper镜像,查看本地镜像
[root@centos7 ~]# docker search zookeeper
...
[root@centos7 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis6 v6.0.8 5452fb8a98eb 10 hours ago 104MB
zookeeper 3.6.3 25511be3b9ee 2 weeks ago 269MB
2)拉取 Zookeeper镜像
没有镜像就拉取,有的话就省略这一步。
[root@centos7 ~]# docker pull zookeeper:3.6.3
3)创建并启动容器
[root@centos7 ~]# docker run -d --name zookeeper_v3.6.3 -p 192.168.198.110:2181:2181 zookeeper:3.6.3
9bb8ce0a893f93fe739b1ac3f665c5d6c83cae199f31662c28ad021313a86fea
[root@centos7 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9bb8ce0a893f zookeeper:3.6.3 "/docker-entrypoint.…" 8 seconds ago Up 6 seconds 2888/tcp, 3888/tcp, 192.168.198.110:2181->2181/tcp, 8080/tcp zookeeper_v3.6.3
4)进入启动好的 Zookeeper服务
[root@centos7 ~]# docker exec -it 9bb8ce0a893f /bin/bash
root@9bb8ce0a893f:/apache-zookeeper-3.6.3-bin# ls
LICENSE.txt NOTICE.txt README.md README_packaging.md bin conf docs lib
使用 ls命令查看了 Zookeeper目录结构:
其中 bin 和 conf 是我们平时经常使用的。
先进入 bin目录:
root@9bb8ce0a893f:/apache-zookeeper-3.6.3-bin# cd bin
root@9bb8ce0a893f:/apache-zookeeper-3.6.3-bin/bin# ls
README.txt zkCli.sh zkServer-initialize.sh zkSnapShotToolkit.cmd zkTxnLogToolkit.sh
zkCleanup.sh zkEnv.cmd zkServer.cmd zkSnapShotToolkit.sh
zkCli.cmd zkEnv.sh zkServer.sh zkTxnLogToolkit.cmd
其中:
然后使用 zkCli 客户端连接 Zookeeper服务(也可以使用绝对路径)。
root@9bb8ce0a893f:/apache-zookeeper-3.6.3-bin/bin# zkCli.sh -server 192.168.198.110:2181
Connecting to 192.168.198.110:2181
...
连接成功后,便可以使用命令与 ZK服务进行交互了。比如:
[zk: 192.168.198.110:2181(CONNECTED) 1] help
ZooKeeper -server host:port -client-configuration properties-file cmd args
addWatch [-m mode] path # optional mode is one of [PERSISTENT, PERSISTENT_RECURSIVE] - default is PERSISTENT_RECURSIVE
addauth scheme auth
close
config [-c] [-w] [-s]
connect host:port
create [-s] [-e] [-c] [-t ttl] path [data] [acl]
delete [-v version] path
deleteall path [-b batch size]
delquota [-n|-b] path
get [-s] [-w] path
getAcl [-s] path
getAllChildrenNumber path
getEphemerals path
history
listquota path
ls [-s] [-w] [-R] path
printwatches on|off
quit
reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*]
redo cmdno
removewatches path [-c|-d|-a] [-l]
set [-s] [-v version] path data
setAcl [-s] [-v version] [-R] path acl
setquota -n|-b val path
stat [-w] path
sync path
version
Command not found: Command not found help
更多常用 zkCli 命令,查看官方文档:https://zookeeper.apache.org/doc/r3.8.0/zookeeperCLI.html
– 求知若饥,虚心若愚。