微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Zookeeper 实战

分布式

集群规划

在 hadoop102、hadoop103 和 hadoop104 三个节点上部署 Zookeeper。

解压安装

解压 Zookeeper 安装包到/opt/module/目录下

tar  -zxvf  zookeeper-
3.4.10.tar.gz -C /opt/module/

同步/opt/module/zookeeper-3.4.10 目录内容到 hadoop103、hadoop104

 xsync zookeeper-3.4.10/

配置服务器编号

在/opt/module/zookeeper-3.4.10/这个目录下创建 zkData

mkdir -p zkData

在/opt/module/zookeeper-3.4.10/zkData 目录下创建一个 myid 的文件

touch myid

编辑 myid 文件

vi myid

文件添加与 server 对应的编号:

2

拷贝配置好的 zookeeper 到其他机器上

xsync myid

并分别在 hadoop103、hadoop104 上修改 myid 文件内容为 3、4

配置 zoo.cfg 文件

重命名/opt/module/zookeeper-3.4.10/conf 这个目录下的 zoo_sample.cfg 为 zoo.cfg

 mv zoo_sample.cfg zoo.cfg

打开 zoo.cfg 文件

vim zoo.cfg

修改数据存储路径配置

dataDir=/opt/module/zookeeper-3.4.10/zkData

增加如下配置

#######################cluster##########################
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888

同步 zoo.cfg 配置文件

xsync zoo.cfg

配置参数解读 server.A=B:C:D

  • A 是一个数字,表示这个是第几号服务器;
    集群模式下配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面有一个数据就是 A 的值,Zookeeper 启动时读取此文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是哪个 server。
  • B 是这个服务器的地址;
  • C是这个服务器 Follower 与集群中的 leader 服务器交换信息的端口;
  • D 是万一集群中的 leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的leader,而这个端口就是用来执行选举时服务器相互通信的端口。

集群操作

分别启动 Zookeeper

 bin/zkServer.sh start

客户端命令行操作

在这里插入图片描述

启动客户端

bin/zkCli.sh

显示所有操作命令

help

查看当前 znode 中所包含的内容

ls /

查看当前节点详细数据

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

分别创建 2 个普通节点

create /sanguo "jinlian"
create  /sanguo/shuguo "liubei"
 Created /sanguo/shuguo

获得节点的值

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

创建短暂节点

create -e /sanguo/wuguo "zhouyu"

在当前客户端是能查看到的
ls /sanguo
退出当前客户端然后再重启客户端

quit

再次查看根目录下短暂节点已经删除

ls /sanguo

创建带序号的节点
先创建一个普通的根节点/sanguo/weiguo

create  /sanguo/weiguo "caocao"	

创建带序号的节点

create  -s /sanguo/weiguo/xiaoqiao "jinlian"

如果原来没有序号节点,序号从 0 开始依次递增。如果原节点下已有 2 个节点,则再排序时从 2 开始,以此类推。

修改节点数据值

set /sanguo/weiguo "simayi"

删除节点

delete /sanguo/jin

递归删除节点

rmr /sanguo/shuguo

查看节点状态

stat /sanguo

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐