环境介绍
系统环境: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
选举机制