N.1 分布式安装部署
0)前言环境准备 (1)前提环境要安装jdk,如果不配置环境变量的话,可以在zookeeper/bin目录下指定jdk路径。 有时候一个linux,有其他的同事安装了jdk,说以未来防止冲突,可以自己指定路径。 vi bin/zkEnv.sh #备注zkEnv.cmd是配置win的,zkEnv.sh是配置linux的 export JAVA_HOME=/usr/local/src/jdk1.8(换成你自己的jdk路径) (2)其实每一个组件都可以指定jdk的路径,只要在改组件的bin/目录下查找所有命令,然后用内容扫描工具对JAVA_HOME进行扫描,找的了该文件,就使用 export JAVA_HOME=xxx 导入路劲即可 第三方工具指定JDK路径思路.note 1)集群规划 在bigdata111、bigdata112和bigdata113三个节点上部署Zookeeper。 2)解压安装 (1)解压zookeeper安装包到/softWare/目录下 [itstar@bigdata111 softWare]$ tar -zxvf zookeeper-3.4.10.tar.gz -C /softWare/ (2)在/softWare/zookeeper-3.4.10/这个目录下创建zkData(由于存放数据的目录) mkdir -p zkData (3)重命名/softWare/zookeeper-3.4.10/conf这个目录下的zoo_sample.cfg为zoo.cfg 配置文件只识别zoo.cfg; mv zoo_sample.cfg zoo.cfg 3)配置环境变量 [root@bigdata111 softWare]$ vi /etc/profile export ZOOKEEPER_HOME=/softWare/zookeeper-3.4.10 export PATH=$PATH:$ZOOKEEPER_HOME/bin(也可以在原来的PATH后面拼接上去) :wq [root@bigdata111 softWare]$source /etc/profile 4)配置zoo.cfg文件修改 (1)具体配置: clientPort=2181 # 客户端端口号 主要用于hadoop或kafka等进行通信的 dataDir=/softWare/zookeeper-3.4.10/zkData server.1=bigdata111:2888:3888 # 添加集群地址 server.2=bigdata112:2888:3888 server.3=bigdata113:2888:3888 (2)配置参数解读 Server.A=B:C:D。 A是一个数字,表示这个是第几号(myid文件)服务器; B是这个服务器的ip地址; C是这个服务器与集群中的Leader服务器交换信息的端口; D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader, 而这个端口就是用来执行选举时服务器相互通信的端口。 集群模式下配置一个文件myid,这个文件在dataDir=/softWare/zookeeper-3.4.10/zkData目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。 5)集群操作 (1)在/softWare/zookeeper-3.4.10/zkData目录下创建一个myid的文件 touch myid 添加myid文件,注意一定要在linux里面创建,在notepad++里面很可能乱码 (2)编辑myid文件 vi myid 在文件中添加与server对应的编号:如 2 。 (3)拷贝配置好的zookeeper到其他机器上 scp -r zookeeper-3.4.10/ root@bigdata112.itstar.com:/softWare/ scp -r zookeeper-3.4.10/ root@bigdata113.itstar.com:/softWare/ 并分别修改myid文件中内容为3、4自定义。 (4)分别启动zookeeper [root@bigdata111 zookeeper-3.4.10]# bin/zkServer.sh start [root@bigdata112 zookeeper-3.4.10]# bin/zkServer.sh start [root@bigdata113 zookeeper-3.4.10]# bin/zkServer.sh start (5)查看状态 [root@bigdata111 zookeeper-3.4.10]# bin/zkServer.sh status JMX enabled by default Using config: /softWare/zookeeper-3.4.10/bin/../conf/zoo.cfg Mode: follower
[root@bigdata112 zookeeper-3.4.10]# bin/zkServer.sh status JMX enabled by default Using config: /softWare/zookeeper-3.4.10/bin/../conf/zoo.cfg Mode: leader
[root@bigdata113 zookeeper-3.4.5]# bin/zkServer.sh status JMX enabled by default Using config: /softWare/zookeeper-3.4.10/bin/../conf/zoo.cfg Mode: follower |
N.2 zookeeper命令操作
1)节点启动和关闭等命令 | |
(1)启动zookeeper:bin/zkServer.sh start 查看进程是否启动:jps 停止zookeeper:bin/zkServer.sh stop 查看该节点状态:bin/zkServer.sh status (2)启动客户端 bin/zkCli.sh #会进入命令行 退出客户端是 quit | |
2)客户端操作命令 | |
命令基本语法 | 功能描述 |
help | 显示所有操作命令 |
ls 目录 [watch] | 使用 ls 命令来查看当前znode中所包含的内容。 [watch]表示监听,可以在不同节点的进行监听。监控只能是开一次监控,就捕捉一次其它znode的行为,如果其它znode产生第二次行为,就监控不到,所以要在开一次监控。 |
ls2 目录 [watch] | 查看当前节点数据并能看到更新次数等数据 |
create [-s] [-e] 目录 数值 | 目录相当于key,数值相当于value。 [-s] 表示含有序列。 [-e] 表示临时(重启或者超时消失),默认情况下是永久 |
get 目录 [watch] | 获得节点的值,[watch]表示监听,可以在不同节点的进行监听, |
set 目录 新数值 | 设置节点的具体值 |
stat 目录 | 查看节点状态 |
delete 目录 | 删除节点 |
rmr 目录 | 递归删除节点 |
quit | 退出客户端 |
N.3 操作命令演示
1)启动客户端 [itstar@bigdata112 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)创建普通节点 [zk: localhost:2181(CONNECTED) 2] create /app1 "hello app1" Created /app1 [zk: localhost:2181(CONNECTED) 4] create /app1/server101 "192.168.1.101" Created /app1/server101 6)获得节点的值 [zk: localhost:2181(CONNECTED) 6] get /app1 hello app1 cZxid = 0x20000000a ctime = Mon Jul 17 16:08:35 CST 2017 mZxid = 0x20000000a mtime = Mon Jul 17 16:08:35 CST 2017 pZxid = 0x20000000b cversion = 1 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 10 numChildren = 1 [zk: localhost:2181(CONNECTED) 8] get /app1/server101 192.168.1.101 cZxid = 0x20000000b ctime = Mon Jul 17 16:11:04 CST 2017 mZxid = 0x20000000b mtime = Mon Jul 17 16:11:04 CST 2017 pZxid = 0x20000000b cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 13 numChildren = 0 7)创建短暂节点 [zk: localhost:2181(CONNECTED) 9] create -e /app-emphemeral 8888 (1)在当前客户端是能查看到的 [zk: localhost:2181(CONNECTED) 10] ls / [app1, app-emphemeral, zookeeper] (2)退出当前客户端然后再重启客户端 [zk: localhost:2181(CONNECTED) 12] quit [itstar@bigdata113 zookeeper-3.4.10]$ bin/zkCli.sh (3)再次查看根目录下短暂节点已经删除 [zk: localhost:2181(CONNECTED) 0] ls / [app1, zookeeper] 8)创建带序号的节点 (1)先创建一个普通的根节点app2 [zk: localhost:2181(CONNECTED) 11] create /app2 "app2" (2)创建带序号的节点 [zk: localhost:2181(CONNECTED) 13] create -s /app2/aa 888 Created /app2/aa0000000000 [zk: localhost:2181(CONNECTED) 14] create -s /app2/bb 888 Created /app2/bb0000000001 [zk: localhost:2181(CONNECTED) 15] create -s /app2/cc 888 Created /app2/cc0000000002 如果原节点下有1个节点,则再排序时从1开始,以此类推。 [zk: localhost:2181(CONNECTED) 16] create -s /app1/aa 888 Created /app1/aa0000000001 9)修改节点数据值 [zk: localhost:2181(CONNECTED) 2] set /app1 999 10)节点的值变化监听get命令 (1)在104主机上注册监听/app1节点数据变化 [zk: localhost:2181(CONNECTED) 26] get /app1 watch 此时是悬浮监听状态... (2)在103主机上修改/app1节点的数据 [zk: localhost:2181(CONNECTED) 5] set /app1 777 (3)观察104主机收到数据变化的监听 WATCHER:: WatchedEvent state:SyncConnected type:NodeDataChanged path:/app1 11)节点的子节点变化监听 ls命令 (路径变化) (1)在104主机上注册监听/app1节点的子节点变化 [zk: localhost:2181(CONNECTED) 1] ls /app1 watch [aa0000000001, server101] 此时是悬浮监听状态... (2)在103主机/app1节点上创建子节点 [zk: localhost:2181(CONNECTED) 6] create /app1/bb 666 Created /app1/bb (3)观察104主机收到子节点变化的监听 WATCHER:: WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/app1 12)删除节点 [zk: localhost:2181(CONNECTED) 4] delete /app1/bb 13)递归删除节点 [zk: localhost:2181(CONNECTED) 7] rmr /app2 14)查看节点状态 [zk: localhost:2181(CONNECTED) 12] stat /app1 cZxid = 0x20000000a ctime = Mon Jul 17 16:08:35 CST 2017 mZxid = 0x200000018 mtime = Mon Jul 17 16:54:38 CST 2017 pZxid = 0x20000001c cversion = 4 dataVersion = 2 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 3 numChildren = 2 |