一、任务描述
本实验任务主要完成基于ubuntu环境的Zookeeper观察者的使用的工作。通过完成本实验任务,要求学生熟练掌握Zookeeper观察者的使用的方法,为后续实验的开展奠定zookeeper平台基础,也为从事大数据平台运维工程师、大数据技术支持工程师等岗位工作奠定夯实的技能基础。
二、任务目标
1、掌握Zookeeper观察者的相关特性
三、任务环境
Ubuntu(三台节点:mater:192.168.0.3,slave1:192.168.0.2,slave2:192.168.0.4)、Zookeeper3.4.5
四、任务分析
Apache Zookeeper 由 Apache Hadoop 的 Zookeeper 子项目发展而来,现已经成为 Apache 的顶级项目,它是一个开放源码的分布式应用程序协调服务,是Google Chubby的一个开源实现。它是一个为分布式应用提供一致性服务的组件,提供的功能包括:配置管理,名字服务,提供分布式同步、队列管理、集群管理等。
学会Zookeeper观察者的使用。
五、 任务实施
步骤1、启动Zookeeper集群
分别在三台节点下进入/simple/zookeeper/conf使用命令【vi zoo.cfg】进行zoo.cfg配置文件修改,设置集群配置参数,添加集群配置。如图1所示。
图1 配置zoo.cfg文件
分别在三台节点的zookeeper/目录下新建zk_data文件夹,并在此zk_data/目录下新建myid文件。如图2所示。
图2 创建myid文件
在主节点zookeeper文件夹zk_data/下,对myid文件进行编译【echo 1 >> myid】,注意,myid的值要与zoo.cfg中的server.1的值对应,以及对应ip。如图3所示。
图3 配置主节点myid文件
相同的步骤在第二个节点,为myid文件赋值2。如图4所示。
图4 配置slave1节点myid文件
相同的步骤在第三个节点,为myid文件赋值3。如图5所示。
图5 配置myid文件3
分别进入三个节点到zookeeper bin文件下,通过命令【./zkServer.sh start】来启动服务。如图6-8所示。
图6 启动Zookeeper集群
图7 启动Zookeeper集群
图8 启动Zookeeper集群
在三台节点上利用【./zkServer.sh status】查看Zookeeper节点状态。如图9-11所示。
图9 master查看Zookeeper节点状态
图10 slave1查看Zookeeper节点状态
图11 slave2查看Zookeeper节点状态
步骤2、Zookeeper观察者模式
本地进入zookeeper bin文件下使用命令【./zkCli.sh】连接本地服务端。如图12所示。
图12 本地连接服务端
在本地客户端,使用命令【ls / watch】查看根目录下有多少节点并且在观察者模式下。如图13所示。
图13 查看根目录节点
在slave1客户端,使用命令【create /node 123 】创建一个新节点。如图14所示。
图14 创建新节点
然后我们在本地客户端可以看到,在观察者模式下监视到了根目录下节点发生变化。如图15所示。
图15 监视日志
由于观察者模式特性所致,注册一次只能用一次,也就是命令使用一次,只监听一次,监听到了就打印内容,打印结束就退出了监听。所以根目录下再次变化不会监听到,在slave1客户端使用命令【create /node2 123 】再次新建一个节点,并在本地客户端查看监听日志无变化。如图16-17所示。
图16 再次创建节点
图17 再次查看监听日志
连接本地服务端之后,使用命令【-help 】查看所有可使用watch操作的命令,可以触发watcher的命令包括create,delete,set。如图18所示。
图18 查看可注册watcher命令
♥ 知识链接
Watcher是Zookeeper用来实现distribute lock, distribute configure, distribute queue等应用的主要手段。要监控data_tree上的任何节点的变化(节点本身的增加,删除,数据修改,以及孩子节点的变化)都可以在获取该数据时注册一个Watcher。
♥ 温馨提示
一旦该节点数据变化,Follower会发送一个notification response,client收到notification响应,则会查找对应的Watcher并回调他们。


















