共计 2609 个字符,预计需要花费 7 分钟才能阅读完成。
zookeeper 是一个自动管理分布式集群的一个工具,以实现集群的高可用。比如集群中的一个机器挂掉了,没有 zookeeper 的话就得考虑挂一个机器对剩下集群工作的影响,而有了 zookeeper,它就能自动帮你协调这些事儿。
正规的解释如下:
zookeeper 是 一个开源的针对大型分布式系统的可靠协调系统。
设计目标是:将复杂且容易出错的分布式式一致性服务封装起来,构成一个高效可靠的原语集,
并以简单易用的接口提供给用户使用。
提供的功能包括:发布 / 订阅,分布式协调 / 通知,配置管理,集群管理,主从协调,分布式锁等。
安装与配置:
这里用三台 CentOS 6.9 mini 虚拟机演示,主机名分别是 h1、h2、h3,ip 分别是 192.168.227.11、192.168.227.22、192.168.227.33。
三台虚拟机都已创建了 Hadoop 用户,配了免密码登录。
软件安装路径是 /home/hadoop/apps/。
1. 下载解压安装包
解压后,/home/hadoop/apps/zookeeper-3.4.10/ 下面的文件
2. 创建软连接
这一步要用 root 用户操作,先切换到 root 用户
语法:ln -s 源路径 软连接路径
ln -s /home/hadoop/apps/zookeeper-3.4.10 /usr/local/zookeeper
修改 zookeeper 软链接属主为 hadoop:
chown -R hadoop:hadoop /usr/local/zookeeper
3. 修改环境变量
用 root 用户操作
vim /etc/profile
添加以下内容:
export Java_HOME=/usr/local/jdk
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:${ZOOKEEPER_HOME}/bin:${JAVA_HOME}/bin
添加并保存后,重新编译环境变量:
source /etc/profile
(没有 jdk 的先下载 jdk)
4. 修改配置文件
zookeeper/conf 是保存配置文件的文件夹
修改里面的 zoo.cfg 文件
vi /conf/zoo.cfg
添加以下内容:
dataDir=/usr/local/zookeeper/data #快照文件存储目录
dataLogDir=/usr/local/zookeeper/log #事务日志文件目录
#(主机名, 心跳端口、数据端口)
server.1=h1:2888:3888
server.2=h2:2888:3888
server.3=h3:2888:3888
5. 创建运行需要的目录
在 zookeeper 目录下创建配置文件里写的目录
mkdir /usr/local/zookeeper/data
mkdir /usr/local/zookeeper/log
在 data 文件夹下新建 myid 文件,myid 的文件内容为该节点的编号
cd data
touch myid
echo 1 >myid
6. 配置其余两个机器
用 scp 命令将整个 zookeeper 文件夹复制到其余两个机器上
scp -r /home/hadoop/apps/zookeeper-3.4.10 hadoop@h2:/home/hadoop/apps
scp -r /home/hadoop/apps/zookeeper-3.4.10 hadoop@h3:/home/hadoop/apps
然后按步骤 2 和步骤 3 分别对这两个机器创建软连接和修改环境变量。
将 h2 和 h3 机器里 /hadoop/data/myid 中的数分别改成 2 和 3。
至此就配置完了!
检查一下各个主机的运行
h1、h2、h3 依次执行 zkServer.sh start
jps 查看进程:
三个都开启后,执行 zkServer.sh status 查看 zookeeper 状态:
h1
h2
h3
可以看到 zookeeper 能够正常运行了。
数据存储:
zookeeper 以 Znode 形式存储数据
类似于 linux,但 Znode 可以存放数据
Znode 类型:
持久节点、临时节点、顺序节点
组合:持久节点、持久顺序节点
临时节点、临时顺序节点
客户端创建临时节点后,当客户端与服务端断开连接后,临时节点将被删除,临时节点下不允许有子节点
监听机制使用:
即发布订阅功能
客户端注册一个监听时间,当 zookeeper 上被监听的时间发生变化时,会第一时间通知订阅者
客户端操作:
zkCli.sh 命令进入客户端
create [选项] 路径 值 #创建节点并赋值,不能不赋值
-s 顺序型 -e 临时型
set 路径 值 #改变节点的值
get 路径 #获取节点的值
get 路径 watch #监听节点数据内容变化,只监听一次
ls 路径 watch #监听节点目录变化,只监听一次
delete 路径 #删除一个节点,节点下不能有子节点
rmr 路径 #删除有子节点的目录
cons #输出所有客户端的连接信息
在 CentOS7 上安装 Zookeeper-3.4.9 服务 https://www.linuxidc.com/Linux/2016-09/135052.htm
ZooKeeper 官方文档翻译——ZooKeeper Overview 3.4.6 https://www.linuxidc.com/Linux/2016-12/138025.htm
CentOS 下 ZooKeeper 3.4.8 集群环境搭建 https://www.linuxidc.com/Linux/2016-12/137958.htm
CentOS 7 下 Zookeeper 集群安装 https://www.linuxidc.com/Linux/2017-01/139733.htm
分布式服务 Dubbo+Zookeeper 安全认证 https://www.linuxidc.com/Linux/2017-12/149605.htm
Linux 下安装 Zookeeper 集群 https://www.linuxidc.com/Linux/2017-01/139545.htm
Linux 下 Zookeeper 集群的安装 https://www.linuxidc.com/Linux/2017-03/141400.htm
CentOS 6.5 下 ZooKeeper3.4.6 集群环境部署及单机部署详解 https://www.linuxidc.com/Linux/2018-03/151439.htm
: