Zookeeper的介绍和安装

文章目录

  • Zookeeper的介绍和安装
  • zookeeper概述
  • Zookeeper的集群机制
    • zookeeper集群节点的角色
      • Leader
    • Follower
      • Observer
      • 集群环境准备
    • 2.节点的映射关系
    • 3.配置免密登录
      • 3.1生成公钥和私钥
      • 3.2发送公钥给需要免密登录的节点
    • 4.关闭防火墙
    • 5.克隆后网络配置
  • Zookeeper集群搭建
    • 1.获取安装文件并解压
    • 2.配置zoo.cfg文件
      • 1. 将zoo_sample.cfg重命名为zoo.cfg
      • 2.修改zoo.cfg配置文件
      • 3.myid配置
      • 4.分发安装文件
    • 5.启动
    • 6.测试
      • 查看zookeeper进程编号
      • 再次查看另外两个节点情况
      • 再次将leader节点kill掉
    • zookeeper.out 日志输出

Zookeeper的介绍和安装

Zookeeper的介绍和安装_第1张图片

zookeeper概述

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

Zookeeper是一个分布式协调服务;就是为用户的分布式应用程序提供协调服务

序号 功能
1 为别的分布式程序服务的
2 本身就是一个分布式程序
3 主从协调 服务器节点动态上下线 统一配置管理 分布式共享锁 统一名称服务
4 管理(存储,读取)用户程序提交的数据 并为用户程序提供数据节点监听服务

Zookeeper的集群机制

zookeeper是为其他分布式程序提供服务的,所以本身自己不能随便就挂了,所以zookeeper自身的集群机制就很重要。zookeeper的集群机制采用的是半数存活机制,也就是整个集群节点中有半数以上的节点存活,那么整个集群环境可用。这也就是说们的集群节点最好是奇数个节点。

zookeeper集群节点的角色

Leader

Leader服务器是Zookeeper集群工作的核心,其主要工作如下

​ 事务请求的唯一调度和处理者,保证集群事务处理的顺序性。

​ 集群内部各服务器的调度者。

Follower

Follower是Zookeeper集群的跟随者,其主要工作如下

  1. 处理客户端非事务性请求(读取数据),转发事务请求给Leader服务器。
  2. 参与事务请求Proposal的投票。
  3. 参与Leader选举投票。

Observer

Observer充当观察者角色,观察Zookeeper集群的最新状态变化并将这些状态同步过来,其对于非事务请求可以进行独立处理,对于事务请求,则会转发给Leader服务器进行处理。Observer不会参与任何形式的投票,包括事务请求Proposal的投票和Leader选举投票

集群环境准备

通过上面的介绍我们了解到zookeeper的集群环境应该配置奇数个节点,所以我们在本文中搭建的zookeeper环境准备在3个节点上搭建。接下来我们介绍下需要准备的环境。

1.准备3个节点

准备3个centos6.5的虚拟机节点,并且安装配置好JDK版本最好是8.不清楚的可参考此地址Linux之jdk安装,并配置好相关的网络配置。

ip 主机名
192.168.179.131 hadoop-node01
192.168.197.132 hadoop-node02
192.168.197.133 hadoop-node03

2.节点的映射关系

每个节点设置相应的ip和主机名的映射关系,方便集群环境的部署

vim /etc/hosts
192.168.197.131 hadoop1
192.168.197.132 hadoop2
192.168.197.133 hadoop3

Zookeeper的介绍和安装_第2张图片

image.png

3.配置免密登录

3.1生成公钥和私钥

ssh-keygen

Zookeeper的介绍和安装_第3张图片

​ 然后四次回车就可以了,然后就可以在当前登录用户的主目录下可以查看到.ssh目录,公钥和私钥就保存在该目录中

image.png

3.2发送公钥给需要免密登录的节点

ssh-copy-id hadoop2

Zookeeper的介绍和安装_第4张图片

分别发送给各个节点,自身也需要发送。
然后在其他两个节点上重复此步骤

登录测试

Zookeeper的介绍和安装_第5张图片

4.关闭防火墙

本文的环境中我们就直接永久关闭防火墙。

Zookeeper的介绍和安装_第6张图片

​ 表示防火墙关闭
至此zookeeper集群环境搭建的准备工作准备完成,下篇我们主要介绍zookeeper的集群环境搭建。

5.克隆后网络配置

ps:我只修改了ip。

Zookeeper集群搭建

1.获取安装文件并解压

官网地址: http://zookeeper.apache.org/
下载地址: http://mirror.bit.edu.cn/apache/zookeeper/

百度网盘 提取码:ikht

命令下载

wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz

Zookeeper的介绍和安装_第7张图片

解压缩安装文件

目录结构说明
cd命令进入解压文件夹

Zookeeper的介绍和安装_第8张图片

目录 说明
bin 存放的可执行文件 ,使用命令都在bin目录下面
conf 存放的配置文件
contrib 存放扩展包
dist-maven Mvn编译后的目录
docs 存放文档
lib 存放jar包Zookeeper是使用Java开发的,会用到很多jar包都存放在lib目录下
recipes 案例demo代码
src 存放的是源代码

2.配置zoo.cfg文件

从上面的目录结构我们指定配置文件保存在conf目录下,所以我们cd到conf目录下

Zookeeper的介绍和安装_第9张图片

1. 将zoo_sample.cfg重命名为zoo.cfg

Zookeeper的介绍和安装_第10张图片

2.修改zoo.cfg配置文件

修改的地方有两处:

  1. 修改zookeeper存储数据的位置
  2. 添加集群节点信息
dataDir=/opt/zookeeper/zkData
dataLogDir=/opt/zookeeper/zkLog
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888

Zookeeper的介绍和安装_第11张图片

配置说明

配置项 说明
tickTime=2000 zookeeper里面最小的时间单位为2000ms
initLimit=10 Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。Leader允许F在 initLimit 时间内完成这个工作。通常情况下,我们不用太在意这个参数的设置。如果ZK集群的数据量确实很大了,F在启动的时候,从Leader上同步数据的时间也会相应变长,因此在这种情况下,有必要适当调大这个参数了
syncLimit=5 在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。如果L发出心跳包在syncLimit之后,还没有从F那里收到响应,那么就认为这个F已经不在线了。注意:不要把这个参数设置得过大,否则可能会掩盖一些问题
dataDir 存储快照文件snapshot的目录。默认情况下,事务日志也会存储在这里。建议同时配置参数dataLogDir, 事务日志的写性能直接影响zk性能
dataLogDir 事务日志输出目录。尽量给事务日志的输出配置单独的磁盘或是挂载点,这将极大的提升ZK性能
clientPort 客户端连接server的端口,即对外服务端口 ,默认是2181
server.1配置集群节点 hadoop-node01:2888:3888 主机名, 心跳端口、数据端口 的格式

3.myid配置

​ 在 zookeeper的数据的存储目录中创建 myid文件,本文既是zkData目录下,这个myid中的内容只有一行信息,即表示我们集群节点的标示,范围在1~255之间。每个节点中的myid的数字和我们在zoo.cfg中的server.数字=host…对应,

创建这块Data目录:

创建myid并设置值为1(hadoop-node01节点)

Zookeeper的介绍和安装_第12张图片

4.分发安装文件

​ 将我们hadoop-node01上安装配置的环境分发到hadoop-node02和hadoop-node03两个节点相同的目录下:

ps:使用 /home/cjw 目录中转文件,不容易出现权限问题。

scp -r zookeeper hadoop2:`/home/cjw/`
scp -r zookeeper hadoop3:`/home/cjw/`

确认分发成功后分别修改hadoop-node02和hadoop-node03上的myid的值分别为2,3

Zookeeper的介绍和安装_第13张图片

Zookeeper的介绍和安装_第14张图片

5.启动

分别在三个节点的zookeeper的安装根目录下执行如下启动命令:

 ./zookeeper/bin/zkServer.sh start

Zookeeper的介绍和安装_第15张图片

查看状态,分别在每个节点上执行

 ./zookeeper/bin/zkServer.sh status

hadoop1

Zookeeper的介绍和安装_第16张图片

hadoop2

Zookeeper的介绍和安装_第17张图片

hadoop3

Zookeeper的介绍和安装_第18张图片

说明启动成功

6.测试

​ 我们将zookeeper集群节点半数存活即可用,我们现在是3个节点,那么我们kill掉一个节点应该还可以继续使用,kill掉两个就不能够使用了。所以我们来测试下

查看zookeeper进程编号

通过jps命令即可查看

Zookeeper的介绍和安装_第19张图片

kill 掉这个节点,也就是leader节点

kill -9 1527

再次查看另外两个节点情况

hadoop1

Zookeeper的介绍和安装_第20张图片

hadoop2

Zookeeper的介绍和安装_第21张图片

hadoop1变成了leader节点了。

再次将leader节点kill掉

再次将leader节点kill掉,也就是将3个集群节点中的两个kill掉后发现集群不可用了。

Zookeeper的介绍和安装_第22张图片

zookeeper.out 日志输出

  • 查看输出。节点开启失败,,,可以查看该日志。很有帮助。

你可能感兴趣的:(zookeeper)