• Zookeeper 学习(三)Zookeeper 分布式应用


    1、分布式安装部署

    1、集群规划
    在虚拟 hadoop103、hadoop104、hadoop105 三个节点上部署 Zookeeper;
    2、解压安装
    解压安装文件到指定路径
    [hui@hadoop103 software]$ tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/module/
    同步安装文件到 Hadoop104 Hadoop105 节点
    [hui@hadoop103 module]$ sh xsync.sh zookeeper-3.4.10/
    3、配置服务器编号
    在/opt/module/zookeeper-3.4.10/这个目录下创建zkData
    [hui@hadoop103 zookeeper-3.4.10]$ mkdir -p zkData
    创建编辑 myid 文件
    [hui@hadoop103 zkData]$ vi myid
    3
    分发 myid 文件到 其余节点
    集群内的服务器编号不能重复,分发myid 后需要进行修改;

     4、配置 zoo.cfg 文件

    重命名/opt/module/zookeeper-3.4.10/conf这个目录下的zoo_sample.cfg为zoo.cfg

    [hui@hadoop103 conf]$ mv zoo_sample.cfg zoo.cfg
    打开zoo.cfg文件,添加配置

    dataDir=/opt/module/zookeeper-3.4.10/zkData
    #######################cluster##########################
    server.2=hadoop102:2888:3888
    server.3=hadoop103:2888:3888
    server.4=hadoop104:2888:3888
    分发配置 
    [hui@hadoop103 conf]$ sh xsync.sh zoo.cfg
    配置文件说明
    server.A=B:C:D。
    A是一个数字,表示这个是第几号服务器;
    集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。
    B是这个服务器的ip地址;
    C是这个服务器与集群中的Leader服务器交换信息的端口;
    D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

     5、集群操作 

    分别在三个节点上启动 Zookeeper
    [hui@hadoop103 zookeeper-3.4.10]$ bin/zkServer.sh start
    [hui@hadoop104 zookeeper-3.4.10]$ bin/zkServer.sh start
    [hui@hadoop105 zookeeper-3.4.10]$ bin/zkServer.sh start
    查看状态 
    [hui@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: follower
    [hui@hadoop104 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
    [hui@hadoop105 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

    编写群起脚本

    启动脚本

    [hui@hadoop103 ~]$ more /home/hui/bin/zkstart.sh 
    #!/bin/sh
    for i in hui@hadoop103 hui@hadoop104 hui@hadoop105
    do
         echo ------------------- $i  --------------
     ssh $i 'source /etc/profile && /opt/module/zookeeper-3.4.10/bin/zkServer.sh start'
    done

    停止脚本

    [hui@hadoop103 ~]$ more /home/hui/bin/zkstop.sh 
    #!/bin/sh
    for i in hui@hadoop103 hui@hadoop104 hui@hadoop105
    do
         echo ------------------- $i  --------------
     ssh $i 'source /etc/profile && /opt/module/zookeeper-3.4.10/bin/zkServer.sh stop'

    2、客户端命令操作

    命令基本语法
    功能描述
    help
    显示所有操作命令
    ls path [watch]
    使用 ls 命令来查看当前znode中所包含的内容
    ls2 path [watch]
    查看当前节点数据并能看到更新次数等数据
    create
    普通创建
    -s  含有序列
    -e  临时(重启或者超时消失)
    get path [watch]
    获得节点的值
    set
    设置节点的具体值
    stat
    查看节点状态
    delete
    删除节点
    rmr
    递归删除节点

    1、启动客户端、

    [hui@hadoop105 zookeeper-3.4.10]$ bin/zkCli.sh
    2、显示常用命令

    [zk: localhost:2181(CONNECTED) 0] help
    ZooKeeper -server host:port cmd args
            stat path [watch]
            set path data [version]
            ls path [watch]
            delquota [-n|-b] path
            ls2 path [watch]
            setAcl path acl
            setquota -n|-b val path
            history 
            redo cmdno
            printwatches on|off
            delete path [version]
            sync path
            listquota path
            rmr path
            get path [watch]
            create [-s] [-e] path data acl
            addauth scheme auth
            quit 
            getAcl path
            close 
            connect host:port
    3、查看当前 znode 所有内容 
    [zk: localhost:2181(CONNECTED) 1] ls /
    [zookeeper, xajh]

    4、查看详细内容

    [zk: localhost:2181(CONNECTED) 2] ls2 /
    [zookeeper, xajh]
    cZxid = 0x0
    ctime = Thu Jan 01 08:00:00 CST 1970
    mZxid = 0x0
    mtime = Thu Jan 01 08:00:00 CST 1970
    pZxid = 0x200000002
    cversion = 0
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 0
    numChildren = 2

    5、创建普通节点

    [zk: localhost:2181(CONNECTED) 5] create /xajh hausan
    [zk: localhost:2181(CONNECTED) 6] ls /xajh       
    [huashan]

    6、创建短暂节点

    [zk: localhost:2181(CONNECTED) 18] create -e /xajh/songshan zuolc
    Created /xajh/songshan
    
    [zk: localhost:2181(CONNECTED) 2] ls /xajh 
    [huashan]
    短暂节点创建后,推出客户端再次启动客户端 短暂节点丢失;

    7、创建带有序号的节点

    [zk: localhost:2181(CONNECTED) 3] create -s /xajh/songshan zuolc
    Created /xajh/songshan0000000003
    [zk: localhost:2181(CONNECTED) 4] create -s /xajh/songshan zuolc
    Created /xajh/songshan0000000004

    8、修改节点值

    [zk: localhost:2181(CONNECTED) 5] get /xajh/huashan
    linghc
    cZxid = 0x200000003
    ctime = Fri Oct 09 18:27:36 CST 2020
    mZxid = 0x200000003
    mtime = Fri Oct 09 18:27:36 CST 2020
    pZxid = 0x200000003
    cversion = 0
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 6
    numChildren = 0
    [zk: localhost:2181(CONNECTED) 6] set  /xajh/huashan linpz
    cZxid = 0x200000003
    ctime = Fri Oct 09 18:27:36 CST 2020
    mZxid = 0x30000000c
    mtime = Fri Oct 09 19:40:38 CST 2020
    pZxid = 0x200000003
    cversion = 0
    dataVersion = 1
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 5
    numChildren = 0
    [zk: localhost:2181(CONNECTED) 7] get /xajh/huashan       
    linpz
    cZxid = 0x200000003
    ctime = Fri Oct 09 18:27:36 CST 2020
    mZxid = 0x30000000c
    mtime = Fri Oct 09 19:40:38 CST 2020
    pZxid = 0x200000003
    cversion = 0
    dataVersion = 1
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 5
    numChildren = 0

    9、节点值变化监听

    在 hadoop104 上注册监听 /xajh 监听

    [zk: localhost:2181(CONNECTED) 3] get /xajh/huashan watch
    hadoop103 修改值
    [zk: localhost:2181(CONNECTED) 8] set  /xajh/huashan longhc
    cZxid = 0x200000003
    ctime = Fri Oct 09 18:27:36 CST 2020
    mZxid = 0x30000000e
    mtime = Fri Oct 09 19:45:48 CST 2020
    pZxid = 0x200000003
    cversion = 0
    dataVersion = 2
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 6
    numChildren = 0
    [zk: localhost:2181(CONNECTED) 9] 
    hadoop104 客户端提示
    WATCHER::
    
    WatchedEvent state:SyncConnected type:NodeDataChanged path:/xajh/huashan
    说明:监听程序注册一次只有效一次,需要再次有效,需要再次注册;

    10、删除节点

    [zk: localhost:2181(CONNECTED) 8] delete /xajh/songshan0000000004
    [zk: localhost:2181(CONNECTED) 10] ls /xajh
    [songshan0000000003, huashan]

    11、递归删除节点

    [zk: localhost:2181(CONNECTED) 11] rmr /xajh
    [zk: localhost:2181(CONNECTED) 12] ls /
    [zookeeper]
     
     

  • 相关阅读:
    团队开发第二阶段
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    C++类class和结构体struct区别
    c++简单的类的建立与参数的两种传递方法
    C++ 使用delete删除指针
    暂存
  • 原文地址:https://www.cnblogs.com/wdh01/p/13983005.html
Copyright © 2020-2023  润新知