zookeeper特点及结构

首先看一下zookeeper的特点图

zookeeper修改节点 zookeeper 节点_客户端


解释

(1)对于第一点,领导者是选举出来的,不像hadoop的NameNode是我们在配置文件中决定的

(2)半数节点就可以存货,则选择奇数的节点更合适,比如四台节点的运行需要三台,五台节点的运行也只需要三台。

(3)第三点和第五点的原因是zookeeper的数据传输采用事务的方法结构图如下

zookeeper修改节点 zookeeper 节点_zookeeper_02

每个节点是我们启动服务端后,通过客户端在服务端创建的,每个节点虽然是个目录,但是它可以保存1MB的数值,通过客户端的get命令可以获取某个节点的值

zookeeper客户端命令

再安装完zookeeper后,我们可以自己编写群起脚本,开启zookeeper服务端后,我们可以测试一下服务端命令,部分展示如下

zookeeper修改节点 zookeeper 节点_客户端_03


测试开始,我们先开启服务端

zookeeper修改节点 zookeeper 节点_zookeeper修改节点_04


我们再开启客户端 利用zkCli.sh

然后我们可以通过 create -e创建临时节点,如果我重启或者超时之后,这个节点就会消失

或者可以用create -s创建序列节点 ——乐观锁

利用get可以获取某个节点的值,虽然我们的节点是个目录,但是它可以储存一个M的值然后我们就可以测试zookeeper的真正作用了,比如监听某个服务端的节点node

首先我们创建一个节点test

zookeeper修改节点 zookeeper 节点_zookeeper修改节点_05

再另外一台服务器上通过ls -w test来监听一次这个test节点

zookeeper修改节点 zookeeper 节点_客户端_06

然后我们在hadoop102中在test里随便做点操作,比如再创建一个节点

zookeeper修改节点 zookeeper 节点_客户端_07

此时在hadoop103上因为我们监听这个节点,所以就会发现

zookeeper修改节点 zookeeper 节点_客户端_08


证明监听成功,但是注意的是我们这次监听为单次监听,如果想要循环保持监听,需要写java代码