zookeeper的概念、集群部署、使用
一、概念
Zookeeper是一个开源的分布式协调服务框架,主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
ZooKeeper的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。
zookeeper=文件系统+通知机制
二、集群部署
集群模式, 是指在多台机器中分别启动1个zookeeper进程, 组成的集群。通常zk集群的安装节点数为奇数,取3,5,7等等,以下以3台主机为例。
2.1 下载
下载官网
下载完成后把安装包上传到虚拟机hadoop100,上传方法请参考教程中的2.1 上传安装包
2.2 安装
安装的前提:确认关闭防火墙
进入到安装目录: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
使环境变量生效:source ~/.bash_profile
3.在zookeeper的跟目录下创建两个文件夹data和datalog
这两个路径主要是用来存放zk的数据以及日志的(待会需要手动在配置文件中设置)
在data目录下创建一个myid的文件,里面的值可以给个任意的值,假设写的值是101
,主要用于集群中区分某个*
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
从图中可看到启动成功,多出了QuorumPeerMain
进程,随机选出的leaer
是hadoop102,其他两节点是follower
。
7.客户端连接
在任一个节点执行:zkCli.sh -server 192.168.1.101:2181
进行连接,其中192.168.1.101
是所在节点的ip。
安装成功会出现一下界面:
三、基本操作
3.1 zookeeper的基本操作
3.2 演示
注意:里面的节点不是文件,是为了记忆的代号。
3.3 客户端工具ZooInspector
下载:
https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
运行:
解压缩后双击打开ZooInspector\build\zookeeper-dev-ZooInspector.jar
后会出现以下界面, 把localhost
改成任意一个节点的ip,其他不用改。
以下是连接成功画面,可看到刚才创建的zk节点和zk1节点,它们的value是不一样的。