ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
zookeeper中对用户的数据采用kv形式存储 只是zk有点特别: key:是以路径的形式表示的,那就以为着,各key之间有父子关系,比如 / 是顶层key 用户建的key只能在/ 下作为子节点,比如建一个key: /aa 这个key可以带value数据 也可以建一个key: /bb 也可以建key: /aa/xx zookeeper中,对每一个数据key,称作一个znode 综上所述,zk中的数据存储形式如下:
zookeeper中的znode有多种类型: 1、PERSISTENT 持久的:创建者就算跟集群断开联系,该类节点也会持久存在与zk集群中 2、EPHEMERAL 短暂的:创建者一旦跟集群断开联系,zk就会将这个节点删除 3、SEQUENTIAL 带序号的:这类节点,zk会自动拼接上一个序号,而且序号是递增的
组合类型: PERSISTENT :持久不带序号 EPHEMERAL :短暂不带序号 PERSISTENT 且 SEQUENTIAL :持久且带序号 EPHEMERAL 且 SEQUENTIAL :短暂且带序号
1、上传安装包到集群服务器 2、解压 3、修改配置文件 进入zookeeper的安装目录的conf目录 cp zoo_sample.cfg zoo.cfg vi zoo.cfg
# The number of milliseconds of each tick tickTime=2000 initLimit=10 syncLimit=5 dataDir=/root/zkdata clientPort=2181 #autopurge.purgeInterval=1 server.1=hdp20-01:2888:3888 server.2=hdp20-02:2888:3888 server.3=hdp20-03:2888:3888dataDIr表示存储数据目录,根据自己的请看设定 clientPort是zk默认端口,可以修改,但不建议修改 这里的server.x表示指定zknode节点的地址,可以使用主机名也可以使用Ip地址
对3台节点,都创建目录 mkdir /root/zkdata 对3台节点,在工作目录中生成myid文件,但内容要分别为各自的id: 1,2,3 hdp20-01上: echo 1 > /root/zkdata/myid hdp20-02上: echo 2 > /root/zkdata/myid hdp20-03上: echo 3 > /root/zkdata/myid 4、从hdp20-01上scp安装目录到其他两个节点 scp -r zookeeper-3.4.6/ hdp20-02 P W D s c p − r z o o k e e p e r − 3.4.6 / h d p 20 − 03 : PWD scp -r zookeeper-3.4.6/ hdp20-03: PWDscp−rzookeeper−3.4.6/hdp20−03:PWD
5、启动zookeeper集群 zookeeper没有提供自动批量启动脚本,需要手动一台一台地起zookeeper进程 在每一台节点上,运行命令: bin/zkServer.sh start 启动后,用jps应该能看到一个进程:QuorumPeerMain 但是,光有进程不代表zk已经正常服务,需要用命令检查状态: bin/zkServer.sh status 能看到角色模式:为leader或follower,即正常了。
在/bin/zkCli.sh既可以进入zookeeper的客户端模式,该模式下常见的命令好linux类似,主要有: 创建节点: create /aaa ‘ppppp’ 查看节点下的子节点: ls /aaa 获取节点的value: get /aaa 修改节点的value: set /aaa ‘mmmmm’ 删除节点:rmr /aaa
同时,zk还提供了数据监听的功能,可以实时监听数据是否发生了变化,变通知用户端。 ls /aaa watch 查看/aaa的子节点的同时,注册了一个监听“节点的子节点变化事件”的监听器
get /aaa watch 获取/aaa的value的同时,注册了一个监听“节点value变化事件”的监听器 注意:注册的监听器在正常收到一次所监听的事件后,就失效
在Eclipse环境下安装ZooKeeper状态查看相关的插件步骤如下: Step 1. 在 Eclipse 菜单打开Help -> Install New Software… Step 2. 添加 url http://www.massedynamic.org/eclipse/updates/ Step 3. 选择插件并安装运行 Step 4. 在 Eclipse 菜单打开Window->Show View->Other…->ZooKeeper 3.2.2。 Step 5. 连接ZK 输入正在运行的ZK server 地址和端口 连接成功后就就可以在Eclipse里查看ZK Server里的节点信息。如下所示: zookeeper软件/插件/代码下载地址 链接:https://pan.baidu.com/s/1lWDUv3uCqXdQtylbUp3dpg 提取码:u9he