zoukankan      html  css  js  c++  java
  • ZooKeeper搭建和使用笔记

    写在前面

    ZooKeeper是整个大数据体系结构中十分重要的一环,这个组件的存在主要是作为一个控制中心,对整个大数据体系结构进行统一的管理。这篇笔记主要记录了如何搭建一个ZooKeeper集群,以及基本的Shell操作命令,因为Java API的操作十分简单,估计也不会很常用,就不再记录了。

    搭建ZooKeeper集群

    准备工作

    首先要准备三台虚拟机,我们之前搭建的hadoop集群正好就可以使用,hadoop集群的搭建教程博客可以在这里了解,我们先把zookeeper的安装包拷贝到/opt/software下。(ZooKeeper的运行也是基于JDK的,但我们的集群早就配置好了JDK,这里就不再赘述了。)

    开始安装

    首先把ZooKeeper的安装包进行解压:

    [liuge@hadoop03 software]$ tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/module/
    

    打开/opt/module/zookeeper-3.4.10/conf目录,将zoo_sample.cfg改名为zoo.cfg:

    [liuge@hadoop03 conf]$ mv zoo_sample.cfg zoo.cfg
    

    打开zoo.cfg文件,修改dataDir路径:

    [liuge@hadoop03 zookeeper-3.4.10]$ vim zoo.cfg
    dataDir=/opt/module/zookeeper-3.4.10/zkData
    

    之后在/opt/module/zookeeper-3.4.10/下创建zkData目录:

    [liuge@hadoop03 zookeeper-3.4.10]$ mkdir zkData
    

    创建好之后,我们回到module目录下,把zookeeper文件夹分发到其他结点:

    [liuge@hadoop03 module]$ xsync zookeeper-3.4.10/
    

    然后在/opt/module/zookeeper-3.4.10/zkData目录下创建一个叫myid的文件,并在里面写上一个编号:

    [liuge@hadoop03 zkData]$ touch myid
    [liuge@hadoop03 zkData]$ vim myid
    
    3
    

    这里面的ID随便设置,只要是唯一的且你自己记得住就行。

    之后分发这个文件:

    [liuge@hadoop03 zkData]$ xsync myid
    

    并在hadoop04,hadoop05上修改myid文件中内容分别为4和5

    之后,再次编辑conf下的zoo.cfg文件,添加如下内容:

    [liuge@hadoop03 conf]$ vim zoo.cfg
    
    
    #######################cluster##########################
    server.3=hadoop03:2888:3888
    server.4=hadoop04:2888:3888
    server.5=hadoop05:2888:3888
    

    然后把这个文件再分发一次:

    [liuge@hadoop03 zkData]$ xsync zoo.cfg
    

    这里要注意,这个配置参数的意思为:

    server.A=B:C:D,其中A是一个数字,代表这是第几号服务器,也就是我们在myid里配置的那个数字。B是这个服务器的ip地址,这里我配置了主机名与IP地址的映射,相当于ip地址。C是服务器与集群中的Leader服务器交换信息的端口,D是执行选举时服务器相互通信的端口。

    启动集群

    配置完成后,我们可以开始启动了。每个虚拟机挨个启动:

    [liuge@hadoop03 zookeeper-3.4.10]$ bin/zkServer.sh start
    [liuge@hadoop03 zookeeper-3.4.10]$ bin/zkServer.sh start
    [liuge@hadoop03 zookeeper-3.4.10]$ bin/zkServer.sh start
    

    shell操作ZooKeeper集群

    1. 启动客户端:

      [liuge@hadoop04 zookeeper-3.4.10]$ bin/zkCli.sh
      
    2. 显示所有操作:

      [zk: localhost:2181(CONNECTED) 1] help
      
    3. 显示当前znode中所包含的内容:

      [zk: localhost:2181(CONNECTED) 0] ls /
      [zookeeper]
      
    4. 查看当前节点的详细数据:

      [zk: localhost:2181(CONNECTED) 1] ls2 /
      [zookeeper]
      cZxid = 0x0
      ctime = Thu Jan 01 08:00:00 CST 1970
      mZxid = 0x0
      mtime = Thu Jan 01 08:00:00 CST 1970
      pZxid = 0x0
      cversion = -1
      dataVersion = 0
      aclVersion = 0
      ephemeralOwner = 0x0
      dataLength = 0
      numChildren = 1
      
    5. 创建两个普通节点:

      [zk: localhost:2181(CONNECTED) 3] create /sanguo "jinlian"
      Created /sanguo
      [zk: localhost:2181(CONNECTED) 4] create /sanguo/shuguo "liubei"
      Created /sanguo/shuguo
      
    6. 获得节点的值:

      [zk: localhost:2181(CONNECTED) 5] get /sanguo
      jinlian
      cZxid = 0x100000003
      ctime = Wed Aug 29 00:03:23 CST 2018
      mZxid = 0x100000003
      mtime = Wed Aug 29 00:03:23 CST 2018
      pZxid = 0x100000004
      cversion = 1
      dataVersion = 0
      aclVersion = 0
      ephemeralOwner = 0x0
      dataLength = 7
      numChildren = 1
      [zk: localhost:2181(CONNECTED) 6]
      [zk: localhost:2181(CONNECTED) 6] get /sanguo/shuguo
      liubei
      cZxid = 0x100000004
      ctime = Wed Aug 29 00:04:35 CST 2018
      mZxid = 0x100000004
      mtime = Wed Aug 29 00:04:35 CST 2018
      pZxid = 0x100000004
      cversion = 0
      dataVersion = 0
      aclVersion = 0
      ephemeralOwner = 0x0
      dataLength = 6
      numChildren = 0
      
    7. 创建短暂节点:

      [zk: localhost:2181(CONNECTED) 7] create -e /sanguo/wuguo "zhouyu"
      Created /sanguo/wuguo
      
    8. 创建带序号的节点:

      [zk: localhost:2181(CONNECTED) 2] create -s /sanguo/weiguo/xiaoqiao "jinlian"
      Created /sanguo/weiguo/xiaoqiao0000000000
      [zk: localhost:2181(CONNECTED) 3] create -s /sanguo/weiguo/daqiao "jinlian"
      Created /sanguo/weiguo/daqiao0000000001
      [zk: localhost:2181(CONNECTED) 4] create -s /sanguo/weiguo/diaocan "jinlian"
      Created /sanguo/weiguo/diaocan0000000002
      
    9. 修改节点的数据值

      [zk: localhost:2181(CONNECTED) 6] set /sanguo/weiguo "simayi"
      
    10. 监听节点的值的变化(只能监听一次)

      [zk: localhost:2181(CONNECTED) 26] [zk: localhost:2181(CONNECTED) 8] get /sanguo watch
      
    11. 监听节点的子节点变化(只能监听一次)

      [zk: localhost:2181(CONNECTED) 1] ls /sanguo watch
      [aa0000000001, server101]
      
    12. 删除节点

      [zk: localhost:2181(CONNECTED) 4] delete /sanguo/jin
      
    13. 递归删除节点:

      [zk: localhost:2181(CONNECTED) 15] rmr /sanguo/shuguo
      
    14. 查看节点状态:

      [zk: localhost:2181(CONNECTED) 17] stat /sanguo
      cZxid = 0x100000003
      ctime = Wed Aug 29 00:03:23 CST 2018
      mZxid = 0x100000011
      mtime = Wed Aug 29 00:21:23 CST 2018
      pZxid = 0x100000014
      cversion = 9
      dataVersion = 1
      aclVersion = 0
      ephemeralOwner = 0x0
      dataLength = 4
      numChildren = 1
      

    总结

    总的来说,比起hadoop,ZooKeeper的搭建和配置都十分简单容易,且使用起来也十分简单。经过了配置Hadoop的摧残,这种程度的配置我觉得已经难不倒我们了。

  • 相关阅读:
    PSP编程
    题库软件1.0发布
    ubuntu上安装netgear wg511v2驱动
    boost的编译
    Plot3D 0.3发布
    立体画板Plot3D
    求教团队内的朋友,在directx中,如何画虚线?
    OpenGL如何显示文本?
    JZ028数组中出现次数超过一半的数字
    JZ027字符串的排列
  • 原文地址:https://www.cnblogs.com/wushenjiang/p/13809576.html
Copyright © 2011-2022 走看看