![cover](https://img-blog.csdnimg.cn/img_convert/9363820239264ea29749bbc20bf9bd39.png)
Zookeeper(动物园管理员)
zookeeper
·
Zookeeper
概述
1. Zookeeper
本身是
Apache
提供的一套开源的用于进行分布式管理和协调的机制
/
框架。官网:
http
s://zookeeper.apache.org
2. Zookeeper
本身提供了
中心化服务
,包含统一配置、统一命名、分布式锁服务、分布式组服务,更
多的时候,
Zookeeper
充当了一个
注册中心
来使用
3. Zookeeper
是
Yahoo!
仿照了
Google
的
<The Chubby Lock Service>
开发的后来贡献给了
Apache
的
一套框架
安装
概述
1.
在大数据中,几乎所有的框架,它的安装都提供了三种模式
1.
单机模式:在一台服务器上安装,往往能够启动这个框架的部分服务
2.
伪分布式:在一台服务器上安装,但是利用多个线程模式分布式环境,能够启动这个框架的
大部分甚至于服务
3.
分布式:在集群上安装,能够启动这个框架的所有服务
2.
现阶段,先安装单机模式,搞定所有的概念之后,再到集群中安装
安装
JDK
1. Centos7
中可能自带了
OpenJDK
,需要卸载移除掉
2.
上课的时候要求,所有的软件安装包放在
/opt/presoftware
下,将软件安装在
/opt/software
下
3.
进入
presoftware
下,将
JDK
安装包上传到这个目录下
4.
解压到
software
目录下
5.
进入
software
目录下
rpm
-qa
|
grep
-i
jdk | xargs rpm
-ev --nodeps
cd
/opt
mkdir
presoftware
mkdir
software
cd
presoftware
#
将安装包上传到这个路径下
rz
tar
-xvf
jdk-8u371-linux-x64.tar.gz
-C
/opt/software/
6.
在
Linux
中, 环境变量的配置有两个位置:
/etc/profile
和
~/.bashrc
。无论哪一个路径,默
认都会扫描
/etc/profile.d
目录下的脚本文件,所以,配置环境变量一般是放
在
/etc/profile.d
安装
Zookeeper(
单机模式
)
1.
将安装包上传到
Linux
上
2.
解压
3.
重命名
4.
配置环境变量
5.
配置
Zookeeper
1.
进入
Zookeeper
的配置目录
cd
/opt/software/
#
重命名
mv
jdk1.8.0_371/ jdk1.8
#
需要在
/etc/profile.d
来脚本文件
touch
/etc/profile.d/javahome.sh
#
编辑脚本文件
vim
/etc/profile.d/javahome.sh
#
在文件中添加
export
JAVA_HOME
=
/opt/software/jdk1.8
export
PATH
=
$PATH
:
$JAVA_HOME
/bin
#
保存退出,生效
source
/etc/profile.d/javahome.sh
#
测试
javac
-version
#
或者
java
-version
cd
/opt/presoftware/
rz
tar
-xvf
apache-zookeeper-3.9.1-bin.tar.gz
-C
/opt/software/
cd
/opt/software/
mv
apache-zookeeper-3.9.1-bin/ zookeeper-3.9.1
#
编辑文件
vim
/etc/profile.d/zookeeperhome.sh
#
在文件中添加
export
ZOOKEEPER_HOME
=
/opt/software/zookeeper-3.9.1
export
PATH
=
$PATH
:
$ZOOKEEPER_HOME
/bin
#
保存退出,生效
source
/etc/profile.d/zookeeperhome.sh
cd
/opt/software/zookeeper-3.9.1/conf
2.
修改配置
3.
启动
Zookeeper
4.
检查
Zookeeper
的状态
5.
进入
Zookeeper
的客户端
技术点
特点
1. Zookeeper
默认对外提供的客户端端口号是
2181
,可以通过
zoo.cfg
中的
clientPort
属性来修
改,但是不建议
2. Zookeeper
本身是一个树状结构,根节点是
/
3.
不同于
Linux
的地方在于,
Zookeeper
中没有相对路径的说法,所有节点路径都必须从根节点开始
计算
4.
当
Zookeeper
启动的时候,自动的添加一个节点
/zookeeper
,存放的是
Zookeeper
本身的集群信
息
5.
在
Zookeeper3.7
及以前的版本中,要求每一个节点在创建的时候必须携带数据,这个数据可以是
对节点的描述或者是配置信息
6.
每一个节点携带的数据默认是在内存以及磁盘上
1.
维系在内存的目的是为了读写快
2.
维系在磁盘的目的是为了持久化
7.
数据在磁盘上的存储路径默认由
dataLogDir
属性来控制,默认情况下,如果没有单独指定,
dataLogDir
的属性值和
dataDir
是一致的
8.
临时节点下不能挂载子节点!
9. Zookeeper
会为每一次的写操作分配一个全局递增的编号,这个编号称之为事务
id
,简写为
Zxid
。一个节点刚被创建的时候,三个事务
id
是一致的
操作命令
#
复制文件
-
注意:
Zookeeper
启动的时候默认会使用
zoo.cfg
中的配置
cp
zoo_sample.cfg zoo.cfg
#
编辑文件
vim
zoo.cfg
#
修改
dataDir
属性的值
dataDir
=
/opt/software/zookeeper-3.9.1/data
zkServer.sh
start
#
方式一:
jps
#
如果有
QuorumPeerMain
,那么表示
Zookeeper
在运行
#
方式二:
zkServer.sh status
zkCli.sh
命令
解释
ls / 查看跟节点的子节点
create /big 在根节点下创建子节点big -
这种创建方式是从
Zookeeper的3.8
版本开的
create /test 'this is a test
server' 在根节点下创建test
节点,并且携带数据
create /data '' 创建节点,并且给定数据为空
get /big 获取节点的数据
set /video 'size=500M' 修改数据
delete /test 删除节点,要求节点为空(
不能有子节点
)
rmr /video 删除这个节点及子节点,从Zookeeper3.8
开始,这个命令就过时
了
deleteall /video 删除这个节点及子节点,从Zookeeper3.8
开始建议使用的命令
ls
-
w / 监控指定节点的子节点的个数变化 -
只监控一次
get
-
w /news 监控指定节点的数据是否变化 -
只监控一次
removewatches /news 移除监控
history 查看执行过的指令
redo 24 重新执行编号为24
的命令
close 关闭连接,但是没有退出Zookeeper
客户端
quit 直接退出客户端,需要通过 zkCli.sh
重新进入
connect localhost:2181 连接本机的2181
端口
getAllChildrenNumber / 获取根节点以及所有子节点的数量
setquota
-
n 2 /news /news节点下的子节点个数最好不要超过
2
个
setquota
-
b 1024 /news /news节点的数据最好不要超过
1024B
listquota /news 获取/news
节点上的限制
delquota /news 删除/news
节点上的限制
version 查看Zookeeper
的版本
whoami 查看当前的用户
sync / 将根目录下的数据同步给其他的follower
getEphemerals / 获取根节点的临时节点
create
-
e /big '' 创建临时节点
命令
解释
create
-
s /test/t '' 创建持久顺序节点
create
-
e
-
s /test/t '' 创建临时顺序节点
stat /news 查看节点的属性/
信息
节点
解释
Persistent 持久节点
Ephemeral 临时节点
Persistent_Sequential 持久顺序节点
Ephemeral_Sequential 临时顺序节点
属性
/
信息
解释
cZxid 这个节点创建对应的事务id
,
整个过程中第几个写操作
创建了这个节点
ctime 这个节点创建对应的时间
mZxid 这个节点的数据修改对应的事务id
,
整个过程中第几个写操作
修改了数据
mtime 这个节点的数据修改对应的时间
pZxid 这个节点的子节点个数变化对应的事务id
,
整个过程中第几个写操作
导 致这个节点的子节点个数产生了变化
cversion 这个节点的子节点个数变化了几次
dataVersion 这个节点的数据被修改了几次 -
数据版本
aclVersion 这个节点的权限被修改了几次
ephemeralOwner 如果是持久节点,此项值为0x0
;如果是临时节点,此项值为当前的会 话编 号(sessionid)
dataLength 数据的长度(
字节个数
)
numChildren 子节点个数
更多推荐
所有评论(0)