ZooKeeper的介绍及集群的安装与配置

ZooKeeper介绍

什么是ZooKeeper

ZooKeeper是Google的Chubby一个开源的实现,是hadoop的分布式协调服务

它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等

本身是一个集群(一般为奇数个节点,),为其他集群提供少量数据的存储和管理,提供对数据节点的监听器

集群角色:leader、follower
所有的写操作都在leader节点上,有超过一半的节点数据更新成功即成功
leader和follower不是事先通过配置文件决定,是启动的过程中通过特定的机制投票产生一个leader,其余均为follower
3.3.3版本以后,ZooKeeper中又添加了一种新角色Observer
http://www.cnblogs.com/sunddenly/p/4143306.html

ZooKeeper是以Fast Paxos算法为基础的

为什么使用zookeeper?

大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等)
目前,大部分应用需要开发私有的协调程序,缺乏一个通用的机制
协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器
ZooKeeper:提供通用的分布式锁服务,用以协调分布式应用

Zookeeper能帮我们做什么?

Hadoop2.0,使用Zookeeper的事件处理确保整个集群只有一个活跃的NameNode,存储配置信息等.
HBase,使用Zookeeper的事件处理确保整个集群只有一个HMaster,察觉HRegionServer联机和宕机,存储访问控制列表等.

Zookeeper集群的安装和配置

1、解压(在主机192.168.2.15上进行)
tar -zxvf zookeeper-3.4.10.tar.gz -C /home/hadoop/app/

2、添加一个zoo.cfg配置文件
mv zoo_sample.cfg zoo.cfg

3、修改配置文件(zoo.cfg)
dataDir=/home/hadoop/app/zookeeper-3.4.10/data
末尾添加:
server.1=192.168.2.15:2888:3888
server.2=192.168.2.16:2888:3888
server.3=192.168.2.17:2888:3888

4、在(dataDir=/home/hadoop/app/zookeeper-3.4.10/data)创建一个myid文件,里面内容是server.N中的N(server.2里面内容为2)
echo “1” > myid

5、将配置好的zk拷贝到其他节点
scp -r zookeeper-3.4.10/ 192.168.2.16:/home/hadoop/app
scp -r zookeeper-3.4.10/ 192.168.2.17:/home/hadoop/app

6、注意:在其他节点上一定要修改myid的内容
在192.168.2.16中应该将myid的内容改为2 (echo “2” > myid)
在192.168.2.17中应该将myid的内容改为3 (echo “3” > myid)

7、启动集群
分别启动zk(脚本不会自动启动全部节点,需要单独启动)
./zkServer.sh start(stop关闭)
查看状态
./zkServer.sh status

附zookeeper/conf/zoo.cfg其中各配置项的含义,解释如下:

1.tickTime:CS通信心跳时间
Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。
tickTime=2000

2.initLimit:LF初始通信时限
集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
initLimit=5

3.syncLimit:LF同步通信时限
集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。
syncLimit=2

4.dataDir:数据文件目录
Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
dataDir=/home/michael/opt/zookeeper/data

5.clientPort:客户端连接端口
客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
clientPort=2181

6.服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)
这个配置项的书写格式比较特殊,规则如下:
server.N=YYY:A:B

ZooKeeper对数据的管理

  • zookeeper管理客户所存放的数据采用的是类似于文件树的结构
  • 每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识
  • 节点Znode可以包含数据和子节点,但是EPHEMERAL类型的节点不能有子节点
  • Znode中的数据可以有多个版本,比如某一个路径下存有多个数据版本,那么查询这个路径下的数据就需要带上版本
  • 客户端应用可以在节点上设置监视器
  • 节点不支持部分读写,而是一次性完整读写

Zookeeper客户端的使用

./zkCli.sh启动客户端(help查看命令)
ls / 查看节点
create /filename 1111(数值)
set /filename 1000
get /filename

注:zookeeper需要启动配置半数以上的数量才能正常工作

猜你喜欢

转载自blog.csdn.net/ts1130/article/details/78366703