ZooKeeper 集群搭建
1,ZooKeeper 集群搭建须知
- 节点数奇数台
2,下载安装包
- 下载地址:
http://mirrors.hust.edu.cn/apache/zookeeper/ - 版本号:
zookeeper-3.4.10.tar.gz
3,上传并解压
- 解压:tar -zxvf zookeeper-3.4.10.tar.gz
4,修改配置文件zoo.cfg
- 进入 ZOOKEEPER_HOME/conf 目录下,复制样例配置文件zoo_sample.cfg,命名为zoo.cfg
复制命令:cp zoo_sample.cfg zoo.cfg - 编辑配置文件zoo.cfg
5,分发到其他服务器
[theone@hadoop01 software]$ scp -r zookeeper-3.4.10 shiny@hadoop02:$PWD
[theone@hadoop01 software]$ scp -r zookeeper-3.4.10 shiny@hadoop03:$PWD
6,新建dataDir目录
- 在各个 ZooKeeper 服务器节点新建/home/shiny/zkdata
zoo.cfg中配置的dataDir - 建好之后,在里面新建一个文件,文件名叫 myid,里面存放的各个服务器节点对应的 id
就是 server.1=hadoop01:2888:3888 当中的 id
7,配置环境变量(所有 ZooKeeper 节点)
vim /home/theone/.bash_profile
添加如下代码配置环境变量:
export ZOOKEEPER_HOME=/home/theone/Desktop/software/zookeeper-3.4.10
export PATH=$PATH:$ZOOKEEPER_HOME/bin
执行命令让文件立即生效:
source /home/theone/.bash_profile
8,启动 ZooKeeper
-
各个 ZooKeeper 服务器节点使用启动命令
zkServer.sh start
-
检查进程和角色
进程:QuorumPeerMain ,使用命令:jps 角色:leader or follower,使用命令:zkServer.sh status
ZooKeeper 集群使用
1, 连接 ZooKeeper 服务器
-
(1)连接本机的 ZooKeeper 服务器
进入 ZooKeeper 命令行客户端,使用命令:[theone@hadoop01 ~]$ zkCli.sh
-
(2)连接其他的 ZooKeeper 服务器
[theone@hadoop01 ~]$ zkCli.sh -server hadoop02:2181
2,ZooKeeper Cli 常用命令
-
1,帮助命令:help
-
2,查看ZNode节点列表 (命令:ls path和 ls2 path)
ls path [watch] #显示节点列表 ls2 path [watch] #不但显示节点列表,还显示更新次数等数据 
path表示的是指定数据节点的节点路径
-
3,创建 ZNode 节点
create [-s] [-e] path data acl
-s 或-e 分别指定节点特性,顺序或临时节点,若不指定,则表示持久节点。
data代表节点的数据内容。
acl用来进行权限控制,默认情况下,不做任何权限控制。创建一个新的 ZNode 节点“zk”以及与它关联的字符串“myData”如图:
-
4,创建临时ZNode节点
命令:create -e path data
关闭zk连接,重新进入,临时节点消失 -
5,创建顺序ZNode节点
命令:create -s path data
-
6,获取ZNode数据
get path #(得到节点关联的字符串和属性信息)
-
7,设置ZNode数据
set path data [version] #(设置/修改节点的关联字符串)
-
8,监听ZNode事件
-
1,监听目录结构
ls path [watch]
-
2,监听数据内容
get path [watch]
-
-
9,删除ZNode节点
delete path 或者 rmr path
ZNode 数据信息字段解释
数据信息字段 | 解释 |
---|---|
cZxid | 节点创建的时候的 zxid,用来为选举leader服务的 |
ctime | 节点创建的时间 |
mZxid | 节点最新一次修改时的 zxid,与子节点的修改无关 |
mtime | 节点最新一次修改时的时间 |
pZxid | 子节点最近一次创建/删除对应的 zxid, 和子节点修改无关, 和孙子节点无关 |
cversion | 子节点的更新次数 |
dataVersion | 节点数据的更新次数 |
aclVersion | 节点ACL(授权信息)的更新次数 |
dataLength | 节点数据的字节数 |
numChildren | 子节点个数,不包含孙子节点 |
- ephemeralOwner : 如果该节点为 ephemeral 节点, 该值表示与该节点绑定的 session id, 如果该节点不是 ephemeral 节点, 该值为 0