学习目标:zookeeper
zookeeper总结
zk是分布式协调服务框架,zk可以理解成一个数据库系统,本身可以存数据
zookeeper特性
全局一致性、可靠性、顺序性、数据更新原子性、实时性
zookeeper角色
zk是主从架构,主节点是leader,从节点是follower和observer,主节点可以读写,follower和observer读请求,可以选举(未剥夺政治权利且终身),observer读请求(剥夺政治权利且终身)
zookeeper安装
zookeeper一般奇数台,基于Java开发,所以安装zookeeper前,必须先安装jdk。
zookeeper如果启动失败,唯一的排查错误方式就是查看日志,zk会在你执行启动命令的所在目录生成zookeeper.out,这个文件就是日志文件
使用jps可以查看zookeeper进程:QuorumPeerMain
若要设置开机启动项,则可以在/etc/rc.d/rc.local文件中添加命令
意见启动脚本:
#!/bin/bash
for num in 1 2 3
do
ssh root@node${num} "source /etc/profile;zkServer.sh $1"
echo "正在操作低${num}主机"
done
zookeeper的数据模型
zk是一个树形结构的系统,类似linux的文件系统,就靠这个系统来存储数据。
节点叫znode
节点特性:
可以存储数据、可以有子节点。既是文件又是文件夹
znode具有原子性操作,在某一台主机上创建了一个znode节点,则其他的主机也会创建该节点,这个过程是原子不可再分的。
znode存储数据大小有限制,由于zookeeper是用来管理其他集群,每个节点存储的都是配置信息,所以数据量一般不会太大,都是以K为单位,最多不超过1M
在znode的树形结构中,必须使用绝对路径来访问节点
正确方式/app1/p_06
znode节点类型
PERSISTENT永久节点
ephemeral临时节点
PERSISTENT_SEQUENTIAL:永久节点、序列化
EPHEMERAL_SEQUENTIAL:临时节点、序列化
zk的shell操作
使用客户端连接服务器
方式1:
zkCli.sh -server node1:2181
方式2:
zkCli.sh 连接默认主机
zk命令行操作
create /app1 hello #创建普通永久节点
create -s /app2 world # 创建永久顺序节点
create -e /tempnode world #创建临时节点
create -e -s /tempnode world #创建临时顺序节点
create /app1/app11 hello11 #创建子节点
#获取节点
get /app1
get /app1/app11
#修改节点
set /app1 hadoop
#删除节点
delete /app1 #app1必须是末节点
rmr /app2 #app2可以有子节点