环境介绍

系统环境:centos7.0
远程链接工具:xshell
服务器:
zookeeper:3.6.1
192.168.137.161
192.168.137.162
192.168.137.163

介绍

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

上面的解释有点抽象,简单来说zookeeper=文件系统+监听通知机制。

Zookeeper能做什么

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

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

特点

一个领导者,多个跟随着 组成的集群;
只要是半数以上的节点存活 Zookeeper集群就能正常服务
全局数据一致:每个Server保存一份相同的数据副本。Client无论是连接到那个Server,数据都是一致的。
更新请求顺序进行。来自同一个Ckient更新请求暗器书勋依次执行
数据跟新的原子性,一次数据更新要么成功,要么失败。
实时性,在一定时间分为内,Client能读到最新数据。

安装配置JDK

#下载 jdk-8u161-linux-x64.tar.gz
#安装
yum install lrzsz

#通过rz 上传 jdk-8u161-linux-x64.tar.gz

#解压 
tar -zxvf jdk-8u161-linux-x64.tar.gz

#创建目录
mkdir /usr/java

 mv jdk.1.8.0_161/ /usr/java/jdk.1.8.0_161

#配置 环境变量
vi /etc/profile

#添加环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_161
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#保存
:wq
#刷新配置文件
source /etc/profile

#查看版信息是否配置成功
java -version

下载zookeeper

#下载
wget https://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz
#解压
 tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz 
 #粘贴到相应目录
 mv apache-zookeeper-3.6.1-bin /usr/local/ 
 
 #或者
 tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz  -C /usr/local/

修改配置文件

cd  /usr/local/apache-zookeeper-3.6.1-bin/conf
mv zoo_sample.cfg zoo.cfg
mkdir /usr/local/apache-zookeeper-3.6.1-bin/zoodata
vi zoo.cfg


#修改
#存储数据地址
dataDIr = /usr/local/apache-zookeeper-3.6.1-bin/zoodata
#心跳毫秒
tickTime=2000
#初始化心跳针 
initLimit=10

#启动后心跳针
syncLimit=5
#端口号
clientPort=2181

tickTime= 	2000 	#控制心跳和超时(毫秒)
initLimit= 	10 	#follower连接到主节点的初始化时间
syncLimit= 	5 	#主从节点请求和应答时间长度
dataDir= 	/home/zookeeper/zookeeper_data 	#用于存储zookeeper产生的数据
clientPort= 	2181 	#Zookeeper客户端端口
maxClientCnxn= 	0 	#为0则不限制客户端连接数量
server.1= 	hadoop-1:2888:3888 	#zookeeper节点名称以及服务所用端口,所有节点依次列举

服务端启动

/usr/local/apache-zookeeper-3.6.1-bin/bin zkServer.sh status
 
 #启动中的问题
 #8080端口占用 
 #zookeeper 端口占用 
 #查看
 jps
 
 #退出
 zkServer.sh

查看日志

./zkServer.sh start-foreground

客户端启动

/usr/local/apache-zookeeper-3.6.1-bin/bin zkCli.sh 
#查看服务
ls
#退出
quit

选举机制