1. 下载
http://archive.cloudera.com/cdh5/cdh/5/zookeeper-3.4.5-cdh5.7.0.tar.gz
2. 解压
# 解压到指定的文件夹 tar xzvf zookeeper-3.4.5-cdh5.7.0.tar.gz -C /usr/local/hadoop/app/
3. 配置文件修改
(1) 在解压目录下创建两个文件夹:/usr/local/hadoop/app/zookeeper-3.4.5-cdh5.7.0
mkdir data mkdir logs
(2) 在data目录创建myid文件
touch myid echo 1 > myid
在其他两个节点分别写入2和3
(3) 修改配置文件zoo.cfg
加入如下配置:
dataDir=/usr/local/hadoop/app/zookeeper-3.4.5-cdh5.7.0/data dataLogDir=/usr/local/hadoop/app/zookeeper-3.4.5-cdh5.7.0/logs server.1=master:2888:3888 server.2=slave1:2888:3888 server.3=slave2:2888:3888
4. 配置系统环境变量
vi ~/.bashrc
export ZK_HOME=/usr/local/hadoop/app/zookeeper-3.4.5-cdh5.7.0 export PATH=$ZK_HOME/bin:$PATH
bash一下,让配置生效.
测试一下,环境变量是否生效:
echo $ZK_HOME
5. 将配置之后的解压文件,分发到其他节点上,
注意!!!: 修改myid文件
6. 执行以下命令依次启动zkServer
zkServer.sh start
7. 检查是否安装成功
#查看状态 zkServer.sh status
在各个节点执行查看状态命令,若可以在zookeeper各节点可以看到一个leader和多个follower即表示搭建成功。
leader节点查看状态如下:
[root@slave2 bin]# ./zkServer.sh status JMX enabled by default Using config: /usr/local/hadoop/app/zookeeper-3.4.5-cdh5.7.0/bin/../conf/zoo.cfg Mode: leader
follower节点查看状态如下:
[root@slave1 bin]# ./zkServer.sh status JMX enabled by default Using config: /usr/local/hadoop/app/zookeeper-3.4.5-cdh5.7.0/bin/../conf/zoo.cfg Mode: follower
8. 启动zk客户端,进行基本操作测试
(1) 启动客户端:./zkCli.sh
[root@slave2 bin]# ./zkCli.sh Connecting to localhost:2181 Welcome to ZooKeeper! JLine support is enabled WATCHER:: WatchedEvent state:SyncConnected type:None path:null [zk: localhost:2181(CONNECTING) 0]
执行登录命令,出现如上日志内容,即表示登录成功.
(2) zk基本操作命令
zookeeper的基本操作命令和linux命令类似.
ls 命令: 查看所有节点:ls /
[zk: localhost:2181(CONNECTING) 0] ls / [zookeeper, otter]
示例,根节点有两个,分别为[zookeeper, otter].
get 命令: 查看节点数据内容和属性信息:get /otter
[zk: localhost:2181(CONNECTED) 1] get /otter null cZxid = 0x100000004 ctime = Fri Jun 07 11:54:06 CST 2019 mZxid = 0x100000004 mtime = Fri Jun 07 11:54:06 CST 2019 pZxid = 0x100000005 cversion = 1 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 0 numChildren = 1 #有一个子节点
ls2 命令: 查看该节点的子节点信息和属性信息:ls2 /otter
[zk: localhost:2181(CONNECTED) 3] ls2 /otter [canal] cZxid = 0x100000004 ctime = Fri Jun 07 11:54:06 CST 2019 mZxid = 0x100000004 mtime = Fri Jun 07 11:54:06 CST 2019 pZxid = 0x100000005 cversion = 1 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 0 numChildren = 1
create 命令: 创建节点,并指定节点内容
[zk: localhost:2181(CONNECTED) 4] create /tmp_test 123 Created /tmp_test [zk: localhost:2181(CONNECTED) 5] ls / [zookeeper, tmp_test, otter] [zk: localhost:2181(CONNECTED) 6] get /tmp_test 123
create -s 命令: 创建顺序节点,并指定节点内容
[zk: localhost:2181(CONNECTED) 7] create -s /tmp_test/sub_node 111 Created /tmp_test/sub_node0000000000 [zk: localhost:2181(CONNECTED) 8] ls /tmp_test [sub_node0000000000] [zk: localhost:2181(CONNECTED) 9] create -s /tmp_test/sub_node 112 Created /tmp_test/sub_node0000000001 [zk: localhost:2181(CONNECTED) 10] ls2 /tmp_test [sub_node0000000001, sub_node0000000000] [zk: localhost:2181(CONNECTED) 12] get /tmp_test/sub_node0000000001 112
delete 命令: 删除指定节点
[zk: localhost:2181(CONNECTED) 13] ls /tmp_test [sub_node0000000001, sub_node0000000000] [zk: localhost:2181(CONNECTED) 14] delete /tmp_test/sub_node0000000000 [zk: localhost:2181(CONNECTED) 15] ls /tmp_test [sub_node0000000001]
rmr 命令: 删除多个层级的节点
[zk: localhost:2181(CONNECTED) 16] ls / [zookeeper, tmp_test, otter] [zk: localhost:2181(CONNECTED) 18] ls /tmp_test [sub_node0000000001] [zk: localhost:2181(CONNECTED) 19] rmr /tmp_test [zk: localhost:2181(CONNECTED) 20] ls / [zookeeper, otter]