Zookeeper

Zookeeper

Zookeeper是一个开源的分布式的、为分布式应用提供协调服务的Apache项目

作用:

​ 负责存储和管理大家都关系的数据,并接受观察者的注册,一旦这些数据的状态发生变化,zookeeper将通知已经在zookeeper上注册的那些观察者做出响应的反应。

(简单来说就是你关注的up主更新了,然后b站发了个推送)

工作机制

image

image

  1. 一个领导者leader和一群跟随者follower组成的集群
  2. 集群中只要半数以上的节点存活,集群就能正常提供服务
  3. 全局数据一致:即每个server保存一份相同的数据副本
  4. 更新请求顺序继续进行(按照client发送的请求按次序执行)
  5. 数据更新的原则性:要么一次性全部数据更新成功,要么都失败
  6. 数据实时性。保证Client在一定时间范围内获取到的数据是最新的

Zookeeper的安装

  • 单机模式运行

    1. 下载zookeeper的安装包

      官网下载

    2. 将压缩包上传到hadoop102上/opt/software目录下,并解压到/opt/module目录下

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

    3. 进入zookeeper的conf目录,拷贝样例配置文件并修改名称

      cp zoo_sample.cfg zoo.cfg

    4. 进入bin目录,启动zookeeper服务

      ./zkServer.sh start

    5. status命令可以查看状态

      [root@hadoop102 zookeeper-3.4.10]# ./zkServer.sh status
      ZooKeeper JMX enabled by default
      Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg
      Mode: standalone

    完成

  • 集群分布式模式

    1. 使用命令stop结束服务

      [root@hadoop102 zookeeper-3.4.10]# bin/zkServer.sh stop
      ZooKeeper JMX enabled by default
      Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg
      Stopping zookeeper ... STOPPED

    2. 编辑conf/zoo.cfg 配置文件

      • 更换工作目录

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

      • 增加服务集群server配置信息

        2888:server之间通信端口号
        3888:选举为leader的端口号
        102、103、104是集群上的server id (不能重复)

      server.102=hadoop102:2888:3888
      server.103=hadoop103:2888:3888
      server.104=hadoop104:2888:3888

    3. 新建工作目录

      [root@hadoop102 zookeeper-3.4.10]# mkdir zkData

    4. 在zkData目录中新建文件 myid 内容为本机的zookeeper的server id

      [root@hadoop102 zkData]# pwd
      /opt/module/zookeeper-3.4.10/zkData
      [root@hadoop102 zkData]# touch myid
      [root@hadoop102 zkData]# echo 102 > myid
      [root@hadoop102 zkData]# cat myid
      102

    5. 配置zookeeper环境

      vi zkEnv.sh

      • 增加JAVA_HOME声明

      ZOOBINDIR="${ZOOBINDIR:-/usr/bin}"
      ZOOKEEPER_PREFIX="${ZOOBINDIR}/.."
      export JAVA_HOME=/opt/module/jdk1.8.0_161

      • 修改zookeeper 日志log目录ZOO_LOG_DIR 位置

      if [ "x${ZOO_LOG_DIR}" = "x" ]
      then
      ZOO_LOG_DIR="/opt/module/zookeeper-3.4.10/logs"
      fi

    6. 将zookeeper的工作目录同步到hadoop103上

      [root@hadoop102 module]# rsync -av zookeeper-3.4.10/
      hadoop103:/opt/module/zookeeper-3.4.10

    7. 在hadoop103上更改本机zookeeper serverid 即 myid 配置文件

      [root@hadoop103 zkData]# echo 103 > myid
      [root@hadoop103 zkData]# cat myid
      103
      [root@hadoop103 zkData]#

    8. 各节点启动服务

      [root@hadoop102 zookeeper-3.4.10]# bin/zkServer.sh start
      ZooKeeper JMX enabled by default
      Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg
      Starting zookeeper ... STARTED
      [root@hadoop102 zookeeper-3.4.10]# bin/zkServer.sh status
      ZooKeeper JMX enabled by default
      Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg
      Mode: follower

      [root@hadoop103 zookeeper-3.4.10]# bin/zkServer.sh start
      ZooKeeper JMX enabled by default
      Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg
      Starting zookeeper ... STARTED
      [root@hadoop103 zookeeper-3.4.10]# bin/zkServer.sh status
      ZooKeeper JMX enabled by default
      Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg
      Mode: leader

    完成

posted @ 2021-04-22 11:35  Karl1  阅读(64)  评论(0编辑  收藏  举报