Zookeeper简介与集群搭建

Zookeeper简介

Zookeeper是一个高效的分布式协调服务,可以提供配置信息管理、命名、分布式同步、集群管理、数据库切换等服务。它不适合用来存储大量信息,可以用来存储一些配置、发布与订阅等少量信息。Hadoop、Storm、消息中间件、RPC服务框架、分布式数据库同步系统,这些都是Zookeeper的应用场景。

Zookeeper集群中节点个数一般为奇数个(>=3),若集群中Master挂掉,剩余节点个数在半数以上时,就可以推举新的主节点,继续对外提供服务。


在这里还是要推荐下我自己建的大数据学习群:199427210,群里都是学大数据开发的,如果你正在学习大数据 ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有大数据软件开发相关的),包括我自己整理的一份2018最新的大数据进阶资料和高级开发教程,欢迎进阶中和进想深入大数据的小伙伴加入。

c213ec49377209996fe5cdbba427ce28041.jpg

8e29f17618979fdf9d1c718f80565314f57.jpg
客户端发起事务请求,事务请求的结果在整个Zookeeper集群中所有机器上的应用情况是一致的。不会出现集群中部分机器应用了该事务,而存在另外一部分集群中机器没有应用该事务的情况。在Zookeeper集群中的任何一台机器,其看到的服务器的数据模型是一致的。Zookeeper能够保证客户端请求的顺序,每个请求分配一个全局唯一的递增编号,用来反映事务操作的先后顺序。Zookeeper将全量数据保存在内存中,并直接服务于所有的非事务请求,在以读操作为主的场景中性能非常突出。

Zookeeper使用的数据结构为树形结构,根节点为"/"。Zookeeper集群中的节点,根据其身份特性分为leader、follower、observer。leader负责客户端writer类型的请求;follower负责客户端reader类型的请求,并参与leader选举;observer是特殊的follower,可以接收客户端reader请求,但是不会参与选举,可以用来扩容系统支撑能力,提高读取速度。

Zookeeper是一个基于观察者模式设计的分布式服务管理框架,负责存储和管理相关数据,接收观察者的注册。一旦这些数据的状态发生变化,zookeeper就负责通知那些已经在zookeeper集群进行注册并关心这些状态发生变化的观察者,以便观察者执行相关操作。

Zookeeper使用的是ZAB原子消息广播协议,节点之间的一致性算法为Paxos,能够保障分布式环境中数据的一致性。分布式场景下高可用是Zookeeper的特性,可以采用第三方客户端的实现,即Curator框架。


0944de9bb4e47d6a2f1feb89d9ab7dc2b0e.jpg


Paxos 算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。一个典型的场景是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点执行相同的操作序列,那么他们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。一个通用的一致性算法可以应用在许多场景中,是分布式计算中的重要问题。因此从20世纪80年代起对于一致性算法的研究就没有停止过。节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing)。Paxos 算法就是一种基于消息传递模型的一致性算法。
不仅仅是分布式系统中,凡是多个过程需要达成某种一致的场合都可以使用Paxos 算法。一致性算法可以通过共享内存(需要锁)或者消息传递实现,Paxos 算法采用的是后者。Paxos 算法适用的几种情况:一台机器中多个进程/线程达成数据一致;分布式文件系统或者分布式数据库中多客户端并发读写数据;分布式存储中多个副本响应读写请求的一致性。
Zookeeper集群搭建

在本文中Zookeeper节点个数(奇数)为3个。Zookeeper默认对外提供服务的端口号2181 。Zookeeper集群内部3个节点之间通信默认使用2888:3888

192.168.0.217   192.168.0.218    192.168.0.219

下载zookeeper对应的tar包


2fe730d73f4c92f9876da746102b6ca2001.jpg

分别上传tar包到192.168.0.217   192.168.0.218    192.168.0.219


2ee7e619804104db67d0ee42828f77bf2fb.jpg

在217、218、219三个zookeeper节点上分别执行下行指令,然后将解压后的文件名zookeeper-3.4.10修改为zookeeper。

tar -zxvf zookeeper-3.4.10.tar.gz -C /usr/local/

在三个zookeeper节点配置环境变量

vim /etc/profile

添加export ZOOKEEPER_HOME=/usr/local/zookeeper

在path中添加$ZOOKEEPER_HOME/bin

9c450703822a049b908f2054b696ba1d2a2.jpg

执行source /etc/profile   使环境变量立即生效

修改zookeeper中conf目录下的zoo_sample.cfg为zoo.cfg


54805a09c4ba9a745cf18cb66a0e8cbeabc.jpg

修改三个zookeeper节点中的zoo.cfg文件,修改dataDir,添加server.0、server.1、server.2


e541b83dce4af9d5f0e1e940c7c4f8f52f0.jpg

在zookeeper目录下,创建data目录。在3个zookeeper节点中data目录下分别创建myid文件,并分别添加内容0、1、2


b450133811cd03d0b9c9129cc83e09a67ae.jpg

启动zookeeper


d552f167c47be4c199bf76e6611f5c7abd2.jpg

zkServer.sh start

zkServer.sh status


5005cafbe724922a5f5cbdf914e808d2236.jpg

在zookeeper中任意一个节点,执行指令zkCli.sh


c5ba6fe98d71ea1eb2e5a1e1105cb780477.jpg

执行指令zkCli.sh help  ,查看帮助信息


a7c03c892d03a4abd503ee831cccae5ab22.jpg

ls  /   查找根目录

create /test abc   创建节点并赋值

get /test   获取指定节点的值

set /test cb  设置已存在节点的值

rmr /test  递归删除节点

eed6f330ff246d81fc9c8cbb937b91c5b77.jpg

d42e12224c115d81f371cd179dfa64d5857.jpg

delete /test/test01  删除不存在子节点的节点


8d2dc182fdbf4e34d920d621987acb9efe8.jpg

在Eclipse中查看Zookeeper集群节点

也可以使用ZooInspector查看。


52374e2c3f7f08fecd2f777a11be80d9593.jpg

此时,在Xshell中执行zkCli.sh,查看Zookeeper集群中树形结构的内容

589b587c9a32452c57025c7bf2d34bb8a99.jpg

在Eclipse、ZooInspector中均可以添加、删除Zookeeper集群的节点

beb20b51602b7b7feffe2315732a8de9c06.jpg


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31561003/viewspace-2222347/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31561003/viewspace-2222347/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值