zookeeper的安装和使用

算法听星使
• 阅读 1799

文章作者:foochane 

原文链接:https://foochane.cn/article/2019062601.html

zookeeper数据存储形式 zookeeper安装 zookeeper命令行客户端的使用

1 zookeeper数据存储形式

zookeeper中对用户的数据采用kv形式存储

key:是以路径的形式表示的,各key之间有父子关系,比如 / 是顶层key

用户建的key只能在/ 下作为子节点,比如建一个key: /aa 这个key可以带value数据

也可以建一个key/bb

也可以建多个key/aa/xx

zookeeper中,对每一个数据key,称作一个znode

2 znode类型

zookeeper中的znode有多种类型:

  • 1、PERSISTENT 持久的:创建者就算跟集群断开联系,该类节点也会持久存在与zk集群中
  • 2、EPHEMERAL 短暂的:创建者一旦跟集群断开联系,zk就会将这个节点删除
  • 3、SEQUENTIAL 带序号的:这类节点,zk会自动拼接上一个序号,而且序号是递增的

组合类型:

  • PERSISTENT :持久不带序号
  • EPHEMERAL :短暂不带序号
  • PERSISTENTSEQUENTIAL :持久且带序号
  • EPHEMERALSEQUENTIAL :短暂且带序号

3 安装zookeeper

解压安装包 zookeeper-3.4.6.tar.gz

修改conf/zoo.cfg

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/usr/local/bigdata/data/zkdata
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=Master:2888:3888
server.2=Slave01:2888:3888
server.3=Slave02:2888:3888

对3台节点,都创建目录 /usr/local/bigdata/data/zkdata

对3台节点,在工作目录中生成myid文件,但内容要分别为各自的id1,2,3

Master上:   echo 1 > /usr/local/bigdata/data/zkdata/myid
Slave01上:  echo 2 > /usr/local/bigdata/data/zkdata/myid
Slave02上:  echo 3 > /usr/local/bigdata/data/zkdata/myid

4 启动zookeeper集群

zookeeper没有提供自动批量启动脚本,需要手动一台一台地起zookeeper进程
在每一台节点上,运行命令:

$ bin/zkServer.sh start

启动后,用jps应该能看到一个进程:QuorumPeerMain

查看状态

$ bin/zkServer.sh status

5 编写启动脚本zkmanage.sh

zookeeper没有提供批量脚本,不能像hadoop一样在一台机器上同时启动所有节点,可以自己编写脚本批量启动。

#!/bin/bash
for host in Master Slave01 Slave02
do
echo "${host}:${1}ing....."
ssh $host "source ~/.bashrc;/usr/local/bigdata/zookeeper-3.4.6/bin/zkServer.sh $1"
done

sleep 2

for host in Master Slave01 Slave02
do
ssh $host "source ~/.bashrc;/usr/local/bigdata/zookeeper-3.4.6/bin/zkServer.sh status"
done
  • $1 :指接收第一个参数

运行命令:

sh zkmanage.sh start #启动
sh zkmanage.sh stop  #停止

6 zookeeper命令行客户端

启动本地客户端:

$ bin/zkCli.sh

启动其他机器的客户端:

$ bin/zkCli.sh -server Master:2181

基本命令:

  • 查看帮助:help
  • 查看目录:ls /
  • 查看节点数据:get /zookeeper
  • 插入数据: create /节点 数据 , 如:create /aa hello
  • 更改某节点数据: set /aa helloworld
  • 删除数据:rmr /aa/bb
  • 注册监听:get /aa watch -->数据发生改变会通知 ; ls /aa watch -->目录发现改变也会通知
点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
待兔 待兔
1年前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
4cast
4castpackageloadcsv.KumarAwanish发布:2020122117:43:04.501348作者:KumarAwanish作者邮箱:awanish00@gmail.com首页:
Stella981 Stella981
3年前
Spring Boot日志集成
!(https://oscimg.oschina.net/oscnet/1bde8e8d00e848be8b84e9d1d44c9e5c.jpg)SpringBoot日志框架SpringBoot支持JavaUtilLogging,Log4j2,Lockback作为日志框架,如果你使用star
Stella981 Stella981
3年前
Redis 6.0 正式版终于发布了!除了多线程还有什么新功能?
!(https://oscimg.oschina.net/oscnet/b8c8b22b9f44bd806c26b486e1893a263a4.jpg)这是我的第56篇原创文章!(https://oscimg.oschina.net/oscnet/8bf00bc92f6a1cd46596ee44bac64a801ae.pn
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
算法听星使
算法听星使
Lv1
思归若汾水,无日不悠悠。
文章
3
粉丝
0
获赞
0