ZooKeeper 集群的详细部署

一、ZooKeeper 简介

1.1 什么是 ZooKeeper

  • 定义:zookeeper一个分布式的开源的协调服务框架,服务于分布式应用。
    • 它暴露了一系列的原语操作服务,因此分布式应用能够基于这些服务,构建出更高级别的服务,比如同步,配置管理,分组和命名服务。

    • zookeeper设计上易于编码,数据模型构建在我们熟悉的树形结构目录风格的文件系统中,

    • zookeeper运行在Java中,同时支持Java和C 语言

1.2 ZooKeeper 特点

  • 最终一致性
    • 客尸端末论连接到哪个 Server,展示给它的都是同一个视图,这是Zookeeper最重要的特点。
  • 可靠性
    • Zookeeper 具有简单、健壮、良好的性能。如果一条消息被一台服务器接收,那么它将被所有的服务器接收。
  • 实时性
    • Zookeeper 保证客户端将在一个时间间隔范围内,获得服务器的更新信息或者服务器失效的信息。但由于网络延时等原因
    • zookeeper 不能保证两个客户端能同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口。
  • 等待无关(wait-free)
    • 慢的或者失效的客户端不得干预快速的客户端的请求,这就使得每个客户端都能有效地等待。
  • 原子性
    • 对zookeeper的更新操作要么成功,要么失败,没有中间状态。
  • 顺序性
    • 它包括全局有序和偏序两种
      • 全局有序是针对服务器端,例如,在一台服务器上,消息A在消息B前发布,那么所有服务器上的消息A都将在消息B前被发布。
      • 偏序是针对客户端,例如,在同一个客户端中,消息B在消息A后发布,那么执行的顺序必将是先执行消息A然后在是消息B。所有的更新操作都有严格的偏序关系,更新操作都是串行执行的,这一点是保证ZooKeeper功能正确性的关键。

二 ZooKeeper 的架构和设计

Zookeeper 服务自身组成一个集群(2n+1个服务节点最多允许n个失效)。Zookeeper 服务有两个角色:一个是主节点(Leader),负责投票的发起和决议,更新系统状态;另一种是从节点(Follower),用于接收客户端请求并向客户端返回结果,在选主过程(即选择主节点的过程)中参与投票。主节点失效后,会在从节点中重新选举新的主节点。
在这里插入图片描述

4.1 ZooKeeper 数据模型

zookeeper的数据结构与linux文件系统很类似,与Linux中的文件系统路径不同,Zookeeper中的路径必须是绝对路径,而且每条路径只有唯一的一种表示方式(/app1/p_3)。
在这里插入图片描述

4.1.1 Znode 节点特性

  • 临时节点
    znode节点有两种:临时节点和持久节点。znode的类型在创建时就确定,之后不能修改当创建临时节点的客户端会话结束时,2ookeeper 会将该临时节点删除。而持久节点不依赖与客户端会话,只有当客户端明确要删除该持久节点时才会被真正删除。临时节点不可以有子节点,即使是短暂的子节点。

  • 顺序节点
    顺序节点是指名称中包含Zookeeper指定顺序号的znode。如果在创建znode的时候设置了顺序标识,那么该znode名称之后就会附加一个值,这个值是由一个单调递增的计数器所添加的,由父节点维护。

  • 观察机制
    客户端可以在znode上设置watcher,当节点状态发生改变时将会触发watcher所对应的操作当watcher被触发时,ZooKeeper将会向客户端发送且仅发送一条通知,因为watcher只能被触发一次,这样可以减少网络流量。为了能够多次收到通知,客户端需要重新注册所需的watcher

在这里插入图片描述

三、ZooKeeper 的集群安装前准备工作

3.1 需要的准备工作

  • Linux 系统3 个节点准备
  • 配置主机名与IP地址映射
  • 配置时钟同步
  • 集群SSH密码登录
  • JDK安装

目标配置如下三台服务器:

服务器序号 IP 主机名称
1 192.168.220.151 hadoop1
2 192.168.220.152 hadoop2
2 192.168.220.153 hadoop3

3.2 Linux 系统 3 个节点准备

3.2.1 克隆

使用MVware 的克隆功能,克隆出另外两台 Hadoop 服务器
在这里插入图片描述
选择克隆完整版
在这里插入图片描述

3.2.2 配置另外两台服务器的静态IP

登录服务后,修改服务器网络配置:

[root@hadoop1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

修改 IP 地址即可,其他不变
在这里插入图片描述

3.2.3 修改主机名

[root@hadoop1 ~]# vim /etc/hostname

第二台服务器主机名:hadoop2 ,第三台服务器主机名:hadoop3
在这里插入图片描述

3.3 配置主机名与IP地址映射

三台服务器都需要配置主机名与IP地址映射

[root@hadoop1 ~]# vim /etc/hosts

添加如下内容:

192.168.220.151 hadoop1
192.168.220.152 hadoop2
192.168.220.153 hadoop3

在这里插入图片描述

三台服务器可以通过主机名相互访问

在这里插入图片描述

3.4 配置时钟同步

Hadoop 集群对节点的时间同步要求比较高,要求各个节点的系统时间不能相差太多,否则会造成很多问题,比如,最常见的连接超时问题。所以需要集群节点的系统时间与互联网的时间保持同步,但是在实际生产环境中,集群中大部分节点是不能连接外网的,这时候可以在内网搭建一个自己的时钟服务器(比如 NTP 服务器),然后让 Hadoop 集群的各个节点与这时钟服务器的时间保持同步

此处我选择 hadoop1 作为时钟服务器(大家随意)

  • 查看时间类型
[root@hadoop1 ~]# date

在这里插入图片描述

CST 为上海时间,如果是 HKT,表示香港时间,可以通过如下操作进行调整

[root@hadoop1 ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 

注意:检测所有服务器的时间类型,保证都是上海时间
在这里插入图片描述

  • 配置 NTP 服务器

  • 检测 NTP 服务是否安装

# 检测是否安装 ntp
[root@hadoop1 ~]# rpm -qa | grep ntp

# 如果没有安装,进行安装
[root@hadoop1 ~]# yum install -y ntp

在这里插入图片描述
安装成功

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

slb190623

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值