zoukankan      html  css  js  c++  java
  • zookeeper笔记

    zookeeper 动物园管理员。前几天看到 金蝉脱壳2 台词中出现了这个词。黄教主演技还不错。

    其实Zookeeper的作用是用来做HA高可用。hadoop或spark的HA都需要利用到它。

    ########################### zookeeper 选举机制 ############################
    #服务器ID, 编号越大在选举算法中权重越大;
    #选举状态: Looking,竞选; Following,随从状态,同步leader状态,参与投票. observing, 观察状态,同步leader状态,不参与投票. Leading,领导状态.
    #数据ID: 服务器中存放的最新数据version,值越大数据越新,在选举中权重越大.
    #逻辑时钟: 也叫投票次数,同一轮投票过程中逻辑值是相同的,每投完一次票这个数据就增加,如果没参与投票,下一轮就比其它的小.
    
    #全新集群选举: 1,每个机器都给自己投票; 2,投票数过半选举结束. 主要参考myid的值.
    
    #非全新选举: 运行中有机器当掉时,就需要重新选举,过程就需要加入:数据ID,服务器ID和逻辑时钟.
    #选举标准变为: 1,逻辑时钟小的选举结果被忽略,重新投票; 2,统一逻辑时钟后,数据ID大的胜出; 3,数据ID相同的情况下,服务器ID大的胜出.根据这些规则选出leader.

    安装与配置:

    #安装前先要安装好JDK, 配置ssh免密登录.
    #集群时间同步, 防火墙关闭, 主机名, hosts配置.
    #下载安装包 http://zookeeper.apache.org
    tar zxvf zookeeper-3.4.5.tar.gz
    
    #配置环境变量 每台zookeeper都要修改.
    vim /etc/profile #增加两行zookeeper环境变量 
    export ZOOKEEPER_HOME=/usr/local/src/zookeeper
    export PATH=$PATH:$ZOOKEEPER_HOME/bin
    
    scp -r /etc/profile root@slave1:/etc/
    scp -r /etc/profile root@slave2:/etc/
    
    source /etc/profile
    
    cd /usr/local/src/zookeeper/
    mkdir zkdata
    
    vim zookeeper/conf/zoo.cfg #修改配置文件
    dataDir=/usr/local/src/zookeeper/zkdata
    server.1=master:2888:3888
    server.2=slave1:2888:3888
    server.3=slave2:2888:3888
    
    shift zz
    
    cd /usr/local/src/zookeeper/zkdata
    echo 1 > myid #服务器编号 
    
    scp -r /usr/local/src/zookeeper/ root@slave1:/usr/local/src/
    scp -r /usr/local/src/zookeeper/ root@slave2:/usr/local/src/
    # 一定要修改各台服务器编号 myid
    
    /usr/local/src/zookeeper/bin/zkServer.sh start #启动服务. 每台都需要启动
    zkServer.sh status #查看状态  也可以jps
    zkServer.sh stop #停止服务

    Shell 的使用:

    ############################# 开始 shell 使用 #####################################
    zkCli.sh -server master:2181 #连接zookeeper服务,省略参数则连接本机
        ls / #查看根节点
    
    #创建节点 节点类型: 临时节点、永久节点 
    #创建后,节点类型不能修改。
        create /hellozk 123 #创建节点和数据
        create -s /hellozk 456 #创建序列化的节点,容易判断顺序。
        create -e /hellozk/a 456 #创建临时节点. 临时节点将在退出连接后自动删除
    #读取节点
    # dataVersion 数据版本号,每次set都会加1; cversion子节点版本号; cZxid Znode创建的事务id; mZxid Znode被修改的事务id; ephemeralOwner为0表示不是临时节点
        get /hellozk #得到节点的数据和属性信息.
        ls2 /hellozk #得到节点的子节点和属性信息
    #更新/删除节点
        set /hellozk abcd #更新节点的数据, 
        delete /hellozk #删除节点. 必须没有子节点. 
        rmr /hellozk #递归删除,包含子节点
        
    #事件监听 watch 分布式的事件通知功能 
        ls /mygirls watch #对一个节点的子节点变化事件注册了监听
        get /mygirls watch #对节点的数据内容变化注册了监听
        stat /mygirls watch #对节点状态改变注册监听 
        #监听事件只一次有效,后续需要再注册,或者用脚本完成. ls2, stat 都可以watch
        
    #quota
        setquota -n|-b 2 /test # 限制子节点最大个数, 参数二选一, -b限制数据长度. 软限制.只会有日志警告. 
        cat zookeeper.out #可以看到quota的WARN信息   # > zookeeper.out 可以清空文件.
        listquota /test # 查看quota 
        delquota -n /test #删除quota
    #history
        history #显示命令历史. 
        redo 10 #调用历史ID是10的命令.
        

    Java API方式:简单监听机制实现

    package zk.mydemo;
    
    import org.apache.zookeeper.*;
    
    public class Test {
        public static void main(String[] args) throws Exception {
            //构造java zk客户端
            ZooKeeper zk = new ZooKeeper("slave2:2181,master:2181", 30000, new Watcher() {
                //事件通知的回调方法
                public void process(WatchedEvent e) {
                    System.out.println(e.getPath());
                    System.out.println(e.getType());
                    System.out.println(e.getState());
                }
            });
            zk.create("/myDemo","第一个DEMO".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
            zk.close();
        }
    }

    DOCX版本的zookeeper笔记

  • 相关阅读:
    考研408大纲梳理(持续更新)
    学习就是把抽象变具体,模糊变清楚,组合件拆单件的过程。
    20210402学习笔记---眼看这是要浪费一下午?(要放假了心里跟长草似的 浮躁啥自己也不知道 假期不还是学习么)不行,赶紧学。
    20210401学习笔记--概念必须都弄懂,你可能很熟悉,但你却不知道他的定义、为什么用它不用别的,这个不清楚学习就很难。(另外学习要把握重点,已经会的都不需要记)
    20210401日记
    20210331日记
    20210330学习笔记--第1天目标是刷完HadoopDay1 Day2(计划40天学完大数据)
    20210330日记
    这个老的大数据视频,用的工具还是Eclipse,不照着视频做,就各种报错出问题,也不知道咋解决。还是买个新点的视频看。
    20210329学习笔记--看来得找个更新的视频课了(用IDEA),一步一步跟着做了,而且每天要定量,必须完成多少。目前进度完全不行。
  • 原文地址:https://www.cnblogs.com/frx9527/p/zookeeper.html
Copyright © 2011-2022 走看看