专栏首页魏晓蕾的专栏【ZooKeeper】ZooKeeper架构及单机和分布式环境搭建

【ZooKeeper】ZooKeeper架构及单机和分布式环境搭建

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/gongxifacai_believe/article/details/79598841

1、ZooKeeper介绍

Zookeeper是一种分布式架构,是为分布式应用提供协调服务的Apache开源项目,使用类似于文件系统的树型数据结构,目的是实现分布式协作。

2、ZooKeeper角色

(1)领导者(Leader):领导者负责进行投票的发起和决议,更新系统状态。

(2)学习者(Learner):

>>跟随者(Follower):Follower用于接收客户请求并向客户端返回结果,在选举领导者过程中参与投票。

>>观察者(Observer):Observer可以接收客户端连接,将写请求转发给leader节点,但Observer不参与投票过程,只同步leader的状态。Observer的目的是为了扩展系统,提高读取速度。

(3)客户端(Client):请求发起方。

3、ZooKeeper节点

Zookeeper的节点数目必须是奇数,机器的时间必须是同步的。Zookeeper具有容错性,允许坏掉若干台机器,N=2*n+1,总机器数为N,允许坏掉n台。节点名称:znode,和namenode很类似,数据会存放在zookeeper的JVM内存中(读取速度快),本地也有备份。

4、ZooKeeper集群

Zookeeper集群分为两部分:服务端和客户端,客户端可以连接集群中的任意一台机器。Zookeeper从设计模式角度来看,是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者,做出相应的反应,从而实现集群中类似Master/Slave管理模式。

应用场景有:统一命名服务(Name Service)、配置管理(Configuration Management)、集群管理(Group Membership)、共享锁(Locks)/同步锁。

5、ZooKeeper配置参数详解

(1)tickTime:这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳。

(2)dataDir:顾名思义就是Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。

(3)clientPort:这个端口就是客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口,接受客户端的访问请求。

(4)Zookeeper Client命令

$ bin/zkCli.sh

子命令:ls、get、create、delete、set等等。

6、ZooKeeper的单机部署(本地配置)

(1)解压安装包:tar -zxf zookeeper-3.4.5.tar.gz -C /opt/modules/

(2)复制配置文件:$ cp conf/zoo_sample.cfg conf/zoo.cfg

创建目录:$ mkdir /opt/modules/zookeeper-3.4.5/data/zkData

指定本地存储数据的路径:

/opt/modules/zookeeper-3.4.5/conf/zoo.cfg中修改

dataDir=/opt/modules/zookeeper-3.4.5/data/zkData

(3)启动Zookeeper命令:$ bin/zkServer.sh start

查看Zookeeper状态:$ bin/zkServer.sh status

查看Zookeeper进程:$ jps

2414 QuorumPeerMain

启动Zookeeper客户端命令:$ bin/zkCli.sh

7、ZooKeeper的分布式部署

(1)解压安装包:tar -zxf zookeeper-3.4.5.tar.gz -C /opt/app/

(2)修改配置文件

指定存储数据的路径:

/opt/app/zookeeper-3.4.5/conf/zoo.cfg中修改

dataDir=/opt/app/zookeeper-3.4.5/data/zkData

添加分布式节点的主机名称及端口号

/opt/app/zookeeper-3.4.5/conf/zoo.cfg中,在clientPort=2181下面添加:

server.1=hadoop-senior.ibeifeng.com:2888:3888 server.2=hadoop-senior02.ibeifeng.com:2888:3888 server.3=hadoop-senior03.ibeifeng.com:2888:3888

在/opt/app/zookeeper-3.4.5/data/zkData中vim myid,只输入1。编写机器的ID编号。

(3)远程分发配置到各个节点

[beifeng@hadoop-senior zookeeper-3.4.5]$ pwd /opt/app/zookeeper-3.4.5

[beifeng@hadoop-senior zookeeper-3.4.5]$ scp -r ../zookeeper-3.4.5/ hadoop-senior02.ibeifeng.com:/opt/app/

[beifeng@hadoop-senior zookeeper-3.4.5]$ scp -r ../zookeeper-3.4.5/ hadoop-senior03.ibeifeng.com:/opt/app/

(4)分发到其他节点后,修改/opt/app/zookeeper-3.4.5/data/zkData中的myid为2或3。

(5)启动Zookeeper命令:$ bin/zkServer.sh start

查看Zookeeper状态:$ bin/zkServer.sh status

显示状态:Mode: follower或者Mode: leader

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MySQL 数据库主从同步与读写分离

    指定master访问slave的账号,并授权REPLICATION SLAVE权限。

    魏晓蕾
  • IDEA中Lombok插件的安装与使用

    我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性的构造器、getter、setter、equals、hashcode、toStr...

    魏晓蕾
  • Windows下MySQL 8.x和8.x以前版本的安装步骤

    官方下载地址:https://dev.mysql.com/downloads/mysql/

    魏晓蕾
  • Geotools之“Hello World”——打开本地shp文件并显示

    概述:从本节开始,博文中会陆陆续续更新一些有关geotools相关的文章。本节讲述的是geotools的开胃菜,打开本地shp文件,并在窗口中显示。

    lzugis
  • Akka(11): 分布式运算:集群-均衡负载

    在上篇讨论里我们主要介绍了Akka-Cluster的基本原理。同时我们也确认了几个使用Akka-Cluster的重点:首先,Akka-Cluster集群构建与...

    用户1150956
  • zookeeper的使用

    zookeeper的使用 zookeeper介绍 Zookeeper是一个集中式的服务,包括管理配置信息,命名服务,提供分布式的同步,以及提供分组服务等。所有这...

    零月
  • mysql-proxy数据库中间件架构 | 架构师之路

    一、mysql-proxy简介 mysql-proxy是mysql官方提供的mysql中间件服务,上游可接入若干个mysql-client,后端可连接若干个my...

    架构师之路
  • 一脸懵逼学习Zookeeper(动物园管理员)---》高度可靠的分布式协调服务

    1:Zookeeper是一个分布式协调服务;就是为用户的分布式应用程序提供协调服务   A、zookeeper是为别的分布式程序服务的   B、Zook...

    别先生
  • Webpack编译结果浅析

    如今Webpack已经是一个不可或缺的前端构建工具,借助这个构建工具,我们可以使用比较新的技术(浏览器不能直接支持)来开发。

    书童小二
  • 《Python 源码剖析》一些理解以及勘误笔记(1)

    以下是本人阅读此书时理解的一些笔记,包含一些影响文义的笔误修正,当然不一定正确,贴出来一起讨论。 注:此书剖析的源码是2.5版本,在python.org 可以找...

    s1mba

扫码关注云+社区

领取腾讯云代金券