Zookeeper
Zookeeper
Zookeeper是一个开源的分布式的、为分布式应用提供协调服务的Apache项目
作用:
负责存储和管理大家都关系的数据,并接受观察者的注册,一旦这些数据的状态发生变化,zookeeper将通知已经在zookeeper上注册的那些观察者做出响应的反应。
(简单来说就是你关注的up主更新了,然后b站发了个推送)
工作机制
- 一个领导者leader和一群跟随者follower组成的集群
- 集群中只要半数以上的节点存活,集群就能正常提供服务
- 全局数据一致:即每个server保存一份相同的数据副本
- 更新请求顺序继续进行(按照client发送的请求按次序执行)
- 数据更新的原则性:要么一次性全部数据更新成功,要么都失败
- 数据实时性。保证Client在一定时间范围内获取到的数据是最新的
Zookeeper的安装
-
单机模式运行
-
下载zookeeper的安装包
-
将压缩包上传到hadoop102上/opt/software目录下,并解压到/opt/module目录下
tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/module/
-
进入zookeeper的conf目录,拷贝样例配置文件并修改名称
cp zoo_sample.cfg zoo.cfg
-
进入bin目录,启动zookeeper服务
./zkServer.sh start
-
status命令可以查看状态
[root@hadoop102 zookeeper-3.4.10]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: standalone
完成
-
-
集群分布式模式
-
使用命令stop结束服务
[root@hadoop102 zookeeper-3.4.10]# bin/zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED -
编辑conf/zoo.cfg 配置文件
- 更换工作目录
dataDir=/opt/module/zookeeper-3.4.10/zkData
-
增加服务集群server配置信息
2888:server之间通信端口号
3888:选举为leader的端口号
102、103、104是集群上的server id (不能重复)
server.102=hadoop102:2888:3888
server.103=hadoop103:2888:3888
server.104=hadoop104:2888:3888 -
新建工作目录
[root@hadoop102 zookeeper-3.4.10]# mkdir zkData
-
在zkData目录中新建文件 myid 内容为本机的zookeeper的server id
[root@hadoop102 zkData]# pwd
/opt/module/zookeeper-3.4.10/zkData
[root@hadoop102 zkData]# touch myid
[root@hadoop102 zkData]# echo 102 > myid
[root@hadoop102 zkData]# cat myid
102 -
配置zookeeper环境
vi zkEnv.sh
- 增加JAVA_HOME声明
ZOOBINDIR="${ZOOBINDIR:-/usr/bin}"
ZOOKEEPER_PREFIX="${ZOOBINDIR}/.."
export JAVA_HOME=/opt/module/jdk1.8.0_161- 修改zookeeper 日志log目录ZOO_LOG_DIR 位置
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
ZOO_LOG_DIR="/opt/module/zookeeper-3.4.10/logs"
fi -
将zookeeper的工作目录同步到hadoop103上
[root@hadoop102 module]# rsync -av zookeeper-3.4.10/
hadoop103:/opt/module/zookeeper-3.4.10 -
在hadoop103上更改本机zookeeper serverid 即 myid 配置文件
[root@hadoop103 zkData]# echo 103 > myid
[root@hadoop103 zkData]# cat myid
103
[root@hadoop103 zkData]# -
各节点启动服务
[root@hadoop102 zookeeper-3.4.10]# bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@hadoop102 zookeeper-3.4.10]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower[root@hadoop103 zookeeper-3.4.10]# bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@hadoop103 zookeeper-3.4.10]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: leader
完成
-