1.什么是Zookeeper?
在分布式的几个概念中,我们经常听到Zookeeper这个词,那么它是个什么呢?以下是维基百科给出的定义:
Apache ZooKeeper is a software project of the Apache Software Foundation. It is essentially a service for distributed systems offering a hierarchical key-value store, which is used to provide a distributed configuration service, synchronization service, and naming registry for large distributed systems. ZooKeeper was a sub-project of Hadoop but is now a top-level Apache project in its own right.
简单翻译一下就是下面这个样子:
Apache ZooKeeper是Apache Software Foundation的一个软件项目。 它本质上是一个为分布式系统提供的服务,提供分层的键-值存储,用于为大型分布式系统提供分布式配置服务,同步状态服务和域名服务。 ZooKeeper是Hadoop的一个子项目,但现在它本身就是一个顶级Apache项目。
由此可见Zookeeper主要是用在分布式系统中提供服务的,而从Zookeeper这个英文单词就可以翻译为动物管理员的意思,所以主要是起到一个管理的作用。Zookeeper是Hadoop和Hbase的重要组件。
2.Zookeeper的存储结构
Zookeeper的文件系统存储结构如下图所示
Zookeeper的根目录为/,其下一层每个被称为znode,我们可以网znode中增加、删除数据。每个znode默认是能够存储1MB的数据。按照存储数据的不同,Zookeeper分为四种类型的数据。
-
PERSISTENT-持久节点
客户端与zookeeper断开连接后,该节点依旧存在
-
PERSISTENT_SEQUENTIAL-持久顺序节点
客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号
-
EPHEMERAL-临时节点
客户端与zookeeper断开连接后,该节点被删除
-
EPHEMERAL_SEQUENTIAL-临时顺序节点
客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号
3.Zookeeper单机安装
下载地址:(使用北理工的镜像服务,从3.5.5开始需要下载带有bin的解压包,否则启动zookeeper客户端时候提示无法加载主类)
http://mirror.bit.edu.cn/apache/zookeeper/stable/zookeeper-3.4.14.tar.gz(推荐)
http://mirror.bit.edu.cn/apache/zookeeper/stable/apache-zookeeper-3.5.7-bin.tar.gz
下载完成后,进入解压目录 拷贝一份配置文件并重命名为zoo.cfg(因为下面启动zookeeper的时候用的是zoo.cfg的配置文件)
cp conf/zoo_sample.cfg conf/zoo.cfg
启动zookeeper服务器(启动必须加start否则没启动起来)
bin/zkServer.sh start
用zookeeper客户端连接
bin/zkCli.sh
做个简单测试:
创建新的znode
create /znode1 HelloZookeeper
ls / 查看(记得要加目录)
使用get命令查看znode的详情
get /znode1
使用set命令对字符串值进行设置
set /znode1 test
删除znode
delete /znode1