linux下分布式Zookeeper安装和配置教程 超、凢脫俗 2021-07-26 20:42 387阅读 0赞 ## 分布式安装部署 ## **1.集群规划** 在hadoop101、hadoop102和hadoop103三个节点上部署Zookeeper。 **2.解压安装** (1)解压Zookeeper安装包到/opt/module/目录下 [atguigu@hadoop101 software]$ tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/module/ (2)同步/opt/module/zookeeper-3.4.10目录内容到hadoop103、hadoop104 [atguigu@hadoop101 module]$ xsync zookeeper-3.4.10/ 3.配置服务器编号 (1)在/opt/module/zookeeper-3.4.10/这个目录下创建zkData [atguigu@hadoop101 zookeeper-3.4.10]$ mkdir -p zkData (2)在/opt/module/zookeeper-3.4.10/zkData目录下创建一个myid的文件 [atguigu@hadoop101 zkData]$ touch myid 添加myid文件,注意一定要在linux里面创建,在notepad++里面很可能乱码 (3)编辑myid文件 [atguigu@hadoop101 zkData]$ vi myid 在文件中添加与server对应的编号:1 (4)拷贝配置好的zookeeper到其他机器上 [atguigu@hadoop101 zkData]$ xsync myid 并分别在hadoop102、hadoop103上修改myid文件中内容为2、3 4.配置zoo.cfg文件 (1)重命名/opt/module/zookeeper-3.4.10/conf这个目录下的zoo\_sample.cfg为zoo.cfg [atguigu@hadoop101 conf]$ mv zoo_sample.cfg zoo.cfg (2)打开zoo.cfg文件 [atguigu@hadoop101 conf]$ vim zoo.cfg 修改数据存储路径配置 dataDir=/opt/module/zookeeper-3.4.10/zkData 增加如下配置 #######################cluster########################## server.1=hadoop101:2888:3888 server.2=hadoop102:2888:3888 server.3=hadoop103:2888:3888 (3)同步zoo.cfg配置文件 [atguigu@hadoop101 conf]$ xsync zoo.cfg (4)配置参数解读 > server.A=B:C:D。 > > **A**是一个数字,表示这个是第几号服务器; > > 集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。 > > **B**是这个服务器的地址; > > **C**是这个服务器Follower与集群中的Leader服务器交换信息的端口; > > **D**是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。 4.集群操作 (1)分别启动Zookeeper [atguigu@hadoop101 zookeeper-3.4.10]$ bin/zkServer.sh start [atguigu@hadoop102 zookeeper-3.4.10]$ bin/zkServer.sh start [atguigu@hadoop103 zookeeper-3.4.10]$ bin/zkServer.sh start (2)查看状态 [atguigu@hadoop101 zookeeper-3.4.10]# bin/zkServer.sh status JMX enabled by default Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg Mode: follower [atguigu@hadoop102 zookeeper-3.4.10]# bin/zkServer.sh status JMX enabled by default Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg Mode: leader [atguigu@hadoop103 zookeeper-3.4.5]# bin/zkServer.sh status JMX enabled by default Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg Mode: follower ## 客户端命令行操作 ## <table style="margin-left:5.4pt;"> <tbody> <tr> <td style="vertical-align:top;width:163.05pt;"> <p style="margin-left:0cm;">命令基本语法</p> </td> <td style="vertical-align:top;width:248.05pt;"> <p style="margin-left:0cm;">功能描述</p> </td> </tr> <tr> <td style="vertical-align:top;width:163.05pt;"> <p style="margin-left:0cm;">help</p> </td> <td style="vertical-align:top;width:248.05pt;"> <p style="margin-left:0cm;">显示所有操作命令</p> </td> </tr> <tr> <td style="vertical-align:top;width:163.05pt;"> <p style="margin-left:0cm;">ls path [watch]</p> </td> <td style="vertical-align:top;width:248.05pt;"> <p style="margin-left:0cm;">使用 ls 命令来查看当前znode中所包含的内容</p> </td> </tr> <tr> <td style="vertical-align:top;width:163.05pt;"> <p style="margin-left:0cm;">ls2 path [watch]</p> </td> <td style="vertical-align:top;width:248.05pt;"> <p style="margin-left:0cm;">查看当前节点数据并能看到更新次数等数据</p> </td> </tr> <tr> <td style="vertical-align:top;width:163.05pt;"> <p style="margin-left:0cm;">create</p> </td> <td style="vertical-align:top;width:248.05pt;"> <p style="margin-left:0cm;">普通创建</p> <p style="margin-left:0cm;">-s 含有序列</p> <p style="margin-left:0cm;">-e 临时(重启或者超时消失)</p> </td> </tr> <tr> <td style="vertical-align:top;width:163.05pt;"> <p style="margin-left:0cm;">get path [watch]</p> </td> <td style="vertical-align:top;width:248.05pt;"> <p style="margin-left:0cm;">获得节点的值</p> </td> </tr> <tr> <td style="vertical-align:top;width:163.05pt;"> <p style="margin-left:0cm;">set</p> </td> <td style="vertical-align:top;width:248.05pt;"> <p style="margin-left:0cm;">设置节点的具体值</p> </td> </tr> <tr> <td style="vertical-align:top;width:163.05pt;"> <p style="margin-left:0cm;">stat</p> </td> <td style="vertical-align:top;width:248.05pt;"> <p style="margin-left:0cm;">查看节点状态</p> </td> </tr> <tr> <td style="vertical-align:top;width:163.05pt;"> <p style="margin-left:0cm;">delete</p> </td> <td style="vertical-align:top;width:248.05pt;"> <p style="margin-left:0cm;">删除节点</p> </td> </tr> <tr> <td style="vertical-align:top;width:163.05pt;"> <p style="margin-left:0cm;">rmr</p> </td> <td style="vertical-align:top;width:248.05pt;"> <p style="margin-left:0cm;">递归删除节点</p> </td> </tr> </tbody> </table> 1.启动客户端 [atguigu@hadoop103 zookeeper-3.4.10]$ bin/zkCli.sh 2.显示所有操作命令 [zk: localhost:2181(CONNECTED) 1] help 3.查看当前znode中所包含的内容 [zk: localhost:2181(CONNECTED) 0] ls / [zookeeper] 4.查看当前节点详细数据 [zk: localhost:2181(CONNECTED) 1] ls2 / [zookeeper] cZxid = 0x0 ctime = Thu Jan 01 08:00:00 CST 1970 mZxid = 0x0 mtime = Thu Jan 01 08:00:00 CST 1970 pZxid = 0x0 cversion = -1 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 0 numChildren = 1 5.分别创建2个普通节点 [zk: localhost:2181(CONNECTED) 3] create /sanguo "jinlian" Created /sanguo [zk: localhost:2181(CONNECTED) 4] create /sanguo/shuguo "liubei" Created /sanguo/shuguo 6.获得节点的值 [zk: localhost:2181(CONNECTED) 5] get /sanguo jinlian cZxid = 0x100000003 ctime = Wed Aug 29 00:03:23 CST 2018 mZxid = 0x100000003 mtime = Wed Aug 29 00:03:23 CST 2018 pZxid = 0x100000004 cversion = 1 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 7 numChildren = 1 [zk: localhost:2181(CONNECTED) 6] [zk: localhost:2181(CONNECTED) 6] get /sanguo/shuguo liubei cZxid = 0x100000004 ctime = Wed Aug 29 00:04:35 CST 2018 mZxid = 0x100000004 mtime = Wed Aug 29 00:04:35 CST 2018 pZxid = 0x100000004 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 6 numChildren = 0 7.创建短暂节点 [zk: localhost:2181(CONNECTED) 7] create -e /sanguo/wuguo "zhouyu" Created /sanguo/wuguo (1)在当前客户端是能查看到的 [zk: localhost:2181(CONNECTED) 3] ls /sanguo [wuguo, shuguo] (2)退出当前客户端然后再重启客户端 [zk: localhost:2181(CONNECTED) 12] quit [atguigu@hadoop104 zookeeper-3.4.10]$ bin/zkCli.sh (3)再次查看根目录下短暂节点已经删除 [zk: localhost:2181(CONNECTED) 0] ls /sanguo [shuguo] 8.创建带序号的节点 (1)先创建一个普通的根节点/sanguo/weiguo [zk: localhost:2181(CONNECTED) 1] create /sanguo/weiguo "caocao" Created /sanguo/weiguo (2)创建带序号的节点 [zk: localhost:2181(CONNECTED) 2] create -s /sanguo/weiguo/xiaoqiao "jinlian" Created /sanguo/weiguo/xiaoqiao0000000000 [zk: localhost:2181(CONNECTED) 3] create -s /sanguo/weiguo/daqiao "jinlian" Created /sanguo/weiguo/daqiao0000000001 [zk: localhost:2181(CONNECTED) 4] create -s /sanguo/weiguo/diaocan "jinlian" Created /sanguo/weiguo/diaocan0000000002 如果原来没有序号节点,序号从0开始依次递增。如果原节点下已有2个节点,则再排序时从2开始,以此类推。 9.修改节点数据值 [zk: localhost:2181(CONNECTED) 6] set /sanguo/weiguo "simayi" 10.节点的值变化监听 (1)在hadoop104主机上注册监听/sanguo节点数据变化 [zk: localhost:2181(CONNECTED) 26] [zk: localhost:2181(CONNECTED) 8] get /sanguo watch (2)在hadoop103主机上修改/sanguo节点的数据 [zk: localhost:2181(CONNECTED) 1] set /sanguo "xisi" (3)观察hadoop104主机收到数据变化的监听 WATCHER:: WatchedEvent state:SyncConnected type:NodeDataChanged path:/sanguo 11.节点的子节点变化监听(路径变化) (1)在hadoop104主机上注册监听/sanguo节点的子节点变化 [zk: localhost:2181(CONNECTED) 1] ls /sanguo watch [aa0000000001, server101] (2)在hadoop103主机/sanguo节点上创建子节点 [zk: localhost:2181(CONNECTED) 2] create /sanguo/jin "simayi" Created /sanguo/jin (3)观察hadoop104主机收到子节点变化的监听 WATCHER:: WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/sanguo 12.删除节点 [zk: localhost:2181(CONNECTED) 4] delete /sanguo/jin 13.递归删除节点 [zk: localhost:2181(CONNECTED) 15] rmr /sanguo/shuguo 14.查看节点状态 [zk: localhost:2181(CONNECTED) 17] stat /sanguo cZxid = 0x100000003 ctime = Wed Aug 29 00:03:23 CST 2018 mZxid = 0x100000011 mtime = Wed Aug 29 00:21:23 CST 2018 pZxid = 0x100000014 cversion = 9 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 4 numChildren = 1
还没有评论,来说两句吧...