zookeeper集群安装、配置、主要Shell操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38038143/article/details/84203344

1.下载

http://apache.fayea.com/zookeeper/
在这里插入图片描述
这里选择 stable 目录下的版本,下载并上传到 Linux。
解压压缩包到 /usr/local/ 目录(注意权限问题),并修改名称为 zk,拥有者为登录用户:
在这里插入图片描述

在 ~/.bashrc 文件末尾添加:

export ZOOKEEPER_HOME=/usr/local/zk
export PATH=$PATH:$ZOOKEEPER_HOME/bin/

执行命令 source ~/.bashrc,即可在任意路径使用zookeeper命令。

2.配置

进入 /usr/local/zk/目录:

  1. 创建 data 目录,并添加文件myid,内容为 0:
    在这里插入图片描述

  2. 进入 /usr/local/zk/conf/ 目录:
    将 zoo_sample.cfg 删除(或修改名称)
    在这里插入图片描述

  • 创建配置文件 zoo.cfg,内容如下,最后节点数量,名称根据自身集群设置(这里设置了共4个节点):
hadoop@master:/usr/local/zk/conf$ cat zoo.cfg 
# The number of milliseconds of each tick
tickTime = 2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting ian acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/usr/local/zk/data
# the ort at which the clients will connect
clientPort=2183
# the location of the log file
dataLogDir=/usr/local/zk/log
server.0=master:2288:3388
server.1=slave4:2288:3388
server.2=slave5:2288:3388
server.3=slave7:2288:3388
  1. 将 zk 目录传递给其他节点:
    注:可能涉及到权限问题,可先将 zk 传递至 /home/hadoop/
scp -r /usr/local/zk slave4:/usr/local/
scp -r /usr/local/zk slave5:/usr/local/
scp -r /usr/local/zk slave7:/usr/local/

将各个节点的 zk/data/myid 文件内容改为 zoo.cfg 末行对应的数值,如这里的三个数据节点的配置:

[hadoop@slave4 ~]$ cat /usr/local/zk/data/myid 
1

[hadoop@slave5 ~]$ cat /usr/local/zk/data/myid
2

[hadoop@slave7 ~]$ cat /usr/local/zk/data/myid
3

3. 启动

  1. 将HBase自带的zookeeper关闭
    注释掉 hbase-env.sh 文件下的如下行:
    在这里插入图片描述

  2. 启动

  • 开启集群的Hbase
  • 在配置的每个节点开启 zookeeper
    在每个节点执行命令,若前面配置的无须路径启动没有成功,则使用 /usr/local/zk/bin/zkServer.sh start:
zkServer.sh start

关闭:

zkServer.sh stop

查看JPS:
在这里插入图片描述

配置成功!


4. 主要Shell操作

  1. 连接服务:
    在这里插入图片描述

  2. 执行到 WatchedEvent state: SyncConneted type:None path:null 如果卡住,请按回车键:
    在这里插入图片描述

  3. 查看当前zookeeper所包含的内容:
    在这里插入图片描述

  4. 创建一个Znode节点及它的内容:

[zk: localhost:2181(CONNECTED) 1] create /zk myData
Created /zk
[zk: localhost:2181(CONNECTED) 2] ls /
[zk, zookeeper, hbase]
  1. 查看 /zk 的内容:
[zk: localhost:2181(CONNECTED) 3] get /zk
myData
cZxid = 0x40000004d
ctime = Sun Nov 18 19:44:34 CST 2018
mZxid = 0x40000004d
mtime = Sun Nov 18 19:44:34 CST 2018
pZxid = 0x40000004d
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0
  1. 设置(更改)/zk 内容:
[zk: localhost:2181(CONNECTED) 5] set /zk hadoopData
cZxid = 0x40000004d
ctime = Sun Nov 18 19:44:34 CST 2018
mZxid = 0x40000004e
mtime = Sun Nov 18 19:46:55 CST 2018
pZxid = 0x40000004d
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 10
numChildren = 0
[zk: localhost:2181(CONNECTED) 6] get /zk
hadoopData
cZxid = 0x40000004d
ctime = Sun Nov 18 19:44:34 CST 2018
mZxid = 0x40000004e
mtime = Sun Nov 18 19:46:55 CST 2018
pZxid = 0x40000004d
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 10
numChildren = 0
  1. 删除 /zk
[zk: localhost:2181(CONNECTED) 7] delete /zk
[zk: localhost:2181(CONNECTED) 8] ls /
[zookeeper, hbase]

5. 节点之间的关联

既然单个节点能够连接 ZK 服务,那各个节点之间有什么关联呢?
通过一个例子展示:

  1. 在 master、slave4 节点分别连接服务:
zkCli.sh -server localhost:2181
  1. 在 master 节点创建新的Znode:

master:

[zk: localhost:2181(CONNECTED) 15] create /zk master
Created /zk
[zk: localhost:2181(CONNECTED) 16] get /zk
master
cZxid = 0x400000054
ctime = Sun Nov 18 20:25:38 CST 2018
mZxid = 0x400000054
mtime = Sun Nov 18 20:25:38 CST 2018
pZxid = 0x400000054
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0

slave4:

[zk: localhost:2181(CONNECTED) 5] get /zk
master
cZxid = 0x400000054
ctime = Sun Nov 18 20:25:38 CST 2018
mZxid = 0x400000054
mtime = Sun Nov 18 20:25:38 CST 2018
pZxid = 0x400000054
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0

可以看出,各个节点在 ZK 服务上的Znode节点信息可以互相查看,甚至修改、删除。

完!

猜你喜欢

转载自blog.csdn.net/qq_38038143/article/details/84203344
今日推荐