0.安装前准备

(1)安装 JDK

(2)下载 Zookeeper 安装包,并将安装包传到服务器上


1.本地模式安装

本地模式的安装很简单,将安装包解压到指定目录,然后修改一个配置即可。

(1)将安装包解压到指定目录
[admin@hadoop102 software]$ tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/

每个人的目录可能不一样,按照自己的目录规划来,直接解压安装包就行。

(2)修改配置

来到解压后的目录中的 conf 路径下,将文件 zoo_sample.cfg 修改为 zoo.cfg。

[admin@hadoop102 conf]$ mv zoo_sample.cfg zoo.cfg

打开 zoo.cfg 文件,修改 dataDir 路径。

[admin@hadoop102 conf]$ vim zoo.cfg

将 dataDir 路径修改为:

dataDir=/opt/module/apache-zookeeper-3.5.7-bin/zkData

之所以要修改这个路径,是因为 dataDir 默认路径在 /temp 目录下,这个目录是 Linux 系统的临时目录,会定期自动删除。具体将 dataDir 路径修改到哪没有强制要求,但是最好改到 Zookeeper 根目录下的某个目录中,比如根目录下的 zkData 目录,所以我们要回到 Zookeeper 根目录去创建一个 zkData 目录。

[admin@hadoop102 apache-zookeeper-3.5.7-bin]$ mkdir zkData

本地模式安装已完成。


2. Zookeeper 相关命令

本地模式安装好了,可以试着操作一下 Zookeeper 了,接下来介绍一下 Zookeeper 相关的命令:

(1)启动 Zookeeper 服务端
[admin@hadoop102 apache-zookeeper-3.5.7-bin]$ bin/zkServer.sh start
(2)查看进程
[admin@hadoop102 apache-zookeeper-3.5.7-bin]$ jps
4020 Jps
4001 QuorumPeerMain

QuorumPeerMain 就是 Zookeeper 服务端的进程。

(3)查看状态
[admin@hadoop102 apache-zookeeper-3.5.7-bin]$ bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/module/apache-zookeeper-3.5.7-bin/bin/../conf/zoo.cfg
Mode: standalone
  • Mode: standalone 表示本地模式。
(4)启动客户端
[admin@hadoop102 apache-zookeeper-3.5.7-bin]$ bin/zkCli.sh
(5)退出客户端
[zk: localhost:2181(CONNECTED) 0] quit
(6)停止 Zookeeper 服务端
[admin@hadoop102 apache-zookeeper-3.5.7-bin]$ bin/zkServer.sh stop

3. zoo.cfg 配置文件说明

# The number of milliseconds of each tick
# 通信心跳时间,Zookeeper服务器与客户端心跳时间,单位毫秒。
tickTime=2000

# The number of ticks that the initial 
# synchronization phase can take
# LF初始通信时限。
# Leader和Follower初始连接时能容忍的最多心跳数,单位次(即tickTime的数量)。
initLimit=10

# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
# LF同步通信时限。
# Leader和Follower连接之后,通信时能容忍的最多心跳数,单位次。
# 时间如果超过syncLimit * tickTime,Leader认为Follwer挂掉,从服务器列表中删除Follwer。
syncLimit=5

# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
# 保存Zookeeper中的数据的目录。
dataDir=/opt/module/apache-zookeeper-3.5.7-bin/zkData

# the port at which the clients will connect
# 客户端连接端口,通常不做修改。
clientPort=2181

4. 集群安装

集群中只要有半数以上节点存活,Zookeeper 集群就能正常服务。所以 Zookeeper 适合安装奇数台服务器。

例如:

  • 集群一共5个节点,其中3个节点挂掉,存活服务器 2 < 2.5,Zookeeper 集群不能正常服务。
  • 集群一共6个节点,其中3个节点挂掉,存活服务器 3 = 3,Zookeeper 集群不能正常服务。

可见,6个(偶数)节点比5个(奇数)节点多一个节点,但是并没有增加集群的可靠性,所以没必要多增加一个节点(到偶数节点)。

我们简单安装一个有3个节点的集群就行了,现有服务器 hadoop102、hadoop103、hadoop104,前面我们已经在服务器 hadoop102 安装过本地模式。

下面开始集群安装:

(1)配置节点(服务器)编号

先在服务器 hadoop102 上操作,来到我们创建的目录 /zkData 中,创建文件 myid(文件必须叫 myid,从源码中可以看到读取的文件就是 myid)。

[admin@hadoop102 zkData]$ vi myid

然后在文件中添加与 server 对应的编号(注意:上下不要有空行,左右不要有空格)

2

没有强制要求,但是最好按照一定的规律,因为这台服务器是 hadoop102,所以这里编号就设置为2。

(2)在配置文件 zoo.cfg 中配置集群节点信息

在配置文件 zoo.cfg 的最下面增加如下的配置:

# cluster
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888

** 配置说明

格式: server.A=B:C:D

  • A 是一个数字,表示这个是第几号服务器;集群模式下配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面有一个数据就是 A 的值,Zookeeper 启动时读取此文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是哪个 server。
  • B 是这个服务器的地址;
  • C 是这个服务器 Follower 与集群中的 Leader 服务器交换信息的端口;
  • D 是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
(3)在其余节点(服务器)安装 Zookeeper

我们已经在服务器 hadoop102 上安装并配置好了,可以直接将目录 apache-zookeeper-3.5.7-bin 整个分发到其余服务器(hadoop103、hadoop104)的相应目录下。

分发后,分别到其余服务器的 myid 文件中修改编号,hadoop103 的编号为3,hadoop104 的编号为4。

至此, Zookeeper 集群就安装完成了。

(4)启动集群并查看状态

分别到每台服务器启动 Zookeeper 服务端:

[admin@hadoop102 apache-zookeeper-3.5.7-bin]$ bin/zkServer.sh start

[admin@hadoop103 apache-zookeeper-3.5.7-bin]$ bin/zkServer.sh start

[admin@hadoop104 apache-zookeeper-3.5.7-bin]$ bin/zkServer.sh start

分别在每台服务器查看状态:

[admin@hadoop102 apache-zookeeper-3.5.7-bin]$ bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/apache-zookeeper-3.5.7-bin/bin/../conf/zoo.cfg
Mode: follower

[admin@hadoop103 apache-zookeeper-3.5.7-bin]$ bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/apache-zookeeper-3.5.7-bin/bin/../conf/zoo.cfg
Mode: leader

[admin@hadoop104 apache-zookeeper-3.5.7-bin]$ bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/apache-zookeeper-3.5.7-bin/bin/../conf/zoo.cfg
Mode: follower
  • Mode: leader 表示该节点是集群中的 leader 节点。
  • Mode: follower 表示该节点是集群中的 follower 节点。

目前只有 3 台服务器,还可以分别到每台服务器上操作,如果服务器数量太多,每台服务器都单独操作就太麻烦了,就需要写一个 Shell 脚本一次性操作所有节点了。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐