优设网网站,wordpress 粘贴图片,住房和城乡建设部网站北京,建设一个购物网站的费用文章目录 下载安装windows安装目录结构启动服务器创建主题发送一些消息启动消费者设置多代理集群常见问题 工具kafka tool 常用指令topic查看topic删除topic 常见问题参考文献 下载安装
下载地址#xff1a;kafka-download
windows安装
下载完后#xff0c;找一个目录解压… 文章目录 下载安装windows安装目录结构启动服务器创建主题发送一些消息启动消费者设置多代理集群常见问题 工具kafka tool 常用指令topic查看topic删除topic 常见问题参考文献 下载安装
下载地址kafka-download
windows安装
下载完后找一个目录解压。
解压完成后看看目录结构。
对于linux来讲所有的启动文件都放在bin目录下那一堆sh文件
对于windows来讲所有的启动文件放在bin\windows目录下一堆bat文件。
需要到config目录下找到server.properties文件指定log目录
log.dirsD:\software\Kafka-2.6.3\kafka-logs指定在kafka安装目录就可以。
目录结构
bin/
config/
libs/
licenses/
logs/
site-docs/bin目录下放了一堆Kafka的启动文件包括kafka启动文件、zookeeper启动文件。bin\windows目录下甚至还有一套给windows用的启动文件。
config目录下有一堆配置文件包括kafka服务器的配置文件server.properties以及ZooKeeper的配置文件zookeeper.properties等。
启动服务器
Kafka使用ZooKeeper因此如果还没有ZooKeeper服务器需要先启动一个。
Kafka的那一堆打包脚本里提供了一个简单的单节点ZooKeeper实例cmd内调用
D:\software\Kafka-2.6.3.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.propertiesZookeeper启动后再启动Kafka服务器
D:\software\Kafka-2.6.3.\bin\windows\kafka-server-start.bat .\config\server.properties到这里Kafka服务器启动成功。
创建主题
创建一个主题名为test设定只有一个分区保留一个副本。
bin\windows\kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test如果想查看当前的主题列表
bin\windows\kafka-topics.bat --list --bootstrap-server localhost:9092除了手动创建主题以外还可以将代理配置一下设置成在发布不存在的主题时自动创建主题。
发送一些消息
Kafka带有一个命令行客户端该客户端将从文件或者标准输入中获取输入并将其作为消息发送到Kafka集群。
默认情况下每行将作为单独的消息发送。
运行生产者在控制台中输入一些消息以发送到服务器
bin\windows\kafka-console-producer.bat --bootstrap-server localhost:9092 --topic test
this is a message
this is the other message这时候用kafka tool查看就可以看到 启动消费者
Kafka还有一个消费者命令行可以将消息转存到标准输出
bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning如图 如果在不同的终端运行着生产者和消费者的命令行那么现在应该能够在生产者终端中输入消息并看到它们出现在消费者终端中。
所有命令行工具都有附加选项。之后可以记录查看。
设置多代理集群
在之前我们的Kafka集群只有一个代理。虽然启动更多的代理并没有什么太大的作用但是我们这里可以先感受一下在本地机器上将集群扩展为3个节点的方法
首先我们需要为每个broker都创建一个配置文件windows上用copy指令
copy config\server.properties config\server-1.propertiescopy config\server.properties config\server-2.properties然后分别编辑这几个配置文件主要修改以下几个属性即可
config/server-1.properties:broker.id1listenersPLAINTEXT://:9093log.dirs/tmp/kafka-logs-1config/server-2.properties:broker.id2listenersPLAINTEXT://:9094log.dirs/tmp/kafka-logs-2默认的server.propertiesbroker.id0listener默认应该是9092。
broker.id这个属性是每个代理的唯一名称要保证不重复。
这里重写端口和日志目录是因为我们需要在同一台机器上运行它们所以要避免不同代理使用同一端口的情况。
之前我们已经启动了ZooKeeper和一个单节点现在我们启用两个新来的节点
.\bin\windows\kafka-server-start.bat .\config\server-1.properties .\bin\windows\kafka-server-start.bat .\config\server-2.properties启动之后在kafka tool中可以看到 broker已经变成3个了。
现在再创建一个复制因子为3的新主题
bin\windows\kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 3 --partitions 1 --topic my-replicated-topic既然我们现在有了一个集群那我们怎么知道集群下每个代理都在做些什么
使用describe指令
bin\windows\kafka-topics.bat --describe --bootstrap-server localhost:9092 --topic my-replicated-topic输出
Topic: my-replicated-topic PartitionCount: 1 ReplicationFactor: 3 Configs: segment.bytes1073741824Topic: my-replicated-topic Partition: 0 Leader: 0 Replicas: 0,2,1 Isr: 0,2,1第一行给出了所有分区的摘要之后每附加一行就给出一个分区的信息。
当前主题只有一个分区所以只有一行。
leader负责给定分区所有读取和写入的节点。每个节点都可能成为领导者replicas副本哪些节点复制了此分区的日志Isr一组同步副本是replicas的子集当前存活且进度跟leader一样
在我们的示例中my-replicated-topic 只有一个分区分区下只有一个leader节点。
如果想在新主题下发布或者查看消息的话跟之前一样改改topic名就可以比如说发布
bin\windows\kafka-console-producer.bat --bootstrap-server localhost:9092 --topic my-replicated-topic如果我们这时候把leader节点关掉也并不会影响整个集群的时候kafka将在现有的可用节点里选择一个作为leader原先的leader也将不会在同步副本集中。
2022-4-13 17:47:20 以上测试失败集群崩掉了。。
常见问题
在kafka安装目录下输入命令
.\bin\windows\kafka-server-start.bat .\config\server.properties结果报错
输入行太长
语法错误疑似原因是kafka目录建的太深了原先我的kafka根目录位于磁盘下的四级目录直接放在磁盘目录下就好了。
很神奇的问题据说就是文件夹树的深度太深了。
工具
kafka tool
可视化查看kafka topic内容的工具
下载地址https://www.kafkatool.com/download.html
安装后双击.exe启动工具就可以。
右键add 新链接填写基本信息 bootstrap servers多是限制只能用域名来访问所以需要自己设置hosts。
C:\Windows\System32\drivers\etc 下的 hosts 文件中添加入 kafka 的集群域名, 例如
1xx.1xx.2xx.107 kafka1
1xx.1xx.2xx.108 kafka2kafka tool支持的功能有很多还可以模拟发送message功能很丰富。
详细的功能可以参照参考文献1。
常用指令
topic
查看topic
打印当前所有topic
kafka-topics.bat --bootstrap-server localhost:9092 --list删除topic
2022-4-26 13:53:21 第一种方式好像不行删完之后直接kafka打不开了。
2022-4-26 14:13:42 windows端删除topic就是有问题每次删除必崩溃。我已经不敢动了。
彻底删除topic有两种方式
删除kafka存储目录下相关topic目录。即server.properties中对log.dirs的设置如果配置了delete.topic.enabletrue直接通过命令删除如果命令删除不掉直接通过zookeeper-client 删除掉broker下的topic即可。
./bin/kafka-topics --delete --zookeeper 【zookeeper server】 --topic 【topic name】如果kafaka启动时加载的配置文件中server.properties没有配置delete.topic.enabletrue那么此时的删除并不是真正的删除而是把topic标记为marked for deletion你可以通过命令./bin/kafka-topics --zookeeper 【zookeeper server】 --list 来查看所有topic此时你若想真正删除它可以如下操作1登录zookeeper客户端命令./bin/zookeeper-client2找到topic所在的目录ls /brokers/topics3找到要删除的topic执行命令rmr /brokers/topics/【topic name】即可此时topic被彻底删除。另外被标记为marked for deletion的topic你可以在zookeeper客户端中通过命令获得ls /admin/delete_topics/【topic name】如果你删除了此处的topic那么marked for deletion 标记消失常见问题 The Cluster ID doesn’t match stored clusterId 去日志目录里把meta.properties删掉就好了但是删完了之后我的topic在kafka tool里都看不到了。。。。
参考文献
Kafka 可视化工具kafka中文文档 不过是1.0的kafka官方文档 版本可选windows系统下启动kafka CMD报错输入行太长语法错误windows下安装kafka教程 这个没有按顺序写第一次看没有注意到要启动ZooKeeper。。。吃大亏。kafka删除topickafka API文档 很不错灰常重要关于kafka producer和consummer怎么用就是从这里学到的。