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

相关推荐
Mephisto.java19 小时前
【大数据学习 | kafka高级部分】文件清除原理
大数据·hadoop·zookeeper·spark·kafka·hbase·flume
大数据魔法师1 天前
Hadoop生态圈框架部署(五)- Zookeeper完全分布式部署
hadoop·分布式·zookeeper
Francek Chen2 天前
【大数据技术基础 | 实验八】HBase实验:新建HBase表
大数据·数据库·hadoop·分布式·zookeeper·hbase
一叶飘零_sweeeet2 天前
Eureka与 Zookeeper 在服务注册与发现中的差异解析
zookeeper·eureka·注册中心
Mephisto.java2 天前
【大数据学习 | kafka】简述kafka的消费者consumer
mysql·zookeeper·kafka·flume·storm
unique_pursuit3 天前
Zookeeper启动报错:Starting zookeeper ... FAILED TO START 解决方案
分布式·zookeeper·debian
昨天今天明天好多天5 天前
【Apache Zookeeper】
分布式·zookeeper·apache
珍珠是蚌的眼泪6 天前
Zookeeper
分布式·zookeeper·分布式锁·持久化节点·临时节点
Mitch3117 天前
【环境搭建】Apache ZooKeeper 3.8.4 Stable
分布式·zookeeper·apache