ZooKeeper是用Java编写的,运行在Java环境上,因此,在部署zk的机器上需要安装Java运行环境。(java环境就不讲了)
zookeeper官方定义:
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
安装ZooKeeper(3种方式)
可以从 https://zookeeper.apache.org/releases.html 下载ZooKeeper,目前最新的稳定版本为 3.4.8 版本,用户可以自行选择一个速度较快的镜像来下载即可。
快速下载地址:http://archive.apache.org/dist/zookeeper/zookeeper-3.4.8/
ZooKeeper软件的文件和目录介绍:
bin:
zk的可执行脚本目录,包括zk服务进程,zk客户端,等脚本。其中,.sh是Linux环境下的脚本,.cmd是Windows环境下的脚本。
conf:
配置文件目录。zoo_sample.cfg为样例配置文件,需要修改为自己的名称,一般为zoo.cfg。log4j.properties为日志配置文件。
lib:
zk依赖的包。
contrib:
一些用于操作zk的工具包。
recipes:
zk某些用法的代码示例
单机模式
单机模式较简单,是指只部署一个zk进程,客户端直接与该zk进程进行通信。
在开发测试环境下,通过来说没有较多的物理资源,因此我们常使用单机模式。当然在单台物理机上也可以部署集群模式,但这会增加单台物理机的资源消耗。故在开发环境中,我们一般使用单机模式。
扩展:
伪分布式安装:
配置环境:一台虚拟机,配置三个节点
三个节点分配目录:
/home/hadoop/zookeeper/zookeeper0
/home/hadoop/zookeeper/zookeeper1
/home/hadoop/zookeeper/zookeeper2
一、第一个节点 /home/hadoop/zookeeper/zookeeper0
1.解压文件
2.修改zoo.cfg
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/home/hadoop/zookeeper/zookeeper0/data
dataLogDir=/home/hadoop/zookeeper/zookeeper0/logs
clientPort=2181
server.0=127.0.0.1:8880:7770
server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772
3.在data目录下创建myid ,分别写:0,1,2 对应server.0 后面数字
其他节点按同样方法配置,注意配置文件名称
4.分别启动zookeeper0、zookeeper1、zookeeper2
cd /home/hadoop/zookeeper/zookeeper0/bin
./zkServer.sh start
查看启动状态(zoo.cfg为第3步配置的文件)
./zkServer.sh status zoo.cfg
通过jps查看运行状态
5.进行zookeeper客户端(2182为配置文件中的clientPort属性配置
./zkCli.sh -server 127.0.0.1:2182
服务端检查命令:
杰普老师笔记:
1.拷贝ZK-3.4.11.tar.gz到Ubuntu中
2.解压ZK
~> tar zxvf zk.tar.gz -C ~/bigdata
3.创建软链接
~> ln -snf /home/kevin/bigdata/zookeeper-3.4.11 /home/kevin/bigdata/zookeeper
4.配置环境变量:
~> vi .profile
export ZK_HOME=/home/kevin/bigdata/zookeeper
export PATH=$PATH:$ZK_HOME/bin
~> source .profile
5.配置zoo.cfg
tickTime=2000
dataDir=/home/kevin/bigdata/data/zookeeper/data
dataLogDir=/home/kevin/bigdata/data/zookeeper/log
clientPort=2181
6.启动ZK服务
~> zkServer.sh start
7.使用ZK客户端连接ZK服务器
~> zkCli.sh -server ud2
8.配置ZK服务端的日志保存目录,打开ZK安装目录的bin目录下的zkServer.sh文件,在29行下面添加如下语句:
ZOO_LOG_DIR=ZK的安装目录的绝对路径/logs
9.重启ZK服务
~> zkServer.sh stop
~> zkServer.sh start
-------------------------------------
ZK的集群模式的配置:U1,U2,U3
1.拷贝ZK的安装包到每个节点上。
2.解压,配置环境变量。
3.配置集群的各个节点上的zoo.cfg
tickTime=2000
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/dataLog
clientPort=2181
initLimit=5
syncLimit=2
server.1=U1的IP:2888:3888
server.2=U2的IP:2888:3888
server.3=U3的IP:2888:3888
--------------------------------------
服务器检查命令:
telnet ip port
ZK中创建节点:
[zk: ud2(CONNECTED) 2] create /kevin ""
上述创建的是永久节点。
[zk: ud2(CONNECTED) 2] create -e /liuhl ""
上述创建的是临时节点。