zookeeper的概念、集群部署、使用

zookeeper的概念、集群部署、使用

一、概念

Zookeeper是一个开源的分布式协调服务框架,主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务状态同步服务集群管理分布式应用配置项的管理等。

ZooKeeper的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。

zookeeper=文件系统+通知机制

二、集群部署

集群模式, 是指在多台机器中分别启动1个zookeeper进程, 组成的集群。通常zk集群的安装节点数为奇数,取3,5,7等等,以下以3台主机为例。

2.1 下载

下载官网
下载完成后把安装包上传到虚拟机hadoop100,上传方法请参考教程中的2.1 上传安装包

2.2 安装

安装的前提:确认关闭防火墙
zookeeper的概念、集群部署、使用

进入到安装目录:cd /usr/local/src
1.解压:tar zxvf apache-zookeeper-3.5.5-bin.tar.gz
修改名字: mv apache-zookeeper-3.5.5-bin zookeeper-3.5.5(这一步不是必要的,为了配置环境变量方便)
2.配置zookeeper的环境变量
vi ~/.bash_profile
添加如下内容:

ZOOKEEPER_HOME=/usr/local/src/zookeeper-3.5.5
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$ZOOKEEPER_HOME/bin:
export JAVA_HOME HADOOP_HOME CLASSPATH HIVE_HOME ZOOKEEPER_HOME PATH

zookeeper的概念、集群部署、使用
使环境变量生效:source ~/.bash_profile

3.在zookeeper的跟目录下创建两个文件夹data和datalog
这两个路径主要是用来存放zk的数据以及日志的(待会需要手动在配置文件中设置)
在data目录下创建一个myid的文件,里面的值可以给个任意的值,假设写的值是101,主要用于集群中区分某个*
zookeeper的概念、集群部署、使用
4.拷贝配置文件 cp zoo_sample.cfg zoo.cfg
修改内容:

dataDir=/usr/local/src/zookeeper-3.5.5/data
dataLogDir=/usr/local/src/zookeeper-3.5.5/datalog
server.101=192.168.1.101:2888:3888
server.102=192.168.1.102:2888:3888
server.103=192.168.1.103:2888:3888

注意:
zoo.cfg中的 server.101中的101必须与myid中的101相对应

参数说明:
1、tickTime=2000
zookeeper中使用的基本时间单位, 毫秒值.
2、initLimit=10
zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower.
initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间。
此时该参数设置为10, 说明时间限制为10倍tickTime, 即10*2000=20000ms=20s.
3、syncLimit=5
该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度.
此时该参数设置为5, 说明时间限制为5倍tickTime, 即10000ms.
4、dataDir=/usr/local/soft/zookeeper3.5.5/data
数据目录. 可以是任意目录.
5、dataLogDir=/usr/local/soft/zookeeper3.5.5/datalog
log目录, 同样可以是任意目录. 如果没有设置该参数, 将使用和dataDir相同的设置.
6、clientPort=2181
监听client连接的端口号,通过ip:2181端口进入zookeeper的文件系统
7、server.101=192.1.101:2888:3888
2888是leader与跟随者通信的接口,当leader挂掉后跟随者通过3888通信选举出新leader

5.集群拷贝
把配置好的zookeeper拷贝到其他节点

scp -r zookeeper-3.5.5 root@hadoop102:/usr/local/src/
scp -r zookeeper-3.5.5 root@hadoop103:/usr/local/src/

并配置其他节点zookeeper的环境变量(把hadoop101的bash_profile同步到其他节点)

scp ~/.bash_profile root@hadoop102:~/
scp ~/.bash_profile root@hadoop103:~/

切换到hadoop102、hadoop103使环境变量生效:source ~/.bash_profile

修改hadoop102、hadoop103节点data/myid,必须与zoo.cfg中的配置保持一致:

server.101=192.168.1.101:2888:3888
server.102=192.168.1.102:2888:3888
server.103=192.168.1.103:2888:3888

所以hadoop102的myid修改为102,hadoop103的myid修改为103.

6.启动服务
在每个节点启动zookeeper服务:zkServer.sh start
查看每个节点zookeeper的角色:zkServer.sh status
zookeeper的概念、集群部署、使用
从图中可看到启动成功,多出了QuorumPeerMain进程,随机选出的leaer是hadoop102,其他两节点是follower

7.客户端连接
在任一个节点执行:zkCli.sh -server 192.168.1.101:2181进行连接,其中192.168.1.101是所在节点的ip。
安装成功会出现一下界面:
zookeeper的概念、集群部署、使用

三、基本操作

3.1 zookeeper的基本操作

zookeeper的概念、集群部署、使用

3.2 演示

注意:里面的节点不是文件,是为了记忆的代号。
zookeeper的概念、集群部署、使用

3.3 客户端工具ZooInspector

下载:
https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
运行:
解压缩后双击打开ZooInspector\build\zookeeper-dev-ZooInspector.jar后会出现以下界面, 把localhost改成任意一个节点的ip,其他不用改。zookeeper的概念、集群部署、使用

以下是连接成功画面,可看到刚才创建的zk节点和zk1节点,它们的value是不一样的。
zookeeper的概念、集群部署、使用

上一篇:zookeeper动态添加/删除集群中实例(zookeeper 3.6)


下一篇:ZooKeeper简介