Kafka-shell常用操作

本文详细介绍Kafka的shell操作,包括启动Kafka进程、创建和管理topic、查看队列信息、生产者与消费者模式等关键操作步骤。适用于Kafka初学者及日常运维人员。

kafka 的shell操作(基于topic的增删改查 shell)

目录


1. 启动节点的Kafka进程

CDH已经启动可以忽略

nohup kafka-server-start.sh \
/opt/cloudera/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373/lib/kafka/config/server.properties \

1>~/logs/kafka_std.log \
2>~/logs/kafka_err.log &

2. 创建topic

kafka-topics.sh \
--create \
--zookeeper cdh-master:2181,cdh-slave01:2181,cdh-slave02:2181 \
--partitions 1 \
--replication-factor 1 \
--topic kafka_test​​

kafka-topics.sh \
--create \
--zookeeper cdh-master:2181,cdh-slave01:2181,cdh-slave02:2181 \
--replication-factor 3 \
--partitions 10 \
--topic kafka_test

3. 查看已创建的所有topics

kafka-topics.sh \
--zookeeper cdh-master:2181,cdh-slave01:2181,cdh-slave02:2181 \
--list

4. 查看指定topic详细信息

kafka-topics.sh \
--zookeeper cdh-master:2181,cdh-slave01:2181,cdh-slave02:2181 \
--describe \
--topic kafka_test

5. 开启生产者模式

kafka-console-producer.sh \
--broker-list cdh-master:9092,cdh-slave01:9092,cdh-slave02:9092 \
--topic kafka_test

6. 开启消费者模式

kafka-console-consumer.sh \
--bootstrap-server cdh-master:9092,cdh-slave01:9092,cdh-slave02:9092 \
--from-beginning \
--topic kafka_test

7. 查看分区偏移量

kafka-run-class.sh \        # CDH6为:kafka-run-class
kafka.tools.GetOffsetShell \
--broker-list cdh-master:9092,cdh-slave01:9092,cdh-slave02:9092 \
--topic topic_sdk_log \
--partitions 0 \
--time -1 

8. 增加topic分区数

kafka-topics.sh \
--zookeeper cdh-master:2181,cdh-slave01:2181,cdh-slave02:2181 \
--alter \
--topic kafka_test \
--partitions 20 ​ 

# 增加副本数
kafka-topics.sh \
--zookeeper cdh-master:2181,cdh-slave01:2181,cdh-slave02:2181 \
--alter \
--topic kafka_test \
--replication-factor 2 ​​

9. 删除topic

kafka-topics.sh \
--zookeeper cdh-master:2181,cdh-slave01:2181,cdh-slave02:2181 \
--delete \
--topic kafka_test

10. 查看队列信息

kafka-consumer-groups.sh \
--bootstrap-server cdh-slave01:9092 \
--list

11. 查看指定队列消费数据

新版本,consumer 信息存储在 Kafka 的 broker 中,Kafka自维护偏移量,。

kafka-consumer-groups.sh \
--bootstrap-server cdh-slave01:9092 \
--describe \
--group flume

旧版本,consumer 信息存储在 Zookeeper 中,Zookeeper 维护偏移量。 

kafka-consumer-groups.sh \
----zookeeper cdh-slave01:2181 \
--describe \
--group flume
# 进入zk,多节点逗号分隔
zkCli.sh -server hadoop-master:2181

# 查看某个group_id的某个topic的offset
ls /consumers/[group_id]/offsets/[topic]/[broker_id-part_id]

 

<think> 我们正在被询问关于`zookeeper-shell.sh`的使用方法。根据引用[3]和[5]中的信息,我们可以整理出以下内容: 引用[3]明确指出: > `bin/zookeeper-shell.sh`作用是连接Zookeeper,并通过命令查询注册的信息,本质上就是Zookeeper的语法。 并且给出了基本用法: ```shell bin/zookeeper-shell.sh zookeeper_host:port[/path] [args…] ``` 同时列举了可用的命令(args)类型。 引用[5]则展示了一些具体的使用示例,例如: - `ls /` 查看节点 - `ls /brokers/ids` 查看broker的id - `ls /brokers/topics` 查看主题 - `ls /admin/delete_topics` 查看待删除的主题 因此,我们可以这样组织回答: 1. 首先说明`zookeeper-shell.sh`的作用:用于连接Zookeeper并执行命令,本质上是一个Zookeeper命令行客户端。 2. 介绍基本用法:指定Zookeeper的主机和端口(以及可选的路径)来连接。 3. 列举常用命令(参考引用[3]和[5]),并给出一些具体示例。 注意:由于Kafka将元数据存储在Zookeeper中,我们可以通过这个工具来查看Kafka相关的信息(如broker、topic、消费者偏移量等)。 另外,引用[4]提到Kafka从2.2版本开始逐渐弃用Zookeeper参数,转而使用bootstrap-server,但这里我们讨论的是直接操作Zookeeper的工具,所以不受影响。 根据以上分析,我们可以这样回答: ### Kafka的zookeeper-shell.sh使用方法 `zookeeper-shell.sh` 是Kafka提供的一个脚本,用于连接Zookeeper服务器并执行Zookeeper命令行操作。通过它,你可以查看和管理Kafka存储在Zookeeper中的元数据(如broker信息、主题配置、消费者偏移量等)。以下是详细使用方法: #### 1. 连接Zookeeper 运行以下命令连接到Zookeeper(假设Zookeeper服务器地址为`zk1:2181`): ```shell bin/zookeeper-shell.sh zk1:2181 ``` 连接成功后,终端会显示提示符`WATCHER::`,此时可以输入Zookeeper命令。 #### 2. 常用命令 以下是常用命令及其功能(更多命令可输入`help`查看): | 命令 | 功能 | 示例 | |------|------|------| | `ls <path>` | 列出指定路径下的子节点 | `ls /` 查看节点<br>`ls /brokers/ids` 查看所有broker ID | | `get <path>` | 获取节点数据和元数据 | `get /brokers/ids/0` 查看ID为0的broker详情 | | `stat <path>` | 查看节点状态(不返回数据) | `stat /brokers/topics` | | `create <path> <data>` | 创建节点并存储数据 | `create /test-node "hello"` | | `set <path> <data>` | 更新节点数据 | `set /test-node "world"` | | `delete <path>` | 删除节点 | `delete /test-node` | | `quit` | 退出shell | | #### 3. 查看Kafka相关数据示例 - **查看所有broker**: ```shell ls /brokers/ids ``` 输出示例:`[0, 1, 2]`,表示有3个broker。 - **查看指定broker详情**: ```shell get /brokers/ids/0 ``` 输出包含该broker的主机名、端口等配置[^5]。 - **查看所有主题**: ```shell ls /brokers/topics ``` 输出示例:`["topic1", "topic2"]`。 - **查看主题的分区信息**: ```shell get /brokers/topics/topic1 ``` 输出该主题的分区分布和副本信息。 - **查看待删除的主题**(标记为删除但尚未实际删除): ```shell ls /admin/delete_topics ``` #### 4. 注意事项 - **谨慎操作**:直接修改Zookeeper数据可能导致Kafka集群异常,建议只读操作- **路径规范**:Kafka在Zookeeper中的存储路径有固定前缀(如`/brokers`、`/config`等),请勿随意更改。 - **版本兼容性**:不同Kafka版本的Zookeeper数据结构可能略有差异,操作前请确认版本[^4]。 #### 5. 退出 输入`quit`或按`Ctrl+C`退出shell。 > 提示:对于Kafka 2.2及以上版本,官方推荐使用`kafka-topics.sh`等工具替代直接操作Zookeeper[^4]。但在调试或监控场景下,`zookeeper-shell.sh`仍具价值。 通过以上步骤,你可以有效利用`zookeeper-shell.sh`诊断Kafka集群状态[^3][^5]。 §§相关问题§§ 1. 如何安全地修改Kafka在Zookeeper中的配置? 2. Zookeeper中存储了哪些Kafka关键数据? 3. 使用zookeeper-shell.sh时如何避免误操作? </think>### Kafka的`zookeeper-shell.sh`使用方法 `zookeeper-shell.sh` 是 Kafka 提供的命令行工具,用于直接与 Zookeeper 交互(Kafka 依赖 Zookeeper 存储集群元数据)。通过它可查询或修改 Zookeeper 中的节点信息,是诊断 Kafka 集群状态的重要工具。以下是详细使用方法: --- #### 1. **基本连接语法** ```bash bin/zookeeper-shell.sh <zookeeper_host:port> [command] ``` - **参数说明**: - `<zookeeper_host:port>`:Zookeeper 服务器地址(如 `localhost:2181`) - `[command]`:可选,直接执行命令后退出(不进入交互模式) **示例**:连接本地 Zookeeper ```bash bin/zookeeper-shell.sh localhost:2181 ``` 连接成功后显示提示符:`WATCHER::`,可输入 Zookeeper 命令[^3]。 --- #### 2. **常用命令及功能** 以下命令在连接后的交互模式下使用: | 命令 | 功能 | 示例 | 输出说明 | |------|------|------|----------| | `ls <path>` | 列出节点子目录 | `ls /` | 显示根节点下所有路径(如 `[zookeeper, brokers]`)[^5] | | `get <path>` | 获取节点数据 | `get /brokers/ids/0` | 返回 broker 的 JSON 配置信息(主机、端口等) | | `stat <path>` | 查看节点状态 | `stat /brokers/topics` | 显示版本号、创建时间等元数据 | | `create <path> <data>` | 创建节点 | `create /test-node "hello"` | 新建节点并存储数据 | | `set <path> <data>` | 修改节点数据 | `set /test-node "updated"` | 覆盖节点原有数据 | | `delete <path>` | 删除节点 | `delete /test-node` | 删除指定节点(需无子节点) | | `quit` | 退出 Shell | `quit` | 断开连接并退出 | --- #### 3. **关键 Kafka 元数据查询示例** - **查看所有 broker**: ```bash ls /brokers/ids ``` 输出示例:`[0, 1, 2]` 表示有 3 个 broker[^5]。 - **查看所有 topic**: ```bash ls /brokers/topics ``` 输出示例:`["test-topic", "__consumer_offsets"]`[^5]。 - **查看待删除 topic**: ```bash ls /admin/delete_topics ``` 输出示例:`["pending-delete-topic"]`(标记删除但未实际删除的 topic)[^5]。 - **查看 consumer group 偏移量**: ```bash get /consumers/my-group/offsets/test-topic/0 ``` 返回分区 0 的最新消费偏移量。 --- #### 4. **注意事项** 1. **谨慎操作**:直接修改 Zookeeper 数据可能破坏 Kafka 集群状态,建议只读查询。 2. **路径规范**:Kafka 元数据存储在固定路径下: - Broker 信息:`/brokers/ids` - Topic 信息:`/brokers/topics` - 消费者偏移量:`/consumers/<group-id>` 3. **替代方案**:Kafka 2.2+ 推荐使用 `--bootstrap-server` 参数的工具(如 `kafka-topics.sh`),避免直接操作 Zookeeper[^4]。 --- > 通过 `zookeeper-shell.sh` 可快速诊断 Kafka 元数据异常(如 broker 注册失败、topic 未同步)。建议在集群故障排查时使用[^3][^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

訾零

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值