您的位置:首页 > 其它

zookeeper介绍

2014-12-14 13:27 113 查看

zookeeper介绍

★ 什么是zookeeper

zookeeper 是 Google 的 Chubby一个开源的实现,是Hadoop 的分布式协调服务。

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

★ zookeeper的角色

大部分的分布式应用都需要一个主控、协调器或控制器来管理物理分布的子进程。

zookeeper提供通用的分布式锁服务,用以协调分布式应用。

★ zookeeper特性

摘自别处。

一、Zookeeper是简单的

二、Zookeeper是富有表现力的

三、Zookeeper具有高可用性

四、Zookeeper采用松耦合交互方式

五、Zookeeper是一个资源库

★ zookeeper 部署

一、zk服务器集群规模不小于3个节点,要求各服务器之间系统时间要保持一致。

二、在hadoop5的/usr/local目录下,解压缩zk....tar.gz,设置环境变量

三、在conf目录下,修改文件 vi zoo_sample.cfg zoo.cfg

四、编辑该文件,执行vi zoo.cfg

修改dataDir=/hadoopdat/zk/data

新增 server.5=hadoop5:2888:3888

server.6=hadoop6:2888:3888

server.7=hadoop7:2888:3888

五、创建文件夹mkdir /hadoopdat/zk/data

六、在data目录下,创建文件myid,值为5

七、把zk目录复制到hadoop6和hadoop7中

八、把hadoop6中相应的myid的值改为6

把hadoop7中相应的myid的值改为7

九、启动,在三个节点上分别执行命令zkServer.sh start

十、检验,在三个节点上分别执行命令zkServer.sh status 状态如下所示:

这是一个follower

这是一个follower

这是一个leader

★ zookeeper概述

Zookeeper 不仅可以单机提供服务,同时也支持多机组成集群来提供服务 , 实际上 Zookeeper 还支持另外一种伪集群的方式,也就是可以在一台物理机上运行多个 Zookeeper 实例;

nitLimit:这个配置项是用来配置Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10
秒;

syncLimit:这个配置项标识Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒;server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的
Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。除了修改 zoo.cfg 配置文件,集群模式下还要配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面就有一个数据就是 A 的值,Zookeeper 启动时会读取这个文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是那个 server。

分别在3台机器上启动ZooKeeper的Server:sh bin/zkServer.sh start;运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble)。Zookeeper通过复制来实现高可用性,只要集合体中半数以上的机器处于可用状态,它就能够保证服务继续。为什么一定要超过半数呢?这跟Zookeeper的复制策略有关:zookeeper确保对znode 树的每一个修改都会被复制到集合体中超过半数的机器上。

★ zookeeper数据类型

在zk集群中,每个节点叫做znode

节点Znode可以包含数据和子节点,但是EPHEMERAL类型的节点不能有子节点

ZNode有两种类型,短暂的ephemeral和persistent

ZNode的类型在创建时确定并且之后不能再修改

短暂ZNode的客户端会话结束时,zookeeper会将该短暂znode删除,短暂znode不可以有子节点

持久znode不依赖于客户端会话,只有当客户端明确要删除持久znode时才会被删除

Znode有四种形式的目录节点:

PERSISTENT

PERSISTENT_SEQUENTIAL

EPHEMERAL

EPHEMERAL_SEQUENTIAL

★ zookeeper的角色

领导者:leader 负责进行投票的发起和决议,更新系统状态

学习者:learner 包括跟随者follower和观察者observer。

follower用于接受客户端请求并向客户端返回结果,在选举中参与投票

observer可以接受客户端连接,将 写请求转发给leader,但observer不参与投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度。

client:请求的发起方

★ zookeeper的shell操作

集群搭建完成以后,通过jps命令,可以查看到zookeeper的后台进程

在Hadoop基础上多了一个QuorunPeerMain的进程

进入客户端:

[root@hadoop6 bin]# zkCli.sh 进入客户端模式

可用的命令

范例:

over
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: