ZK集群搭建

本文介绍了Zookeeper节点操作的两种方式。GUI方式可使用zooinspecotr工具,但速度不理想;命令行方式涵盖找到zk安装路径、连接zk server、查看节点、获取节点信息、删除节点及大节点处理、节点迁移等操作,还给出了相关命令和解决大节点删除报错的办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考资料:

  1. zookeeper下载地址: http://www.apache.org/dyn/closer.cgi/zookeeper/
  2. Zookeeper搭建步骤: http://blog.youkuaiyun.com/chengwenyao18/article/details/23611995
  3. Zookeeper可视化工具:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip

GUI方式:

如果用GUI工具查看zk集群信息也行,但速度不理想。一定要用的话推荐用zooinspecotr: https://github.com/zzhang5/zooinspector

命令行方式:

找到zk安装路径

ps -ef | grep zookeeper

用zk client连接zk server

  1. zk client 在zk安装目录的bin下有zkCli.sh
  2. ./zkCli.sh -server serveraddress:port

查看节点

ls /

ls /FDG/CLIENT

获取节点详细信息

get /nodename/subnodename

删除节点(建议用rmr:递归删除)

rmr /nodename/subnodename

删除大节点

问题:如果删除有很多子节点的节点时,超过1M数据大小的时候会报错,类似:Exception in thread "main" org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperError

Code = ConnectionLoss for /ROOT_LOCK/MSR

办法:zkCli.sh里加入-Djute.maxbuffer=40960000,这里只是个举例,实际操作下来如果删除有150万个子节点的节点时,需要设置的更大,比如81920000.

zk节点迁移

利用zkcopy:https://github.com/ksprojects/zkcopy

迁移节点:java -jar target/zkcopy.jar --source ip:port /nodename/subnodename --target ip:port /nodename/subnodename

### Zookeeper 集群配置与使用 #### 一、Zookeeper 集群概述 Zookeeper 是一种分布式协调服务,用于维护配置信息、命名、提供分布式同步以及组服务等功能。它通过一个简单的协议来实现这些功能,并支持高可用性和一致性。 为了构建一个可靠的 Zookeeper 集群,通常需要至少三个节点(奇数个更佳),以便在部分节点失效的情况下仍能正常工作[^1]。 --- #### 二、安装与部署流程 ##### 1. 下载并解压软件包 从官方站点下载已编译好的版本(带有 `bin` 的压缩包)。以下是具体操作命令: ```bash wget https://dlcdn.apache.org/zookeeper/zookeeper-3.5.10/apache-zookeeper-3.5.10-bin.tar.gz tar -zxvf apache-zookeeper-3.5.10-bin.tar.gz ``` 完成解压后,进入解压后的目录,该目录即为 Zookeeper 安装路径[^2]。 --- ##### 2. 创建数据存储目录 创建用于保存持久化数据的目录,例如 `/soft/data/tmp/zookeeper/` 或其他自定义位置。如果未指定磁盘分区,默认会基于当前运行环境所在的根目录创建子文件夹。 ```bash mkdir -p /soft/data/tmp/zookeeper/ ``` 此步骤中的路径可以调整至适合实际需求的位置,但需确保各服务器间的一致性[^3]。 --- ##### 3. 复制并修改配置文件 将示例配置文件复制到正式使用的名称下: ```bash cp zoo_sample.cfg zoo.cfg ``` 随后编辑 `zoo.cfg` 文件,在其中设置必要的参数,比如: - **tickTime**: 基本时间单位,通常是 2000ms; - **initLimit**: 跟随者初始化连接的时间限制; - **syncLimit**: 跟随者与领导者之间的同步时间上限; - **dataDir**: 数据存储的具体路径; - **server.x**: 每台机器对应的 ID 和地址列表。 样例如下: ```properties tickTime=2000 initLimit=10 syncLimit=5 dataDir=/soft/data/tmp/zookeeper clientPort=2181 server.1=hadoop102:2888:3888 server.2=hadoop103:2888:3888 server.3=hadoop104:2888:3888 ``` 上述配置中,每台主机都需要分配唯一的编号作为其身份标识[^2]。 --- ##### 4. 同步配置文件至其他节点 利用 SCP 工具把本地更改过的配置分发给其余成员节点: ```bash scp -r zoo.cfg root@hadoop103:/opt/zookeeper/conf/zoo.cfg scp -r zoo.cfg root@hadoop104:/opt/zookeeper/conf/zoo.cfg ``` 这一步骤保证所有参与方拥有相同的设定值集合。 --- ##### 5. 初始化 myid 文件 在之前定义的数据目录里新建名为 `myid` 的纯文本档案,写入对应于当前实例的身份号码。例如对于 hadoop102 来说就是 “1”,以此类推。 ```bash echo "1" > /soft/data/tmp/zookeeper/myid ssh hadoop103 'echo "2" > /soft/data/tmp/zookeeper/myid' ssh hadoop104 'echo "3" > /soft/data/tmp/zookeeper/myid' ``` 这是区分不同集群组件的关键标志之一。 --- #### 三、启动与验证 依次开启各个节点上的服务进程: ```bash ./zkServer.sh start ``` 确认状态是否健康可执行如下指令查看汇总情况: ```bash ./zkCli.sh -server localhost:2181 ls / ``` 若返回预期的结果集,则表明搭建成功。 --- ### 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值