zookeeper的集群部署
- 上传安装包到集群服务器
- 解压
- 修改配置文件
进入zookeeper的安装目录的conf目录
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
initLimit=10
syncLimit=5
#数据存储到哪里
dataDir=/root/zkdata
clientPort=2181
#autopurge.purgeInterval=1
server.1=hdp20-01:2888:3888
server.2=hdp20-02:2888:3888
server.3=hdp20-03:2888:3888
对3台节点,都创建目录 mkdir /root/zkdata
对3台节点,在工作目录中生成myid文件,但内容要分别为各自的id: 1,2,3
hdp20-01上: echo 1 > /root/zkdata/myid
hdp20-02上: echo 2 > /root/zkdata/myid
hdp20-03上: echo 3 > /root/zkdata/myid
从hdp20-01上scp安装目录到其他两个节点
scp -r zookeeper-3.4.6/ hdp20-02$PWD
scp -r zookeeper-3.4.6/ hdp20-03:$PWD
zookeeper没有提供自动批量启动脚本,需要手动一台一台地起zookeeper进程
在每一台节点上,运行命令:
bin/zkServer.sh start
启动后,用jps应该能看到一个进程:QuorumPeerMain
但是,光有进程不代表zk已经正常服务,需要用命令检查状态:
bin/zkServer.sh status
能看到角色模式:为leader或follower,即正常了。
Zookeeper的功能:
1.管理客户端的数据(小量)
2.为客户端监控数据节点,当节点有变化的时候,通知客户端.
zk选举机制及作用:
数据管理功能:
创建节点: create /aaa 'ppppp'
查看节点下的子节点: ls /aaa
获取节点的value: get /aaa
修改节点的value: set /aaa 'mmmmm'
删除节点:rmr /aaa
数据监听功能:
ls /aaa watch
## 查看/aaa的子节点的同时,注册了一个监听子“节点变化事件”的监听器
get /aaa watch
## 获取/aaa的value的同时,注册了一个监听“节点value变化事件”的监听器
注意:注册的监听器在正常收到一次所监听的事件后,就失效
znode类型:
zookeeper中的znode有多种类型:
- PERSISTENT 持久的:创建者就算跟集群断开联系,该类节点也会持久存在与zk集群中
- EPHEMERAL 短暂的:创建者一旦跟集群断开联系,zk就会将这个节点删除
- SEQUENTIAL 带序号的:这类节点,zk会自动拼接上一个序号,而且序号是递增的
组合类型:
PERSISTENT :持久不带序号
EPHEMERAL :短暂不带序号
PERSISTENT 且 SEQUENTIAL :持久且带序号
EPHEMERAL 且 SEQUENTIAL :短暂且带序号
zookeeper的场景编程