Zookeeper单机操作

个人博客地址:Zookeeper单机操作 | 一张假钞的真实世界

下载

从Apache下载镜像站点下载当前稳定发布版

单机操作

安装单机模式的Zookeeper服务器是简单明了的。服务器包含在一个单独的JAR文件中,因此安装包含创建配置。

下载稳定的ZooKeeper发布版后,解压并切换到包的根目录。

启动ZooKeeper前需要一个配置文件。下面是示例配置文件,创建conf/zoo.cfg

bash 复制代码
# 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=/data/zookeeper
# the port at which the clients will connect
clientPort=2181

这个配置文件可以叫任意名字,在此我们叫它conf/zoo.cfg。创建目录/data/zookeeper,并修改dataDir为该目录。

tickTime

Zookeeper使用的单位为毫秒的基本时间。用来做心跳,会话超时的最小时间是两次tickTime。

dataDir

目录位置用来保存内存数据库快照及数据库更新的事务日志,除非另有规定。

clientPort

监听客户端连接的端口号。

创建配置文件后就可以启动ZooKeeper了:

bash 复制代码
bin/zkServer.sh start

ZooKeeper用log4j记录日志消息 -- 可以在程序员指导手册中的Logging 一节获取更多详细信息。可以从控制台(默认)并且/或者看到日志信息,这依赖log4j的配置。

这里列出的步骤是运行单机模式ZooKeeper的。单机模式没有副本,因此,如果ZooKeeper进程失败,则服务就会宕掉。这对于大多数开发场景是没问题的,运行副本模式的ZooKeeper,请参见运行副本模式的Zookeeper

管理ZooKeeper存储

对于长期运行的生产系统,ZooKeeper存储必须从外部进行管理(dataDir和logs)。参见在 maintenance 中的章节获取更多信息。

连接到ZooKeeper

bash 复制代码
bin/zkCli.sh -server 127.0.0.1:2181

这使你可以执行简单的、像文件一样的操作。

当建立了连接,应该可以看到像下面的一些信息:

bash 复制代码
Connecting to localhost:2181
log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKeeper).
log4j:WARN Please initialize the log4j system properly.
Welcome to ZooKeeper!
JLine support is enabled
[zkshell: 0]

在shell中,输入help获取可以从客户端执行的命令列表,像下面:

bash 复制代码
help
ZooKeeper -server host:port cmd args
        connect host:port
        get path [watch]
        ls path [watch]
        set path data [version]
        rmr path
        delquota [-n|-b] path
        quit 
        printwatches on|off
        create [-s] [-e] path data acl
        stat path [watch]
        close 
        ls2 path [watch]
        history 
        listquota path
        setAcl path acl
        getAcl path
        sync path
        redo cmdno
        addauth scheme auth
        delete path [version]
        setquota -n|-b val path

从这里,可以尝试几个简单的命令来体验简单的命令行接口。首先,从命令列表开始,像ls:

bash 复制代码
[zk: 127.0.0.1:2181(CONNECTED) 1] ls /
[zookeeper]

接下来,通过运行create /zk_test my_data创建一个新的znode。这会创建一个新的znode并与这个节点关联字符串"my_data":

bash 复制代码
[zk: 127.0.0.1:2181(CONNECTED) 2] create /zk_test my_data
Created /zk_test

输入ls /命令查看目录结构:

bash 复制代码
[zk: 127.0.0.1:2181(CONNECTED) 3] ls /
[zookeeper, zk_test]

现在zk_test目录被创建了。

接下来,通过get命令确认数据已经与znode关联,像:

bash 复制代码
[zk: 127.0.0.1:2181(CONNECTED) 4] get /zk_test
my_data
cZxid = 0x2
ctime = Tue Mar 28 23:37:16 CST 2017
mZxid = 0x2
mtime = Tue Mar 28 23:37:16 CST 2017
pZxid = 0x2
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 7
numChildren = 0

可以输入set命令修改与zk_test关联的数据,像:

bash 复制代码
[zk: 127.0.0.1:2181(CONNECTED) 5] set /zk_test junk
cZxid = 0x2
ctime = Tue Mar 28 23:37:16 CST 2017
mZxid = 0x3
mtime = Tue Mar 28 23:46:12 CST 2017
pZxid = 0x2
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0
[zk: 127.0.0.1:2181(CONNECTED) 6] get /zk_test
junk
cZxid = 0x2
ctime = Tue Mar 28 23:37:16 CST 2017
mZxid = 0x3
mtime = Tue Mar 28 23:46:12 CST 2017
pZxid = 0x2
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0

最后,输入以下命令删除节点:

bash 复制代码
[zk: 127.0.0.1:2181(CONNECTED) 7] delete /zk_test
[zk: 127.0.0.1:2181(CONNECTED) 8] ls /
[zookeeper]
相关推荐
linux修理工1 天前
使用codebuddy学习kafka
分布式·学习·kafka
阿 才1 天前
跟文件系统(busybox)的构建
大数据·hadoop·分布式
老纪1 天前
Redis分布式锁进第九零篇
数据库·redis·分布式
Amy187021118231 天前
分布式光伏防孤岛保护:技术逻辑、标准演进与工程实践全解析
分布式
ACP广源盛139246256731 天前
IX7008 PCIe 交换芯片@ACP#RTX Spark 经济型 8 口扩展芯片(对比 ASM1806)
大数据·人工智能·分布式·嵌入式硬件·gpt·spark·电脑
ACP广源盛139246256731 天前
IX6012 PCIe 交换芯片@ACP#RTX Spark 入门级 12 口存储外设扩展方案(对比 ASM1812)
大数据·人工智能·分布式·嵌入式硬件·gpt·spark·电脑
分布式存储与RustFS1 天前
对标MinIO!RustFS新一代AI分布式对象存储开源能力前瞻
人工智能·分布式·开源·分布式对象存储·rustfs·minio平替·s3 table
杰克逊的日记1 天前
如何在不影响业务的情况下对K8S集群升级
云原生·容器·kubernetes
cxr8281 天前
蜂群智能系统中“非必要不添加“原则的有效性再审视:基于分布式决策与通信复杂度的理论推导
人工智能·分布式·智能体
bIo7lyA8v1 天前
算法工程中的可扩展性与分布式实现方案的技术8
分布式