zoukankan      html  css  js  c++  java
  • zookeeper完全分布式环境部署

    Zookeeper完全分布式环境部署

    1、背景知识

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

    2、使用软件及其版本

    • 环境

      • 虚拟机:VirtualBox 6.0.24 r139119

      • Linux:CentOS 7

      • Windows:Windows10

    • 软件

      • Zookeeper:zookeeper-3.4.5-cdh5.7.0

    • 工具

      • 远程连接工具:XShell6

      • SFTP工具:FileZilla3.33.0

    3、目标

    • zookeeper分布式部署

    4、操作步骤

    1. 集群规划

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

        主机名IPNamenodeDataNodeYarnZookeeperJournalNode
        master 192.168.137.2
        slave01 192.168.137.3
        slave02 192.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

          然后在最后追加:

           server.1=master:2888:3888
           server.2=slave01:2888:3888
           server.3=slave02:2888:3888

        3. 创建myid文件

          每个节点的配置文件(zoo.cfg)都是一样的,只有 myid 文件不一样。myid 的值必须是 zoo.cfg中server.{数值} 的{数值}部分。

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

           touch myid
           echo 1 > myid

        4. 复制到其他主机

          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

      3. 启动集群

        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

      4. 查看状态

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

        ./zkServer status

      5. 同步数据

        • 在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节点,检查发现文件夹也已经删除,表示数据同步成功!

     

    5、总结

     

  • 相关阅读:
    Core Animation 文档翻译—附录C(KVC扩展)
    Core Animation 文档翻译—附录B(可动画的属性)
    Core Animation 文档翻译—附录A(Layer样貌相关属性动画)
    Core Animation 文档翻译 (第八篇)—提高动画的性能
    Core Animation 文档翻译 (第七篇)—改变Layer的默认动画
    Core Animation 文档翻译 (第六篇)—高级动画技巧
    Core Animation 文档翻译 (第五篇)—构建Layer的层次结构
    用Markdown快速排版一片文章
    Core Animation 文档翻译 (第四篇)—让Layer的content动画起来
    Core Animation 文档翻译(第三篇)—设置Layer对象
  • 原文地址:https://www.cnblogs.com/LEPENGYANG/p/15736433.html
Copyright © 2011-2022 走看看