一、Zookeeper的介绍
1.1、什么是Zookeeper
Zookeeper 是 Google 的 Chubby一个开源的实现,是 Hadoop 的分布式协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等
1.2、为什么使用Zookeeper
- 大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等)
- 目前,大部分应用需要开发私有的协调程序,缺乏一个通用的机制
- 协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器
- ZooKeeper:提供通用的分布式锁服务,用以协调分布式应用
Zookeeper就如同动物管理员
1.3、Zookeeper能帮我们做什么?
- Hadoop2.0,使用Zookeeper的事件处理确保整个集群只有一个活跃的NameNode,存储配置信息等.
- HBase,使用Zookeeper的事件处理确保整个集群只有一个HMaster,察觉HRegionServer联机和宕机,存储访问控制列表等.
1.4、Zookeeper的特性
- 一致性:数据一致性,数据按照顺序分批入库
- 原子性:事物要么成功要么失败,不会局部化
- 单一视图:客户端连接集群中的任意zk节点,数据都是一致的
- 可靠性:每次对zk的操作状态都会保存在服务端
- 实时性:客户端可以读取到zk服务端的最新数据
Zookeeper 作为 Hadoop 项目中的一个子项目,是 Hadoop 集群管理的一个必不可少的模块,它主要用来控制集群中的数据,如它管理 Hadoop 集群中的 NameNode,还有 Hbase 中 Master Election、Server 之间状态同步等。
Zoopkeeper 提供了一套很好的分布式集群管理的机制,就是它这种基于层次型的目录树的数据结构,并对树中的节点进行有效管理,从而可以设计出多种多样的分布式的数据管理模型。
二、Zookeeper分布式安装与配置
1、下载Zookeeper
运行环境是在Ubuntu14系统下,Zookeeper当前稳定版本zookeeper-3.4.12
下载地址:http://mirrors.hust.edu.cn/apache/zookeeper/
2、安装Zookeeper
2.1 解压安装包zookeeper-3.4.12.tar至路径 /usr/local,命令如下:
sudo tar -zxf ~/zookeeper-3.4.12.tar -C /usr/local
2.2 将解压的文件名zookeeper-3.4.12改为zookeeper,以方便使用,命令如下:
sudo mv /usr/local/zookeeper-3.4.12 /usr/local/zookeeper
2.3 配置环境变量,将hbase下的bin目录添加到path中:
vim ~/.bashrc
如果没有引入过PATH请在~/.bashrc文件尾行添加如下内容:
export PATH=$PATH:/usr/local/zookeeper/bin
如果已经引入过PATH请在export PATH这行追加/usr/local/zookeeper/bin,这里的“:”是分隔符,如图:
执行source命令使上述配置在当前终端立即生效:
source ~/.bashrc
2.4 创建Zookeeper存储目录:
cd /usr/local/zookeeper #进入Zookeeper目录
mkdir zkdata #创建zkdata
cd zkdata
pwd #/usr/local/zookeeper/zkdata
备注:这个会在配置Zookeeper文件中有用
3、修改配置文件
3.1 进入conf文件夹 cd /usr/local/zookeeper/conf
拷贝zoo_sample.cfg为zoo.cfg
cp zoo_sample.cfg zoo.cfg
3.2 编辑zoo.cfg
vim zoo.cfg
1、更改dataDir=/usr/local/zookeeper/zkdata
2、添加集群端点(注意master、slave是自己的主机名)
server.1 = master:2888:3888
server.2 = slave1:2888:3888
server.3 = slave2:2888:3888
3.3 创建myid文件(相当于hadoop中的slave文件)用来分布式管理,类似于主机编号
cd ../zkdata
vim myid
#第一台机器,填写编号1就可以
myid内容
3.4 将master中配置好的Zookeeper分发到其他节点中
cd /usr/local #进入local目录
scp -r zookeeper/ slave1:/usr/local/ #将Zookeeper复制到slave1的local中
备注:同理传入slave2....等多节点中
3.5 修改slave1..各个节点中的myid编号
cd /usr/local/zookeeper/zkdata #进入slave1节点中zkdata文件
vim myid #修改为2
4、启动Zookeeper服务
分别在master和各个slave节点启动Zookeeper服务(slave也要配置环境变量)
zkServer.sh start
5、jsp查看Zookeeper服务
jps #查看是否有下面的进程