大数据技术 zookeeper学习笔记
沉沙 2018-09-29 来源 : 阅读 1592 评论 0

摘要:本篇教程探讨了大数据技术 zookeeper学习笔记,希望阅读本篇文章以后大家有所收获,帮助大家对大数据技术的理解更加深入。

本篇教程探讨了大数据技术 zookeeper学习笔记,希望阅读本篇文章以后大家有所收获,帮助大家对大数据技术的理解更加深入。

<



########################### 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配置.
#下载安装包 //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();
    }
}

 
   

本文由职坐标整理发布,学习更多的大数据技术相关知识,请关注职坐标大技术云计算大技术技术频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved