1.Zookeeper的基本概念
是一个分布式服务的协调服务
Zookeeper是强一致性 立马能看到结果
Zookeeper能管理分布式服务
这些server中有一个叫Leader
Zookeeper是奇数台服务器
Zookeeper的节点
既是目录又是文件
因为它每个节点都能存储数据
(但是只能存储少量数据 因为Zookeeper只是协调服务)
而Linux的节点只能是目录 只有最终节点才是文件
Zookeeper的四种节点
- 普通znode
- 普通序列化znode
- 临时znode :当session退出或失效 则该节点消失
- 临时序列化
权限列表
- ACL:
- c
- r
- w
- delete
- admin
watch事件
Zookeeper能干什么?
- 命名空间
- 配置管理
- 集群管理
2.Zookeeper的集群搭建-
1 现将Zookeeper安装包通过Xshell工具上传到home目录下
2.解压安装tar -zxvf ./zookeeper-3.4.7.tar.gz -C /usr/local/
我们可以把docs文件先删掉 因为待会要移动Zookeeper(就是copy到别的机子上) docs比较杂 麻烦
rm -rf ./zookeeper-3.4.7/docs/
3.解压后我们开始配置
配置环境变量vi /etc/profile
然后source 一下 不知道为啥 我source没用
这样检测是否成功的话
看下面截图最后一句
打的时候可以tab键tab出来 就证明没问题
然后我们需要配下面划线的东西 是zk的一个模板文件
不过需要先改个名mv ./conf/zoo_sample.cfg ./conf/zoo.cfg
然后进入修改该文件
将注释按两下d删一行·都删掉
然后照着截图改一下数字 5 2
然后再加上最后三句
搞完后保存退出
2888是小弟或者老大的通信端口
3888是选举端口(选举就是leader挂掉后需要从一堆小弟Server中选出一个新的leader老大)
4.这台机子配完了 然后copy到02 03上去
scp -r …/zookeeper-3.4.7/ hadoop02:/usr/local/
scp -r …/zookeeper-3.4.7/ hadoop03:/usr/local/
这样然后都改一下02 03的环境变量
测试 我们打zkS tab能出来完整的 就可以
4.最后别忘了创建文件夹
我们在上面这一步修改的这个dataDir这个目录
没有相应文件夹 所以需要我们一个一个创建
三个机子01 02 03都要创建
5.然后我们需要在每个机子下面的这个目录创建一个myid的文件
内容就是上面这个截图这个最后三句话的Server编号
server.1
server.2
server.3
后面这个数字 01就写1
02 就写2
03就写3
例如03
6.现在我们可以使用zkServer.sh start命令启动了
注意需要前面改过名字zoo.cfg这个名字 不然没法使用 没改的话需要在命令后面加上路径 ./conf/zoo/cfg
三台都要启动
注意一定是奇数台
这样才能用
我们可以通过jps或者 zkServer.sh status来查看是否启动
jps是多了一个QuorumPeerMain
zkServer.sh status
follower是小弟
我们看看别的机子
哎 这第二台机子是老大
这样 至此 zk集群就装好了 我们就可以用了
这样我们可以使用zkCli.sh
来连接客户端了 这个命令后面不加东西 就代表连接的是本台机子
然后可以使用ls /
查看节点
也可以使用quit
退出去
我们还可以是使用
zkCli.sh -server hadoop02:2181
连接hadoop02的zk服务
那我们连接后要干什么呢 使用什么命令呢
不知道 那我们随便打 然后会给提示的 告诉我们有什么命令
其中第一句告诉我们可以切换端口
connect hadoop03:2181
这样就切换到了hadoop03的zk服务
查看节点的话 ls /
目前就一个节点
创建节点 必须要带数据
create /name "zhangsan"
怎么知道节点的数据和详细信息呢
get /name
这样就知道了节点name的信息
这里的节点和数据
在02 03的zk上也能看到
因为zk是强一致性
还可以创建
临时节点
create -e /class 'qf'
临时节点在别的02 03同样能看到
但是quit退出后 再进入就没了
加-s可以创建同名节点 不过创建后自动给添加序号
这就是序列化得意思
但是这个也是临时节点 退出即消失
修改值
set /name 'lisi'
同样的因为有原子广播协议
我们再01改了后接着再02 03查看 值也是被修改后的
然后是
删除节点
我们先在name下创建个子节点aaa 空值
然后
delete /name
然后说是name值不为空 不能删除 因为name下有叶子结点
这样的话我们可以使用
递归删除 不管下面有没有
rmr /name
close
是关闭连接
quit
直接退出
3.Zookeeper的shell命令
看上面即可