Zookeeper是什么

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

1、 文件系统

每个子目录项如 NameService 都被称作为 znode(目录节点),和文件系统一样,我们能够自由的增加、删除znode,在一个znode下增加、删除子znode,唯一的不同在于znode是可以存储数据的。
有四种类型的znode:

PERSISTENT-持久化目录节点

客户端与zookeeper断开连接后,该节点依旧存在

PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点

客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号

EPHEMERAL-临时目录节点

客户端与zookeeper断开连接后,该节点被删除

EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点

2、 监听通知机制

客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号
客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增加删除)时,zookeeper会通知客户端。

Zookeeper能做什么

zookeeper功能非常强大,可以实现诸如分布式应用配置管理、统一命名服务、状态同步服务、集群管理等功能,我们这里拿比较简单的分布式应用配置管理为例来说明。

假设我们的程序是分布式部署在多台机器上,如果我们要改变程序的配置文件,需要逐台机器去修改,非常麻烦,现在把这些配置全部放到zookeeper上去,保存在 zookeeper 的某个目录节点中,然后所有相关应用程序对这个目录节点进行监听,一旦配置信息发生变化,每个应用程序就会收到 zookeeper 的通知,然后从 zookeeper 获取新的配置信息应用到系统中。

Zookeeper单机模式安装

首先去apache官网下载zookeeper安装包:

官网首页默认最新安装包3.5.9,3.6.2版本,但是最新版本要求java1.8,所以我这里选用的老版本,点击Older releases are available from the archives.下载老版本,这里我下载的3.4.6。因为公司生产也用的3.4.6.

hbae中zookeeper目录 zookeeper删除目录_hbae中zookeeper目录


hbae中zookeeper目录 zookeeper删除目录_hbae中zookeeper目录_02


另外说下若果java版本不够会报错:Unsupported major.monor version 52.0

hbae中zookeeper目录 zookeeper删除目录_客户端_03

下载后解压:

hbae中zookeeper目录 zookeeper删除目录_apache_04

备份zoo_sample.cfg文件为zoo.cfg,并且zookeeper启动也是认可这个zoo.cfg文件的.

hbae中zookeeper目录 zookeeper删除目录_运维_05

启动zookeeper:

hbae中zookeeper目录 zookeeper删除目录_zookeeper_06

查看zookeeper进程:

hbae中zookeeper目录 zookeeper删除目录_客户端_07

查看端口号,发现多了端口号2181,该端口号为zookeeper默认配置的客户端连接端口号,在conf/zoo.cfg文件中可以更改:

hbae中zookeeper目录 zookeeper删除目录_客户端_08

客户端连接zookeeper:

hbae中zookeeper目录 zookeeper删除目录_apache_09

Zookeeper使用

1、使用客户端命令操作zookeeper

hbae中zookeeper目录 zookeeper删除目录_hbae中zookeeper目录_10

2、创建一个新的 znode ,使用 create /ZOOKEEPER ZK01

hbae中zookeeper目录 zookeeper删除目录_apache_11


3、再次使用 ls 命令来查看现在 zookeeper 中所包含的内容:

hbae中zookeeper目录 zookeeper删除目录_客户端_12


4、下面我们运行 get 命令来确认第二步中所创建的 znode 是否包含我们所创建的字符串

hbae中zookeeper目录 zookeeper删除目录_客户端_13


5、下面我们通过 set 命令来对 zk 所关联的字符串进行设置

hbae中zookeeper目录 zookeeper删除目录_客户端_14


6、下面我们将刚才创建的 znode 删除

hbae中zookeeper目录 zookeeper删除目录_运维_15

本文参考了java_66666的博客,,zookeeper先学到到这里,后续会做下zookeeper集群的笔记,java暂时不会,后续深入。