如何获取Topic的分布信息
问题描述
如何获取Topic在Broker实例的分布信息?
前置操作
- 已安装客户端,例如安装目录为“/opt/client”,以下操作的客户端目录只是举例,请根据实际安装目录修改。
下载并安装集群客户端的具体操作,请参考安装MRS集群客户端。
- 登录MRS集群Manager。
登录集群Manager具体操作,请参考访问MRS集群Manager。
- 获取ZooKeeper节点业务IP及端口。
- 以客户端安装用户,登录安装客户端的节点。
- 执行以下命令,切换到客户端安装目录,例如安装目录为“/opt/client”,具体以实际替换。
cd /opt/client - 执行以下命令配置环境变量。
source bigdata_env
- 执行以下命令,进行用户认证。(集群未启用Kerberos认证(普通模式)时跳过此步骤)
kinit 组件业务用户 - 执行以下命令进入Kafka客户端“bin”目录。
cd Kafka/kafka/bin
- 执行Kafka相关命令,获取Topic分布信息和副本同步信息,观察返回结果。
kafka-topics.sh --describe --zookeeper <zk_host:port/chroot>例如:
[root@mgtdat-sh-3-01-3 client]#kafka-topics.sh --describe --zookeeper 10.149.0.90:2181/kafka Topic:topic1 PartitionCount:2 ReplicationFactor:2 Configs: Topic: topic1 Partition: 0 Leader: 26 Replicas: 23,25 Isr: 26 Topic: topic1 Partition: 1 Leader: 24 Replicas: 24,23 Isr: 24,23
其中,Replicas对应副本分布信息,Isr对应副本同步信息。
查询Broker ID的对应关系
- 方法一:
- 在ZooKeeper中查询Broker ID的对应关系。
sh zkCli.sh -server <zk_host:port>
- 在ZooKeeper客户端执行如下命令。
ls /kafka/brokers/ids
get /kafka/brokers/ids/<查询出的Broker id>例如:
[root@node-master1gAMQ kafka]# zkCli.sh -server node-master1gAMQ:2181 Connecting to node-master1gAMQ:2181 Welcome to ZooKeeper! JLine support is enabled WATCHER:: WatchedEvent state:SyncConnected type:None path:null [zk: node-master1gAMQ:2181(CONNECTED) 0] ls /kafka/brokers/ ids seqid topics [zk: node-master1gAMQ:2181(CONNECTED) 0] ls /kafka/brokers/ids [1] [zk: node-master1gAMQ:2181(CONNECTED) 1] get /kafka/brokers/ids/1 {"listener_security_protocol_map":{"PLAINTEXT":"PLAINTEXT","SSL":"SSL"},"endpoints":["PLAINTEXT://192.168.2.242:9092","SSL://192.168.2.242:9093"],"rack":"/default/rack0","jmx_port":21006,"host":"192.168.2.242","timestamp":"1580886124398","port":9092,"version":4} [zk: node-master1gAMQ:2181(CONNECTED) 2]
- 在ZooKeeper中查询Broker ID的对应关系。
- 方法二:
执行以下命令,获取节点和broker ID的对应关系
kafka-broker-info.sh --zookeeper <zk_host:port/chroot>例如:
[root@node-master1gAMQ kafka]# bin/kafka-broker-info.sh --zookeeper 192.168.2.70:2181/kafka Broker_ID IP_Address -------------------------- 1 192.168.2.242