1 ZooKeeper
1.1 概述
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper包含一个简单的原语集,提供Java和C的接口。
ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在$zookeeper_home\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。
zookeeper是一个底层的分布式协调工具!
1.2 基本功能
- 为客户提供写数据功能 数据不大 状态信息数据
- 为客户提供读取据功能
- 为用户提供数据变化时的监控功能
总结: ZooKeeper中仅仅记录一些关键性的数据或者是描述性的数据 ,所以并不存储大量的数据 , 为了保证数据的安全可靠,ZooKeeper要求集群一起工作, 共同存储相同的数据!! (3或者5台) , 3台机器存储三个数据副本, 5台机器就存储5个文件副本!!
1.3 应用场景
Zookeeper的作用有如下:
HDFS YARN的mast是自己制定的(配置HA)
namenode
分布式系统中的主节点选举! 比如hbase中的老大的产生 Hmaster(HA)
分布式系统中的主从节点感知!
分布式系统中的配置文件同步!
系统服务器的动态上下线感知!!!
分布式系统中的分布式锁的实现!分布式中的同一个对象
分布式系统中的名称服务!
分布式系统中的负载均衡!
........
2 安装
2.1 上传到linux机器并解压
rz
tar -zxvf ZooKeeper-3.4.6.tar.gz
2.2 修改配置文件
cd ZooKeeper-3.4.6/conf
mv zoo_sample.cfg zoo.cfg
vi zoo.cfg
dataDir=/usr/apps/zookeeper-3.4.6/zkData
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=linux01:2888:3888
server.2=linux02:2888:3888
server.3=linux03:2888:3888
2.3 创建zkData目录 并写入myid文件
mkdir /opt/apps/zookeeper-3.4.6/zkData
echo 1 > /opt/apps/zookeeper-3.4.6/zkData/myid
2.4 分发
scp -r zookeeper-3.4.6/ linux02:$PWD
scp -r zookeeper-3.4.6/ linux03:$PWD
2.5 修改linux02 linux03 机器的myid的值
linux02 echo 2 > /opt/apps/zookeeper-3.4.6/zkData/myid
linux03 echo 3 > /opt/apps/zookeeper-3.4.6/zkData/myid
2.6 启动zk
每台zk节点启动
bin/zkServer.sh start
2.7 编写一键启动脚本
#!/bin/bash
for i in 1 2 3
do
ssh linux0${i} "source /etc/profile;/opt/apps/zookeeper-3.4.6/bin/zkServer.sh $1"
done
sleep 2
if [ $1 == start ]
then
for i in {1..3}
do
ssh doit0${i} "source /etc/profile;/opt/apps/zookeeper-3.4.6/bin/zkServer.sh status "
done
fi
2.8 查看集群的状态
bin/zkServer.sh status
[root@linux01 apps]# zookeeper-3.4.6/bin/zkServer.sh status
JMX enabled by default
Using config: /opt/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower
[root@linux02 apps]# zookeeper-3.4.6/bin/zkServer.sh status
JMX enabled by default
Using config: /opt/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: leader
[root@linux03 apps]# zookeeper-3.4.6/bin/zkServer.sh status
JMX enabled by default
Using config: /opt/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower