zookeeper简单介绍
C一致性A可用性P分区容忍性|三者不可兼得
1保证最终一致性,区别实时一致性
2 可靠性,一台接收,所有接收
3 原子性, 没有中间状态,只能成功或者失败
4 顺序性, 所有server同一消息发布顺序一致
1.server在内存中存储了一份数据
2.启动时,自己选举出一个leader(Paxos算法)
3.leader负责处理数据更新等操作
4.更新成功是大多数的更新成功
小岛------ZK Server Cluster
议员------ZK Server
提议------ZNode Change
提议编号---Zxid
正式法令---所有ZNode及其数据
总统---ZK Server Leader
zookeeper采用递增的事务id号zxid来标识事务。proposal都在被提出的时候加上了zxid
zxid是64位的数字,高32位是epoch标识leader关系是否改变,低32位用于递增计数
server的工作状态
1 LOOKING 当前server不知道leader是谁
2LEADING
3FOLLOWING
zookeeper安装
而且在centos上面修改hosts文件重启后,主机名会自动改变,此系统默认应该首先使用本机的真实ip作为主机名
1hosts文件解析
192.168.174.155 slave-01
192.168.174.156 slave-02
192.168.174.157 slave-03
2修改配置文件,主机的hostname要对应hosts文件中的内容
zoo.cfg
tickTime=2000
dataDir=/home/hadoop/storage/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=slave-01:2888:3888
server.2=slave-02:2888:3888
server.3=slave-03:2888:3888
3远程分发到各个子节点处,用scp命令
4设置myid
在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机,conf/zoo.cfg文件中配置的server.X中X为什么数字,则myid文件中就输入这个数字。
echo "1" > datadir/myid
echo "2" > datadir/myid
echo "3" > datadir/myid
这里的数字要对应server.后面的数字,对应不同的主机
5启动和查看,而且在启动前需要关闭防火墙
zkServer.sh start启动
zkServer.sh status 状态查看
tail -500f zookeeper.out查看一下启动日志
zookeeper的启动需要一段的时间进行leader的选举,所以可能不会立即的响应
6说明
配置文件中的第一端口是leader和follow交流,第二个端口是选举端口
oberserver,在某一个server的第二端口后面加上关键字,用户扩展,不参与投票
bin/skCli.sh进入交互式模式,里面是可以查看hbase的数据的。
Znode有两种类型,短暂ephemeral和持久persistentephemeral_sequential ephemeral_sequential
类型在创建时确定并且之后不能再修改
短暂的会在会话结束后删除
持久的不依赖于客户端会话
Watcher监控目录节点的数据变化以及子目录的变化