一、任务描述
本实验任务主要完成基于ubuntu环境的Zookeeper节点管理工作。通过完成本实验任务,要求学生熟练掌握Zookeeper节点管理的方法,为后续实验的开展奠定zookeeper平台基础,也为从事大数据平台运维工程师、大数据技术支持工程师等岗位工作奠定夯实的技能基础。
二、任务目标
1、掌握Zookeeper节点管理的相关命令
三、任务环境
Ubuntu、Zookeeper3.4.5
四、任务分析
Apache Zookeeper 由 Apache Hadoop 的 Zookeeper 子项目发展而来,现已经成为 Apache 的顶级项目,它是一个开放源码的分布式应用程序协调服务,是Google Chubby的一个开源实现。它是一个为分布式应用提供一致性服务的组件,提供的功能包括:配置管理,名字服务,提供分布式同步、队列管理、集群管理等。
学会Zookeeper节点管理的相关命令。
五、 任务实施
步骤1、启动Zookeeper
进入到zookeeper bin文件下,通过命令【./zkServer.sh start】来启动服务。如图1所示。
图1 启动Zookeeper
利用【./zkServer.sh status】查看Zookeeper节点状态。如图2所示。
图2 查看Zookeeper节点状态
步骤2、Zookeeper节点操作
本地进入zookeeper bin文件下使用命令【./zkCli.sh】连接服务端。如图3所示。
图3 本地连接服务端
连接本地服务端之后,使用命令【-help 】查看所有命令。如图4所示。
图4 查看所有命令
连接本地服务端之后,使用命令【ls / 】查看当前节点([zookeeper]为默认节点)命令。如图5所示。
name | Value |
cZxid | 创建节点时的事务id |
pZxid | 子节点列表最后一次被修改的事务id |
cversion | 节点版本号 |
dataCersion | 数据版本号 |
aclVerson | acl权限版本号 |
图5 查看当前节点
连接本地服务端之后,使用命令【stat /zookeeper】查看当前节点状态([zookeeper]为默认节点)命令。
如图6所示。
图6 查看当前节点状态
连接本地服务端之后,使用命令【create -e /node_1 123 】创建临时节点node_1,并携带数据123,使用命令。【get /node_1】验证节点及其数据是否创建成功,临时节点不能拥有子节点(创建报错),临时节点会在客户端会话结束后被删除。如图7所示。
图7 创建临时节点
连接本地服务端之后,使用命令【create /node_2 234】创建节点node_2,并携带数据234,使用命令。【stat /node_2】查看节点状态。如图8所示。
图8 创建节点
连接本地服务端之后,使用命令【create -e /node_2/node_2_1 345】创建节点node_2_1,并携带数据345,使用命令。【stat /node_2/node_2_1】查看新建的临时节点状态。如图9所示。
图9 创建临时子节点
连接本地服务端之后,使用命令【set /node_2 999】修改节点相关指定,并携带数据999,使用命令。【get /node_2】查看节点状态,如果我们多次修改,会发现 dataVersion ,也就是数据版本,在不停得发生变化(自增),如果我们在set的时候手动去指定了版本号,就必须和上一次查询出来的结果一致,否则 就会报错。如图10所示。
图10 修改节点数据
连接本地服务端之后,使用命令【delete /node_2/node_2_1】删除节点,可在后面指定版本号,delete只能删除不包含子节点的节点,如果要删除的节点包含子节点,使用rmr命令,使用命令,【ls /node_2】查看节点状态。如图11所示。
图11 删除节点
♥ 知识链接
ZooKeeper是以Fast Paxos算法为基础的,Paxos 算法存在活锁的问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而Fast Paxos作了一些优化,通过选举产生一个leader (领导者),只有leader才能提交proposer,具体算法可见Fast Paxos。
♥ 温馨提示
在Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据。