Zookeeper从入门到精通系列之--0.Zookeeper概述及安装环境

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Haidaiya/article/details/84718617

目录

一 Zookeeper入门

1.1 概述

1.2 Zookeeper的特点

1.3Zookeeper的文件系统

1.4 Zookeeper的下载

二 Zookeeper分布式安装

2.1 解压配置

三 集群启动

四 Zookeeper重点

4.1Zookeeper选举机制

4.2监听器原理


一 Zookeeper入门

1.1 概述

Zookeeper(润滑剂)是为分布式提供协调服务的一种框架,Zookeeper其实不难,但是确实很难理解,我还是用自己的话总结一下吧,Zookeeper = 文件系统 + 通知机制,什么意思呢?如果从java的观察者模式考虑的话,他就是一个观察者模式的框架,它的文件系统存储的是集群都很关心的数据(比方说每台机器的负载情况),当文件系统中的数据发生变化时,他会通知其他计算机,大概就是这样,现在不理解也没有关系,后面还会介绍。

1.2 Zookeeper的特点

1.3Zookeeper的文件系统

Zookeeper的文件系统和Linux的基本一样,如下图所示:

1.4 Zookeeper的下载

Zookeeper的官网:https://zookeeper.apache.org/

下载在上图左下角Download,进入后见如下界面:

点击下载即可,不需要太新的版本。

二 Zookeeper分布式安装

Zookeeper比较难理解,但是在搭建环境中理解还是比较好的,现在开始搭建环境:

2.1 解压配置

(1)三台服务器上都需要安装Zookeeper,以一台机器为例,解压

tar  -zxvf   zookeeper-3.4.10.tar.gz -C   /opt/module/

(2)配置当前服务器的编号

为什么要配置当前服务器的编号呢?因为三台服务器中都需要进行通讯,肯定要清楚彼此啊!正如在hadoop框架中指定namenode在哪台服务器,datanode在哪里一样。

在/opt/module/zookeeper-3.4.10目录下新建zkData文件夹,新建myid文件,并在文件中添加编号2

mkdir   -p   zkData

vim     myid

添加2即可,另外两台机器添加3和4

(3)配置zoo.cfg文件

进入/opt/module/zookeeper-3.4.10/conf,将zoo_sample.cfg改名为zoo.cfg,编辑zoo.cfg

mv zoo_sample.cfg zoo.cfg

修改dataDir=/opt/module/zookeeper-3.4.10/zkData

并添加

server.2=hadoop102:2888:3888

server.3=hadoop103:2888:3888

server.4=hadoop104:2888:3888

注意,另外两台机器也需要同步,解释一下2888和3888,2888表示这个服务器和Leader交换信息的端口,3888表示万一这个集群的leader挂了,其他的服务器通过这个端口选出新leader

三 集群启动

集群的启动命令在bin目录下,总结一下,Zookeeper分为服务端和客户端,服务端将自己的状态信息存储在Zookeeper集群上,客户端在集群上对自己想要监听的数据进行注册监听,那么当这个数据发生变化时,Zookeeper就会把这个变化告诉客户端,每次监听只执行一次。

服务端启动:bin/zkServer.sh    start

客户端启动:bin/zkCli.sh start

四 Zookeeper重点

4.1Zookeeper选举机制

  1. Zookeeper要求集群中半数以上的机器存活才会启动,不包括半数,所以Zookeeper适合奇数个的集群
  2. 集群中只有一个Leader,其余均为Fllower,选举机制为投票制,举例说明若集群中有5台机器ABCDE,当A启动,A的id为1(myid文件中的值),未超过半数以上机器,不启动;B启动,id为2,集群数为2,未超过半数不启动;C启动,id为3,超过半数以上,允许启动且id最大,所以Leader为C,DE启动后也只能为Fllower。
  3. Zookeeper节点机制,前面提到Zookeeper中存储信息的文件目录和Linux相同,但是它的节点分为4种,分别为持久化目录节点(persistent),持久化顺序编号(persistent_squential),临时目录节点(ephemeral),临时顺序编号节点(ephemeral_squential),要根据业务需求选择节点类型

4.2监听器原理

特别重要,这里以具体的例子解释,光说实在索然无味

  • 启动集群,三台服务器均需要,Zookeeper是不依赖Hadoop的,Hive这种需要先启动Hadoop才能启动Hive。

102:bin/zkServer.sh start

103:bin/zkServer.sh start

104:bin/zkServer.sh start

  • 查看三台机器的状态

102:bin/zkServer.sh status         follower

103:bin/zkServer.sh status         follower

104:bin/zkServer.sh status         leader

  • 启动客户端,随便哪台机器

103:bin/zkCli.sh

注意这里启动客户端没有start,容易出错

  • 查看Zookeeper的文件系统,这里涉及到第一个重点了

103:ls   /  或者ls2 /   ls2表示详细查看

这个我之前实验的时候建立了几个,默认只有zookeeper一个

  • 注册监听,这里涉及到第二个重点了,假设上图中wangleijia节点存储了我的重要信息,现在我用104号机器监听这个wangleijia节点,然后我在102号机器改变这个节点,如果成功的话,Zookeeper应该要告诉104机器,你监听的wangleijia节点发生了变化,这个应该可以理的清楚吧

查看wangleijia中本来的值:get     /wanglei            可以看下图知道里面寸的wanglei,假设这个wanglei很重要,是公司里面的资金密码。

在104号机器中监听wangleijia节点:get   /wangleijia   watch

重点来了,我在102机器上改变wangleijia里面的值了,相当于我是黑客,准备篡改公司的资金密码了,一旦我改了,Zookeeper一定要告诉104对吧!

102:set     /wangleijia    “liuyue”

此时,104已经得到了通知:

到此,监听机制就是这样,104就知道了wangleijia已经被篡改了,太危险了!!!!

猜你喜欢

转载自blog.csdn.net/Haidaiya/article/details/84718617
今日推荐