zookeeper

1.zookeeper简介

定义:分布式服务框架,是Apache Hadoop的子项目,主要用来解决到分布式应用中常遇到的一些数据管理问题,如果:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

简单来说就是文件系统+监听通知机制。

文件系统:zookeeper是维护一个类似文件系统的数据结构,每个子目录都被称为znode(目录节点),和文件系统一样,可随意增加、删除znode,在一个znode下新建、删除znode,唯一不同在于znode是可以存储数据的。有四种类型的znode:

PERSISTENT-持久化目录节点,客户端与zookeeper断开连接后,节点依然存在

PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点,客户端与zookeeper断开连接后,节点依然存在,只是 Zookeeper 给该节点名称进行顺序编号

EPHEMERAL-临时目录节点,客户端与zookeeper断开连接后,删除节点

EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点,客户端与zookeeper断开连接后,删除节点,只是 Zookeeper给该节点名称进行顺序编号

监听通知机制:客户端注册监听它关心的目录节点,当目录发生变化时(数据改变、被删除、子目录节点增加删除)时,zookeeper会通知客户端

可做:实现诸如分布式应用配置管理、统一命名服务、状态同步服务、集群管理等功能。以分布式应用配置管理为例来说明zookeeper可做的事情。

例如:应用部署在多台服务器上,如果改变应用配置文件,需要逐一修改,很繁琐,但是如果配置文件在zookeeper上的某个目录节点中,然后所有相关应用对这个目录节点进行解析,一旦配置信息发生变化,多个服务器就会收到zookeeper的通知,然后从zookeeper获取最新的的应用配置到系统中

2.zookeeper单机模式安装

step1:配置java环境,执行java -version检验环境

step2:下载并解压zookeeper

cd /usr/local

wget http://mirror.bit.edu.cn/apache/zookeeper/stable/zookeeper-3.4.12.tar.gz

tar -zxvf zookeeper-3.4.12.tar.gz

cd zookeeper-3.4.12

step3:重命名配置文件 # cp conf/zoo_sample.cfg conf/zoo.cfg

step4:启动zookeeper # bin/zkServer.sh start

step5:检测是否启动成功,用zookeeper客户端连接服务器 # bin/zkCli.sh

3.zookeeper使用

使用zookeeper客户端操作

ls #ls命令查看zk中所有内容

create /zkPro myData #创建名称为zkPro的znode节点,并包含字符串为myData的内容

get /zkPro #获取名称为zkPro的znode节点包含的字符串内容

set /zkPro myData_update #通过set命令对zk关联的字符串进行设置

delete /zkPro #删除znode

使用java api操作

引入org.apache.zookeeper依赖包

create /username qingfeng #zk中增加目录节点,并将配置信息保存在其中

启动两个zookeeper客户端程序可读取到zk中username目录节点的数据,并且zk中username目录节点中的数据更新后,后台程序也及时收到了监听目录变更后的值

4.zookeeper集群模式安装

本地搭建伪集群,一台服务器启动三个zk实例组成集群,真正的集群无非是实例IP地址不同,搭建方法没有区别。

step1:配置java环境,执行java -version检验环境

step2:下载并解压zookeeper

step3:重命名配置文件 # cp conf/zoo_sample.cfg conf/zoo-1.cfg

step4:修改配置文件zoo-1.cfg,原配置文件里有的,修改成下面的值,没有的则加上

vim conf/zoo-1.cfg

dataDir=/tmp/zookeeper-1

clientPort=2181

server.1=127.0.0.1:2888:3888

server.2=127.0.0.1:2889:3889

server.3=127.0.0.1:2890:3890

step5:从zoo-1.cfg复制两个配置文件zoo-2.cfg和zoo-3.cfg,只需修改dataDir和clientPort即可

cp conf/zoo-1.cfg conf/zoo-2.cfg

cp conf/zoo-1.cfg conf/zoo-3.cfg

vim conf/zoo-2.cfg

dataDir=/tmp/zookeeper-2

clientPort=2182

vim conf/zoo-2.cfg

dataDir=/tmp/zookeeper-3

clientPort=2183

step6:标识serverId,创建三个文件夹/tmp/zookeeper-1,/tmp/zookeeper-2,/tmp/zookeeper-2,在每个目录中创建文件myid 文件,写入当前实例的server id,即1.2.3

cd /tmp/zookeeper-1

vim myid

1

cd /tmp/zookeeper-2

vim myid

2

cd /tmp/zookeeper-3

vim myid

3

step7:启动三个zk实例

bin/zkServer.sh start conf/zoo-1.cfg

bin/zkServer.sh start conf/zoo-2.cfg

bin/zkServer.sh start conf/zoo-3.cfg

step8:检测集群状态,也可以直接用命令"zkCli.sh -server IP:PORT"连接zookeeper服务端检测 或 bin/zkServer.sh status conf/zoo-1.cfg

相关推荐
zzhongcy1 天前
注册中心 eureka、nacos、consul、zookeeper、redis对比
zookeeper·eureka·consul
半梦半醒*1 天前
zookeeper + kafka
linux·分布式·zookeeper·kafka·centos·运维开发
寒士obj7 天前
分布式组件【ZooKeeper】
微服务·zookeeper
笨蛋少年派7 天前
zookeeper简介
分布式·zookeeper·云原生
007php00710 天前
百度面试题解析:Zookeeper、ArrayList、生产者消费者模型及多线程(二)
java·分布式·zookeeper·云原生·职场和发展·eureka·java-zookeeper
坐吃山猪12 天前
zk02-知识演进
运维·zookeeper·debian
yumgpkpm12 天前
华为鲲鹏 Aarch64 环境下多 Oracle 数据库汇聚操作指南 CMP(类 Cloudera CDP 7.3)
大数据·hive·hadoop·elasticsearch·zookeeper·big data·cloudera
小醉你真好13 天前
16、Docker Compose 安装Kafka(含Zookeeper)
docker·zookeeper·kafka
yumgpkpm14 天前
CMP (类ClouderaCDP7.3(404次编译) )华为鲲鹏Aarch64(ARM)信创环境多个mysql数据库汇聚的操作指南
大数据·hive·hadoop·zookeeper·big data·cloudera
yumgpkpm16 天前
大数据综合管理平台(CMP)(类Cloudera CDP7.3)有哪些核心功能?
hive·hadoop·elasticsearch·zookeeper·big data