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                      子节点个数
Logo

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

更多推荐