Zookeeper
概述
1. Zookeeper本身是Apache提供的一套开源的用于进行分布式管理和协调的机制/框架。官网:http
s://zookeeper.apache.org
2. Zookeeper本身提供了中心化服务,包含统一配置、统一命名、分布式锁服务、分布式组服务,更
多的时候,Zookeeper充当了一个注册中心来使用
3. ZookeeperYahoo!仿照了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/conf2. 修改配置
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                      子节点个数
Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐