大数据学习05_zookeeper2

前一篇大体介绍了什么是zookeeper,以及其特点,下面回顾一下zookeeper的客户端操作,先用finalshell远程连接Linux主机(node01)。

    1.进行客户端操作之前首先要明确zookeeper的数据模型:

        1.1ZooKeeper 的数据模型,在结构上和标准文件系统的非常相似,拥有一个层 次的命名空间,都是采用树形层次结构.

        1.2

         1.3ZooKeeper 树中的每个节点被称为—个Znode。和文件系统的目录树一样,ZooKeeper 树 中的每个节点可以拥有子节点。

       2.znode的组成及特点:

          2.1每个 Znode 由 3 部分组成:

            stat:此为状态信息, 描述该 Znode 的版本, 权限等信息

            data:与该 Znode 关联的数据

            children:该 Znode 下的子节点

           2.2Znode 通过路径引用,如同 Unix 中的文件路径。路径必须是绝对的,因此他 们必须由 斜杠字符来开头

           2.3Znode 存储数据大小有限制。

           2.4Znode 兼具文件和目录两种特点。既像文件一样维护着数据、元信息、ACL、 时间戳等 数据结构,又像目录一样可以作为路径标识的一部分,并可以具有 子 Znode

      3.zookeeper客户端操作:

         3.1首先要进入到zookeeper安装目录,并且把zookeeper打开(命令:bin/zkCli.sh -server node01:2181)2181端口是固定的

         

        如图所示就是zookeeper正确打开。

         ls /  命令:列出Path下所有子Znode

            

         create /hello  gaoshuai 命令:创建永久节点,其值是:gaoshuai

            

         create -e /abc 123 命令:创建零时节点,值为:123(零时节点在会话结束之后会自动删除)

             

         create -s /gaoshuai 123  命令:创建永久序列化节点,值为:123

         create -e -s /gaoshuai 123        命令:创建临时序列化节点,值为:123

         set /gaoshuai zookeeper           命令:修改节点数据为zookeeper

         修改之后可以看到数据版本+1

         delete /hello  命令:删除节点, 如果要删除的节点有子Znode则无法删除

         rmr /abc        命令:删除节点, 如果有子Znode则递归删除

         histroy           命令:列出历史记录

           

          3.2节点属性:每个 znode 都包含了一系列的属性,通过命令 get,可以获得节点的属性。

               dataVersion:数据版本号,每次对节点进行 set 操作,dataVersion 的值都会增加 1(即使设 置的是相同的数据),可有效避免了数据更新时出现的先后顺序问题。

               cversion :子节点的版本号。当 znode 的子节点有变化时,cversion 的值就会增加 1。

               aclVersion :ACL 的版本号。

               cZxid :Znode 创建的事务 id。

               ctime:节点创建时的时间戳.

               mtime:节点最新一次更新发生时的时间戳.

          

     4.watch机制

             Zookeeper的watch机制 通知类似于数据库中的触发器, 对某个Znode设置 Watcher , 当Znode发生变化的时候, WatchManager 会调用对应的 Watcher 当Znode发生删除, 修改, 创建, 子节点修改的时候, 对应的 Watcher 会得到通知 Watcher 的特点 一次性触发 一个 Watcher 只会被触发一次, 如果需要继续监听, 则需要再次添加 Watcher 事件封装: Watcher 得到的事件是被封装过的, 包括三个内容 keeperState, eventType, path

只有一个细节就是开启zookeeper的时候要把Linux集群开启,不能只开一台虚拟机否则会报错。

    

           

         

          

原文地址:https://www.cnblogs.com/g414056667/p/13563025.html