Zookeeper完全分布式环境部署

1、背景知识

ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现分布式应用程序可以基于ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、配置维护,名字服务、分布式同步、分布式锁和分布式队列等功能。

2、使用软件及其版本

  • 环境

    • 虚拟机:vmware

    • Linux:CentOS 7

    • Windows:Windows10

  • 软件

    • Zookeeper:zookeeper-3.4.5-cdh5.7.0

  • 工具

    • 远程连接工具:XShell5

3、目标

  • zookeeper分布式部署

4、操作步骤

  1. 集群规划

    • 规划集群由3台主机构成

      主机名IPNamenodeDataNodeYarnZookeeperJournalNode
      master192.168.137.2
      slave01192.168.137.3
      slave02192.168.137.4
  2. zookeeper分布式部署

    1. 上传zookeeper到master节点主机,解压安装文件,使用命令:

      tar -zxvf zookeeper-3.4.5-cdh5.7.0.tar.gz -C ~/app/

    2. 修改配置信息

      1. 添加配置文件

        在zookeeper的conf目录下,添加配置文件zoo.cfg,使用命令:

        cp zoo_sample.cfg zoo.cfg

        配置项的含义:

        1.tickTime:CS通信心跳时间 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。 tickTime=2000

        2.initLimit:LF初始通信时限 集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。 initLimit=5

        3.syncLimit:LF同步通信时限 集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。 syncLimit=2

        4.dataDir:数据文件目录 Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。 dataDir=/home/michael/opt/zookeeper/data

        5.clientPort:客户端连接端口 客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。 clientPort=2181

        6.服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口) 这个配置项的书写格式比较特殊,规则如下: server.N=YYY:A:B

      2. 修改配置信息,使用命令:

        sudo vi zoo.cfg

        将dataDir=/tmp/zookeeper 改为 dataDir=/home/hadoop/data/zoo/data

        然后在最后追加:

      3. server.1=master:2888:3888
        server.2=slave01:2888:3888
        server.3=slave02:2888:3888
    3. 创建myid文件
      1. 每个节点的配置文件(zoo.cfg)都是一样的,只有 myid 文件不一样。myid 的值必须是 zoo.cfg中server.{数值} 的{数值}部分。

        在/home/hadoop/data/zoo/data下创建一个myid文件,使用命令:

        touch myid
        echo 1 > myid

      2. 复制到其他主机

        1. 复制zoo/data文件夹到slave01,slave02主机,使用命令:

          scp -r zoo hadoop@slave01:~/data/

          scp -r zoo hadoop@slave02:~/data/

        2. 在slave01,slave02主机上修改配置myid值,使用命令:

          echo 2 > myid

          echo 3 > myid

    4. 启动集群

      1. 在master节点,拷贝配置好的zookeeper安装文件夹到slave01,slave02节点主机中,使用命令:

        scp -r zookeeper-3.4.5-cdh5.7.0/ hadoop@slave01:~/app/

        scp -r zookeeper-3.4.5-cdh5.7.0/ hadoop@slave02:~/app/

      2. 在master , slave01 , slave02分别启动zookeeper

        进入zookeeper下的bin文件夹,使用命令:

        ./zkServer.sh start

    5. 查看状态

      分别在master,slave01,slave02节点上,使用命令:

      ./zkServer status

    6. 同步数据

      • 在master节点,上使用命令:

        ./zkCli.sh

        创建一个文件,看看是否同步到其他机器上:

        WatchedEvent state:SyncConnected type:None path:null
        [zk: localhost:2181(CONNECTED) 0] ls /
        [zookeeper]
        [zk: localhost:2181(CONNECTED) 1] create /test hello
        Created /test
        [zk: localhost:2181(CONNECTED) 2] get /test
        hello
        cZxid = 0x100000002
        ctime = Sun Sep 19 18:19:38 CST 2021
        mZxid = 0x100000002
        mtime = Sun Sep 19 18:19:38 CST 2021
        pZxid = 0x100000002
        cversion = 0
        dataVersion = 0
        aclVersion = 0
        ephemeralOwner = 0x0
        dataLength = 5
        numChildren = 0 
      • 在slave01,slave02节点,查看

        在slave01,slave02,使用命令:

        ./zkCli.sh

        查看:

        WatchedEvent state:SyncConnected type:None path:null
        [zk: localhost:2181(CONNECTED) 0] ls /
        [zookeeper, test]
        [zk: localhost:2181(CONNECTED) 1] get /test
        hello
        cZxid = 0x100000002
        ctime = Sun Sep 19 18:19:38 CST 2021
        mZxid = 0x100000002
        mtime = Sun Sep 19 18:19:38 CST 2021
        pZxid = 0x100000002
        cversion = 0
        dataVersion = 0
        aclVersion = 0
        ephemeralOwner = 0x0
        dataLength = 5
        numChildren = 0

      • 在master节点删除文件夹

        [zk: localhost:2181(CONNECTED) 3] delete /test
        [zk: localhost:2181(CONNECTED) 4] ls /
        [zookeeper]
        

        在slave01,slave02节点,检查发现文件夹也已经删除,表示数据同步成功!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

㫪旧

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

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

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

打赏作者

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

抵扣说明:

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

余额充值