zookeeper
-
安装
# 安装zookeeper brew info zookeeper brew install zookeeper # 安装路径 ls /usr/local/Celler/zookeeper # 配置信息路径 ls /usr/local/etc/zookeeper
-
启动
# 启动服务端 ./zkServer start # 启动客户端 ./zkCli start
-
zkCli命令
# 查看当前节点信息 ls / # 查看当前节点数据及更新次数等信息 ls2 / # 创建节点并设置关联值 create /node_test "test" # 创建一个新的空节点 create /node_test "" # 获取节点内容 get /node_test # 修改节点内容 set /node_test "new text balabala..." # 删除节点 delete /node_test # 删除节点及子节点 rmr /node_test # 连接到其他zookeeper服务器 connect host:port # 关闭连接 close # 操作指令历史 history # 重复执行某个指令,使用格式 redo id,id为histroy命令查询出来的编号 redo
-
四字命令
# 使用示例 查询服务配置信息 echo conf | nc 127.0.0.1 2181
- conf 查看相关服务配置信息
- cons 查询连接到服务端的客户端信息
- dump 查询未经处理的会话和临时节点
- envi 查询服务环境的信息
- reqs 查询未经处理的请求
- ruok 测试服务器是否正常运行
- stat 查询关于性能和链接的客户端列表
- wchs 查询服务器watch信息
- wchc 通过session查询服务器watch信息
- wchp 通过路径查询服务器watch信息
- quit 退出
kafka
-
安装
brew info kafka brew install kafka # 安装路径 ls /usr/local/Celler/kafka # 配置信息路径 ls /usr/local/etc/kafka
-
启动
# 后台启动 ./kafka-server-start -daemon /usr/local/etc/kafka/server.properties ./kafka-server-start /usr/local/etc/kafka/server.properties.
-
kafka-topic使用
# 查询topics kafka-topics --list --zookeeper localhost:2181 # 创建 kafka-topics --create --zookeeeper localhost:2181 --replication-factor 1 --partitions 3 --topic test # 查询topic详情 kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
-
kafka-console-producer/kafka-console-consumer
# 生产者 (阻塞) kafka-console-producer --broker-list localhost:9092 --topic test # 消费者 (阻塞) kafka-console-consumer --bootstrap-server localhost:9092 --from-beginning --topic test
-
kafka-consumer-groups
# 查看consumer group消费情况 kafka-consumer-groups --new-consumer --bootstrap-server 127.0.0.1:9092 --group testGroup --describe # 查看consumer group消费情况 kafka-consumer-groups -bootstrap-server localhost:9092 --group testGroup --describe # 初始化consumer group 的offset,需先停掉消费者 --to-earliest kafka-consumer-groups --bootstrap-server localhost:9092 --group testGroup --topic test --reset-offsets --to-earliest --execute # 将consumer group 的offset置为最新(不消费旧的数据),需先停掉消费者 --to-latest kafka-consumer-groups --bootstrap-server localhost:9092 --group testGroup --topic test --reset-offsets --to-latest --execute # 设置任意偏移量 --to-offset $ kafka-consumer-groups --bootstrap-server localhost:9092 --group testGroup --topic test --reset-offsets --to-offset 1 --execute
-
删除topic步骤
-
如果被删除的topic正在被程序使用(生产/消费),先停止这些占用的程序。因为如果有程序正在生产或者消费该topic,则该topic的offset信息一致会在broker更新。调用kafka delete命令则无法删除该topic。同时,需要设置 auto.create.topics.enable = false,默认设置为true。如果设置为true,则produce或者fetch 不存在的topic也会自动创建这个topic。这样会给删除topic带来很多意向不到的问题。所以,这一步很重要,必须设置auto.create.topics.enable = false,并认真把生产和消费程序彻底全部停止。
-
server.properties 设置 delete.topic.enable=true
如果没有设置 delete.topic.enable=true,则调用kafka 的delete命令无法真正将topic删除,而是显示(marked for deletion)
-
调用命令删除topic:
kafka-topics --delete --zookeeper 【zookeeper server:port】 --topic 【topic name】
-
删除kafka存储目录(server.properties文件log.dirs配置,默认为"/data/kafka-logs")相关topic的数据目录。
注意:如果kafka 有多个 broker,且每个broker 配置了多个数据盘(比如 /data/kafka-logs,/data1/kafka-logs …),且topic也有多个分区和replica,则需要对所有broker的所有数据盘进行扫描,删除该topic的所有分区数据。
-
找一台部署了zk的服务器,使用命令:
bin/zkCli.sh -server 【zookeeper server:port】
登录到zk shell,然后找到topic所在的目录:ls /brokers/topics,找到要删除的topic,然后执行命令:
rmr /brokers/topics/【topic name】
即可,此时topic被彻底删除。
如果topic 是被标记为 marked for deletion,则通过命令 ls /admin/delete_topics,找到要删除的topic,然后执行命令:
rmr /admin/delete_topics/【topic name】
备注:
网络上很多其它文章还说明,需要删除topic在zk上面的消费节点记录、配置节点记录,比如:
rmr /consumers/【consumer-group】
rmr /config/topics/【topic name】
其实正常情况是不需要进行这两个操作的,如果需要,那都是由于操作不当导致的。比如step1停止生产和消费程序没有做,step2没有正确配置。也就是说,正常情况下严格按照step1 – step5 的步骤,是一定能够正常删除topic的。
-
完成之后,调用命令:
./bin/kafka-topics.sh --list --zookeeper 【zookeeper server:port】
查看现在kafka的topic信息。正常情况下删除的topic就不会再显示。
但是,如果还能够查询到删除的topic,则重启zk和kafka即可。 |
-