ZooKeeper 客户端 zkCli.sh 节点的增删改查

本文介绍了如何使用ZooKeeper客户端连接服务器、查询节点信息、列出路径下的子节点等基本操作,并提供了详细的命令示例。

1、连接到节点:./zkCli.sh -r -timeout 2000 -server master:21810,注意默认端口是2181,我自己改了

[root@slave2 bin]# ./zkCli.sh -r -timeout 2000 -server master:21810
Connecting to master:21810
2018-06-18 17:22:24,373 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.12-e5259e437540f349646870ea94dc2658c4e44b3b, built on 03/27/2018 03:55 GMT
2018-06-18 17:22:24,376 [myid:] - INFO  [main:Environment@100] - Client environment:host.name=slave2.lan
2018-06-18 17:22:24,376 [myid:] - INFO  [main:Environment@100] - Client environment:java.version=1.8.0_171
2018-06-18 17:22:24,379 [myid:] - INFO  [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
2018-06-18 17:22:24,379 [myid:] - INFO  [main:Environment@100] - Client environment:java.home=/usr/java/jdk1.8.0_171-amd64/jre
2018-06-18 17:22:24,379 [myid:] - INFO  [main:Environment@100] - Client environment:java.class.path=/usr/hadoop/zookeeper-3.4.12/bin/../build/classes:/usr/hadoop/zookeeper-3.4.12/bin/../build/lib/*.jar:/usr/hadoop/zookeeper-3.4.12/bin/../lib/slf4j-log4j12-1.7.25.jar:/usr/hadoop/zookeeper-3.4.12/bin/../lib/slf4j-api-1.7.25.jar:/usr/hadoop/zookeeper-3.4.12/bin/../lib/netty-3.10.6.Final.jar:/usr/hadoop/zookeeper-3.4.12/bin/../lib/log4j-1.2.17.jar:/usr/hadoop/zookeeper-3.4.12/bin/../lib/jline-0.9.94.jar:/usr/hadoop/zookeeper-3.4.12/bin/../lib/audience-annotations-0.5.0.jar:/usr/hadoop/zookeeper-3.4.12/bin/../zookeeper-3.4.12.jar:/usr/hadoop/zookeeper-3.4.12/bin/../src/java/lib/*.jar:/usr/hadoop/zookeeper-3.4.12/bin/../conf:.:/usr/java/jdk1.8.0_171-amd64/lib:/usr/java/jdk1.8.0_171-amd64/jre/lib:/lib
2018-06-18 17:22:24,380 [myid:] - INFO  [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2018-06-18 17:22:24,380 [myid:] - INFO  [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
2018-06-18 17:22:24,380 [myid:] - INFO  [main:Environment@100] - Client environment:java.compiler=<NA>
2018-06-18 17:22:24,380 [myid:] - INFO  [main:Environment@100] - Client environment:os.name=Linux
2018-06-18 17:22:24,380 [myid:] - INFO  [main:Environment@100] - Client environment:os.arch=amd64
2018-06-18 17:22:24,381 [myid:] - INFO  [main:Environment@100] - Client environment:os.version=3.10.0-229.el7.x86_64
2018-06-18 17:22:24,381 [myid:] - INFO  [main:Environment@100] - Client environment:user.name=root
2018-06-18 17:22:24,381 [myid:] - INFO  [main:Environment@100] - Client environment:user.home=/root
2018-06-18 17:22:24,381 [myid:] - INFO  [main:Environment@100] - Client environment:user.dir=/usr/hadoop/zookeeper-3.4.12/bin
2018-06-18 17:22:24,382 [myid:] - INFO  [main:ZooKeeper@441] - Initiating client connection, connectString=master:21810 sessionTimeout=2000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@67424e82
Welcome to ZooKeeper!
2018-06-18 17:22:24,417 [myid:] - INFO  [main-SendThread(master.lan:21810):ClientCnxn$SendThread@1028] - Opening socket connection to server master.lan/172.2.1.224:21810. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2018-06-18 17:22:24,490 [myid:] - INFO  [main-SendThread(master.lan:21810):ClientCnxn$SendThread@878] - Socket connection established to master.lan/172.2.1.224:21810, initiating session
[zk: master:21810(CONNECTING) 0] 2018-06-18 17:22:24,551 [myid:] - INFO  [main-SendThread(master.lan:21810):ClientCnxn$SendThread@1302] - Session establishment complete on server master.lan/172.2.1.224:21810, sessionid = 0x100004616de0000, negotiated timeout = 4000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null

2、查询帮助命令:ls h


[zk: master:21810(CONNECTED) 0] ls h
ZooKeeper -server host:port cmd args
    stat path [watch]
    set path data [version]
    ls path [watch]
    delquota [-n|-b] path
    ls2 path [watch]
    setAcl path acl
    setquota -n|-b val path
    history 
    redo cmdno
    printwatches on|off
    delete path [version]
    sync path
    listquota path
    rmr path
    get path [watch]
    create [-s] [-e] path data acl
    addauth scheme auth
    quit 
    getAcl path
    close 
    connect host:port

3、ls path:列出path下的文件

[zk: master:21810(CONNECTED) 1] ls /
[zookeeper]

4、获取节点信息:

[zk: master:21810(CONNECTED) 2] get /zookeeper

cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1

5、退出

[zk: master:21810(CONNECTED) 3] quit
Quitting...
2018-06-18 17:26:48,886 [myid:] - INFO  [main:ZooKeeper@687] - Session: 0x100004616de0000 closed
2018-06-18 17:26:48,888 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@521] - EventThread shut down for session: 0x100004616de0000
<think>好的,我现在需要回答用户关于Zookeeper客户端连接命令中是否需要修改localhost的问题。首先,我得理解用户的具体情况。用户提到在服务器本地启动Zookeeper,所以ip用了localhost,端口改为2182。另外,他们引用了docker命令和脚本的信息,可能是在使用Docker环境下的Zookeeper。 接下来,我需要确定zkCli.sh连接时localhost是否需要修改。根据用户提供的引用内容,当在本地运行Zookeeper时,使用localhost是可行的。但如果客户端和服务器不在同一台机器,比如分布式环境或Docker容器间通信,这时localhost就不适用了,必须改为服务器的真实IP或主机名。 然后,查看用户提供的引用[2]中的例子,docker命令连接的是localhost:2181,但用户自己修改了端口到2182,这说明端口部分需要对应修改。而引用[5]提到zkCli远程连接的命令,可能需要指定不同的地址。 总结起来,是否需要修改localhost取决于客户端Zookeeper服务器的位置关系。同一台机器则不需要改,不同机器则需要。此外,如果使用Docker,可能需要用容器IP或服务名,特别是在Docker Compose或Swarm环境中。同时,端口是否正确也很重要,用户需要确认配置的端口与实际监听端口一致。 最后,结合用户的引用资料,特别是引用[1]和[2],给出具体的修改示例,比如替换localhost为服务器IP,并调整端口号,同时提醒Docker环境下的注意事项。这样用户就能根据实际情况调整连接命令了。</think>关于Zookeeper客户端连接命令中的`localhost`是否需要修改,需要根据部署环境的具体情况来判断: **1. 本地单机部署** - 如果客户端Zookeeper服务器在**同一台机器**(如开发测试环境),可以直接使用`localhost`或`127.0.0.1` - 例如用户引用的本地启动命令:`zkCli.sh -server localhost:2182`[^1] **2. 分布式/容器化部署** - 如果客户端Zookeeper服务器在**不同机器**(如生产环境),必须将`localhost`改为服务器**真实IP地址或域名** - 例如Docker容器间通信时,应使用容器IP或服务名称代替`localhost`[^2] **3. 特殊端口情况** - 当Zookeeper使用非默认端口(默认2181)时,必须显式指定端口号 - 如用户修改后的端口`2182`[^1],连接命令应为:`zkCli.sh -server IP:2182` **4. Docker环境注意事项** - 在Docker容器内执行客户端连接时,`localhost`指向的是容器自身,因此: - 连接宿主机Zookeeper应使用`host.docker.internal`(Mac/Windows)或宿主机IP - 连接其他容器应使用容器名称(需在同一个Docker网络)[^2] **连接命令示例:** ```bash # 连接远程服务器(非默认端口) zkCli.sh -server 192.168.1.100:2182 # Docker容器连接宿主机 docker exec -it client_container zkCli.sh -server host.docker.internal:2181 # 容器间连接(使用容器名) docker exec -it client_container zkCli.sh -server zookeeper:2181 ``` **验证连接的方法**: ```bash # 连接后执行基本操作测试 [zk: 192.168.1.100:2182(CONNECTED) 0] ls / [zookeeper] ``` **建议通过配置文件统一管理**: 修改`zoo.cfg`配置文件中的`clientPortAddress`参数可以强制绑定特定IP地址,这对于容器化部署尤为重要[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值