Kafka客户端使用实践
操作场景
该任务指导用户在运维场景或业务场景中使用Kafka客户端。
本章节适用于MRS 3.x及后续版本。
前提条件
- 已安装客户端,例如安装目录为“/opt/client”。
- 各组件业务用户由MRS集群管理员根据业务需要创建。“机机”用户需要下载keytab文件。“人机”用户第一次登录时需修改密码。(普通模式不涉及)
- 在修改集群域名后,需要重新下载客户端,以保证客户端配置文件中kerberos.domain.name配置为正确的服务端域名。
使用Kafka客户端
- 以客户端安装用户,登录安装客户端的节点。
- 执行以下命令,切换到客户端安装目录。
cd /opt/client
- 执行以下命令配置环境变量。
source bigdata_env
- 执行以下命令,进行用户认证。(普通模式跳过此步骤)
kinit 组件业务用户
- 执行以下命令切换到Kafka客户端安装目录。
cd Kafka/kafka/bin
- 执行以下命令使用客户端工具查看帮助并使用。
- ./kafka-console-consumer.sh:Kafka消息读取工具
- ./kafka-console-producer.sh:Kafka消息发布工具
- ./kafka-topics.sh:Kafka Topic管理工具
- 如果需要使用kafka-topics.sh管理Kafka主题,可以执行以下命令。
- ZooKeeper节点业务IP:登录FusionInsight Manager,选择“集群 > 服务 > ZooKeeper > 实例”,查看并记录ZooKeeper角色实例业务IP地址获取。
- clientPort:可在ZooKeeper的全部配置参数中搜索“clientPort”查看。默认端口如下:
开源端口默认值为:2181
定制端口默认值为:24002
端口定制/开源区分:创建LTS版本类型集群时,可以选择“组件端口”为“开源”或是“定制”,选择“开源”使用开源端口,选择“定制”使用定制端口。
- Kafka集群IP:登录FusionInsight Manager页面,选择“集群 > 服务 > Kafka > 实例”,查看并记录Broker角色实例其中任意一个的业务IP地址即可。
- Kafka集群IP端口号安全模式下默认为21007,普通模式下默认为9092。
- MRS 3.3.1及之后版本,Kafka仅支持使用“--bootstrap-server”创建Topic,不再支持使用“--zookeeper”来创建Topic。
- “--zookeeper” 和 “--bootstrap-server”两种方式的区别如下:
- “--zookeeper”方式由客户端生成副本分配方案,社区从一开始就支持这种方式,为了降低对Zookeeper组件的依赖,社区将在后续版本中删除对这种方式的支持。基于这种方式创建Topic时,可以通过 "--enable-rack-aware" 和 “--enable-az-aware”这两个选项自由组合来选用副本分配策略。注意:使用“--enable-az-aware”选项的前提是服务端开启了跨AZ特性,即服务端启动参数“az.aware.enable”为“true”,否则会执行失败。
- “--bootstrap-server”方式由服务端生成副本分配方案,后续版本,社区将只支持这种方式来进行Topic管理。基于这种方式创建Topic时,不支持 "--enable-rack-aware" 和 "--enable-az-aware"选项来控制副本分配策略,支持 “rack.aware.enable”和“az.aware.enable”这两个服务启动参数组合来控制副本分配策略,需注意的是“az.aware.enable”参数不可修改,在创建集群时,如果开启跨AZ特性,会自动配置为“true”;“rack.aware.enable”参数支持用户自定义修改。
- 创建主题:
./kafka-topics.sh --create --topic 主题名称 --partitions 主题占用的分区数 --replication-factor 主题的备份数 --zookeeper ZooKeeper的任意一个节点的业务IP:clientPort/kafka
./kafka-topics.sh --create --topic 主题名称 --partitions 主题占用的分区数 --replication-factor 主题的备份数 --bootstrap-server Kafka集群IP:21007 --command-config ../config/client.properties
- 罗列主题:
- ./kafka-topics.sh --list --zookeeper ZooKeeper的任意一个节点的业务IP:clientPort/kafka
- ./kafka-topics.sh --list --bootstrap-server Kafka集群IP:21007 --command-config ../config/client.properties
- 查看主题:
- ./kafka-topics.sh --describe --zookeeper ZooKeeper的任意一个节点的业务IP:clientPort/kafka --topic 主题名称
- ./kafka-topics.sh --describe --bootstrap-server Kafka集群IP:21007 --command-config ../config/client.properties --topic 主题名称
- 修改主题:
- ./kafka-topics.sh --alter --topic 主题名称 --config 配置项=配置值 --zookeeper ZooKeeper的任意一个节点的业务IP:clientPort/kafka
- 扩展分区:
- ./kafka-topics.sh --alter --topic 主题名称 --zookeeper ZooKeeper的任意一个节点的业务IP:clientPort/kafka --command-config Kafka/kafka/config/client.properties --partitions 扩展后分区个数
- ./kafka-topics.sh --alter --topic 主题名称 --bootstrap-server Kafka集群IP:21007 --command-config Kafka/kafka/config/client.properties --partitions 扩展后分区个数
- 删除主题:
- ./kafka-topics.sh --delete --topic 主题名称 --zookeeper ZooKeeper的任意一个节点的业务IP:clientPort/kafka
- ./kafka-topics.sh --delete --topic 主题名称 --bootstrap-server Kafka集群IP:21007 --command-config ../config/client.properties