当前位置:   article > 正文

windows 使用kafka_kafka windows

kafka windows

前置环境配置

安装jdk1.8,并且配置环境变量

zookeeper

下载:https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/
在这里插入图片描述

安装步骤

1、解压Zookeeper安装包到指定目录,注意目录不要有空格。
2、Zookeeper安装目录下创建文件夹data
3、进入config目录,复制zoo_sample.cfg文件,改名为zoo.cfg
4、修改配置文件 zoo.cfg

把dataDir=/tmp/zookeeper
修改为:
dataDir=D:\\bigdata\\zookeeper\\3.6.4\\data
注意:此处的路径一定要使用双斜杠" \ "
  • 1
  • 2
  • 3
  • 4

5、添加Zookeeper的系统变量,新建环境变量:ZOOKEEPER_HOME
6、环境变量Path添加%ZOOKEEPER_HOME%\bin
7、启动Zookeeper服务:zkServer,以管理员权限打开命令窗口,输入:zkServer
在这里插入图片描述

8、客户端连接Zookeeper:zkCli,以管理员权限打开命令窗口,输入:zkCli
在这里插入图片描述

Scala安装

官网下载地址:
https://downloads.lightbend.com/scala/2.11.12/scala-2.11.12.msi
各个版本下载地址:https://www.scala-lang.org/download/all.html

安装

1.点击 scala-2.11.12.msi 文件安装,本地点击msi文件安装
2.新增环境变量 SCALA_HOME
在这里插入图片描述
3.配置path
%SCALA_HOME%\bin
4.验证安装是否成功
在这里插入图片描述

Kafka官网下载

https://kafka.apache.org/downloads
在这里插入图片描述

安装

1、解压Kafka安装包到安装目录
2、Kafka安装目录下新建目录logs
3、修改Kafka配置文件 config/server.properties
3.1、修改 log.dirs 参数,修改 log.dirs 参数值,修改成上一步新建的logs文件夹。注意文件夹路径中是双左斜杠
3.2、修改 listeners 参数,listeners=PLAINTEXT://localhost:9092
3.3、修改zookeeper连接地址: zookeeper.connect=localhost:2181
4、Kafka启动,由于Kafka依赖于Zookeeper,所以要先启动Zookeeper,再启动Kafka。
4.1、如果出现报错:输入行太长。命令语法不正确,解决方式:将kafka文件所在的文件夹,直接放在某个盘符的根目录下启动,造成上面报错的原因是因为目录层级结构嵌套的太深
4.2、启动kafka,切换道bin的上层目录 .\bin\windows\kafka-server-start.bat .\config\server.properties
4.3、关闭kafka .\bin\windows\kafka-server-stop.bat
至此kafka的安装完成

kafka使用

注意事项:Kafka2.2之后版本中使用–zookeeper 会出现报错情况,2.2之后的版本使用了–bootstrap-server 来替换–zookeeper

创建topics

//根目录下执行
.\bin\windows\kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 3 --topic test
解释参数值:
副本因子(replication-factor):1
分区:3
  • 1
  • 2
  • 3
  • 4
  • 5

解释:
Partition主题分区数:
kafka通过分区策略,将不同的分区分配在一个集群中的broker上,一般会分散在不同的broker上,当只有一个broker时,所有的分区就只分配到该Broker上。消息会通过负载均衡发布到不同的分区上,消费者会监测偏移量来获取哪个分区有新数据,从而从该分区上拉取消息数据。分区数越多,在一定程度上会提升消息处理的吞吐量,因为kafka是基于文件进行读写,因此也需要打开更多的文件句柄,也会增加一定的性能开销。如果分区过多,那么日志分段也会很多,写的时候由于是批量写,其实就会变成随机写了,随机 I/O 这个时候对性能影响很大。所以一般来说 Kafka 不能有太多的 Partition。

Push vs. Pull
作为一个messaging system,Kafka遵循了传统的方式,选择由producer向broker push消息并由consumer从broker pull消息。事实上,push模式和pull模式各有优劣。
push模式很难适应消费速率不同的消费者,因为消息发送速率是由broker决定的。push模式的目标是尽可能以最快速度传递消息,但是这样很容易造成consumer来不及处理消息,典型的表现就是拒绝服务以及网络拥塞。而pull模式则可以根据consumer的消费能力以适当的速率消费消息。

Topic & Partition
Topic在逻辑上可以被认为是一个queue,每条消息都必须指定它的topic,可以简单理解为必须指明把这条消息放进哪个queue里。为了使得Kafka的吞吐率可以水平扩展,物理上把topic分成一个或多个partition,每个partition在物理上对应一个文件夹,该文件夹下存储这个partition的所有消息和索引文件。

查看topics

//根目录下执行
.\bin\windows\kafka-topics.bat --bootstrap-server localhost:9092 --list

  • 1
  • 2
  • 3

打开一个producer(生产者)

//根目录下执行
.\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test

  • 1
  • 2
  • 3

打开一个consumer(消费者)

//根目录下执行
.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning
  • 1
  • 2

打开一个consumer(消费者组的形式)

//根目录下执行
.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --group group1
  • 1
  • 2

查看消费者列表

//根目录下执行
.\bin\windows\kafka-consumer-groups.bat -bootstrap-server localhost:9092 --list
  • 1
  • 2

查看指定消费者组详情

//根目录下执行
.\bin\windows\kafka-consumer-groups.bat -bootstrap-server localhost:9092 --describe --group group1
  • 1
  • 2

查看所有消费者组详情

//根目录下执行 
.\bin\windows\kafka-consumer-groups.bat -bootstrap-server localhost:9092 --describe  --all-groups
  • 1
  • 2

查看所有消费者成员信息

//根目录下执行 
.\bin\windows\kafka-consumer-groups.bat -bootstrap-server localhost:9092 --describe --all-groups --members
  • 1
  • 2

指定消费组成员信息

//根目录下执行
.\bin\windows\kafka-consumer-groups.bat -bootstrap-server localhost:9092  --describe --members --group group1
  • 1
  • 2

广播模式

//根目录下执行
//创建主题
.\bin\windows\kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 3 --topic topic01

//创建生产者
.\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic topic01

//创建消费者组1
.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic topic01 --group group1

//创建消费者组2
.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic topic01 --group group2

结论:每次生产者发送的消息,都会分发给两个消费者组
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

kafka管理工具

下载地址:https://github.com/redpanda-data/console
在这里插入图片描述

收不到消息常见问题

  1. 在consumer没有打开之前,就在producer里面发送了消息
  2. producer和consumer使用的topic不一致
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/773502
推荐阅读
相关标签
  

闽ICP备14008679号