zoukankan      html  css  js  c++  java
  • Zookeeper服务器集群的搭建与操作

    ZooKeeper

    作用:Zookeeper 可以用来保证数据在zk集群之间的数据的事务性一致(原子操作)

    介绍:Zookeeper 是 Google 的 Chubby一个开源的实现,是 Hadoop 的分布式协调服务

        它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。

    特性:简单的、富有表现力的、具有高可用性、采用松耦合交互方式、是一个资源库。


    如何搭建ZooKeeper服务器集群
    2.1 ZooKeeper服务器集群规模不小于3个节点,要求各服务器之间系统时间要保持一致。
    2.2 在hadoop0的/usr/local目录下,解压缩zookeeper-3.4.5.tar.gz(tar -zxvf zookeeper-3.4.5.tar.gz),
      设置环境变量vi /etc/profile
        export ZOOKEEPER_HOME=/usr/local/zk
        export PATH=.:$....:$ZOOKEEPER_HOME/bin:$.....
      环境变量设置好了,执行source /etc/profile
    2.3 在conf目录下
        重命名: mv zoo_sample.cfg zoo.cfg
    2.4 编辑该文件,执行vi zoo.cfg
        修改dataDir=/usr/local/zk/data
        新增server.0=hadoop0:2888:3888
          server.1=hadoop1:2888:3888
          server.2=hadoop2:2888:3888
    2.5 创建文件夹mkdir /usr/local/zk/data
    2.6 在data目录下,创建文件myid(vi myid),值为0
    2.7 把zk目录复制到hadoop1和hadoop2中
          scp -r /usr/local/zk/ hadoop1:/usr/local/
          scp -r /usr/local/zk/ hadoop2:/usr/local/
      将hadoop0中的环境变量复制到hadoop1和hadoop2中
          scp /etc/profile hadoop1:/etc/
          scp /etc/profile hadoop2:/etc/
      环境变量复制好了以后,在hadoop1和hadoop2上都要执行source /etc/profile
    2.8 把hadoop1中相应的myid的值改为1
        vi /usr/local/zk/data/myid 将里面的值改为1
      把hadoop2中相应的myid的值改为2
        vi /usr/local/zk/data/myid 将里面的值改为2
    2.9 启动,在三个节点上分别执行命令zkServer.sh start
    cd /usr/local/zk/bin
    ls
    zkServer.sh start
    启动完了之后,在bin目录下多了一个zookeeper.out
    2.10 检验,在三个节点上分别执行命令zkServer.sh status(可以看到MODE,谁是leader,谁是follower)

    ZooKeeper的操作(只有shell操作,也可以用java操作)
    在hadoop0下,执行zkCli.sh ,就进入到了ZooKeeper,可以在里面使用命令进行相关操作:
    ls /
    create /chaoren hadoop (/chaoren是path,hadoop是里面的data)
    get /chaoren (可以查看到里面的data)

    也可以在hadoop1或hadoop2里面:
    zkCli.sh
    get /chaoren
    也可以修改里面的data:
    set /chaoren change_data (将chaoren里面的data修改为change_data)
    get /chaoren

    ZooKeeper的数据模型

    层次化的目录结构,命名符合常规文件系统规范

    每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识

    节点Znode可以包含数据和子节点,但是EPHEMERAL类型的节点不能有子节点

    Znode中的数据可以有多个版本,比如某一个路径下存有多个数据版本,那么查询这个路径下的数据就需要带上版本

    客户端应用可以在节点上设置监视器

    节点不支持部分读写,而是一次性完整读写

    Zookeeper的节点

    Znode有两种类型,短暂的(ephemeral)和持久的(persistent)

    Znode的类型在创建时确定并且之后不能再修改

    短暂znode的客户端会话结束时,zookeeper会将该短暂znode删除,短暂znode不可以有子节点

    持久znode不依赖于客户端会话,只有当客户端明确要删除该持久znode时才会被删除

    Znode有四种形式的目录节点,PERSISTENT、PERSISTENT_SEQUENTIAL、EPHEMERAL、EPHEMERAL_SEQUENTIAL

    Zookeeper的角色

    领导者(leader),负责进行投票的发起和决议,更新系统状态

    学习者(learner),包括跟随者(follower)和观察者(observer),follower用于接受客户端请求并想客户端返回结果,在选主过程中参与投票

    Observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度

    客户端(client),请求发起方


  • 相关阅读:
    [LeetCode]Subsets II
    [LeetCode]Subsets
    [LeetCode]Combinations
    [LeetCode]Minimum Window Substring
    [LeetCode]Search a 2D Matrix
    [LeetCode]Edit Distance
    [LeetCode]Simplify Path
    Adaboost算法
    [LeetCode]Text Justification
    31、剑指offer--从1到n整数中1出现次数
  • 原文地址:https://www.cnblogs.com/ahu-lichang/p/6671272.html
Copyright © 2011-2022 走看看