【Kafka】Windows下安装Kafka
- Kafka简介
- 一、Kafka安装前提
- 安装Kafka之前,需要安装JDK、Zookeeper、Scala。
- 1.1、JDK安装(version:1.8)
- 1.1.1、JDK官网下载
- 1.1.2、JDK网盘下载
- 1.1.3、JDK安装
- 1.2、Zookeeper安装
- 1.2.1、Zookeeper官网下载
- 1.2.2、Zookeeper网盘下载
- 1.2.3、Zookeeper安装
- 1.3、Scala安装(version:2.12)
- 1.3.1、Scala官网下载
- 1.3.2、Scala网盘下载
- 1.3.3、Scala安装
- 二、Kafka安装(version:2.12-3.5.1)
- 2.1、Kafka官网下载
- 2.2、Kafka网盘下载
- 2.3、Kafka安装
- 2.3.1、解压Kafka安装包到安装目录
- 2.3.2、Kafka安装目录下新建目录logs
- 2.3.3、修改Kafka配置文件 server.properties
- 2.3.3.1、修改 log.dirs 参数
- 2.3.3.2、修改 listeners 参数
- 2.4、Kafka启动
- 2.4.1、先启动Zookeeper服务
- 2.4.2、再启动Kafka服务
- 2.4、Kafka相关操作(Kafka新版本命令)
- 2.4.1、创建topics
- 2.4.2、查看topics
- 2.4.3、打开一个producer(生产者)
- 2.4.4、打开一个consumer(消费者)
- 2.4.5、测试发送和接受消息
- 2.4.5.1、producer(生产者)发送消息
- 2.4.5.2、consumer(消费者)接收消息
- 2.4.5、收不到消息,常见情况
Kafka简介
(一)、Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。
(二)、Kafka 本质上是⼀个消息队列。与zeromq不同的是,Kafka是一个独立的框架而不是一个库。
(三)、Kafka 是一种高吞吐量 的分布式发布订阅消息系统,有如下特性:
- 通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
- 高吞吐量 :即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。
- 支持通过Kafka服务器和消费机集群来分区消息。
- 支持Hadoop并行数据加载。
一、Kafka安装前提
安装Kafka之前,需要安装JDK、Zookeeper、Scala。
- Kafka依赖Zookeeper,在安装Kafka之前,需要安装、运行Zookeeper。
- 而且Kafka是由Scala和Java编写,所以也需要安装jdk、scala。
本次安装版本选择:
JDK:1.8
Zookeeper:3.6.4
Scala:2.12
Kafka:3.5.1
1.1、JDK安装(version:1.8)
1.1.1、JDK官网下载
官网下载地址(需要oracle账号)
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
1.1.2、JDK网盘下载
或者网盘下载:jdk-8u381-windows-x64.exe
1.1.3、JDK安装
安装方法就不赘述了。
1.2、Zookeeper安装
1.2.1、Zookeeper官网下载
官网下载地址:https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.6.4/apache-zookeeper-3.6.4-bin.tar.gz
1.2.2、Zookeeper网盘下载
或者网盘下载:apache-zookeeper-3.6.4-bin.tar.gz
1.2.3、Zookeeper安装
安装方法就不赘述了。
参考博文:Windows下安装Zookeeper(图文记录详细步骤,手把手包安装成功)
1.3、Scala安装(version:2.12)
1.3.1、Scala官网下载
官网下载地址:
https://downloads.lightbend.com/scala/2.11.12/scala-2.11.12.msi
1.3.2、Scala网盘下载
或者网盘下载:scala-2.11.12.msi
1.3.3、Scala安装
安装方法就不赘述了。
可参考博文:Windows下安装Scala(以Scala 2.11.12为例)
二、Kafka安装(version:2.12-3.5.1)
version:2.12-3.5.1,表示Scala版本是2.12,Kafka版本是基于此的3.5.1版本。
2.1、Kafka官网下载
官网下载地址:https://downloads.apache.org/kafka/3.5.1/kafka_2.12-3.5.1.tgz
2.2、Kafka网盘下载
网盘下载地址:kafka_2.12-3.5.1.tgz
2.3、Kafka安装
2.3.1、解压Kafka安装包到安装目录
这里解压到:D:\bigdata\kafka\2.12-3.5.1
2.3.2、Kafka安装目录下新建目录logs
2.3.3、修改Kafka配置文件 server.properties
文件路径:D:\bigdata\kafka\2.12-3.5.1\config\server.properties
2.3.3.1、修改 log.dirs 参数
修改 log.dirs 参数值,修改成上一步新建的logs文件夹。注意文件夹路径中是双左斜杠
log.dirs=D:\\bigdata\\kafka\\2.12-3.5.1\\logs
2.3.3.2、修改 listeners 参数
修改 listeners 参数值。
listeners=PLAINTEXT://localhost:9092
2.4、Kafka启动
由于Kafka依赖于Zookeeper,所以要先启动Zookeeper,再启动Kafka。
2.4.1、先启动Zookeeper服务
管理员权限打开命令窗口,输入命令zkServer,启动Zookeeper服务:
zkServer
显示如下信息,则表示Zookeeper服务正常运行:
2.4.2、再启动Kafka服务
管理员权限打开命令窗口,进入到Kafka安装目录(D:\bigdata\kafka\2.12-3.5.1)。
输入如下命令启动Kafka服务:
.\bin\windows\kafka-server-start.bat .\config\server.properties
显示如下信息,则表示Kafka服务正常运行:
2.4、Kafka相关操作(Kafka新版本命令)
Kafka2.2之后版本中使用–zookeeper hadoop01:2181会出现报错情况,2.2之后的版本使用了–bootstrap-server hadoop01:9092来替换–zookeeper hadoop01:2181
2.4.1、创建topics
以管理员权限新开一个命令提示窗口,进入D:\bigdata\kafka\2.12-3.5.1\bin\windows目录,执行以下命令,创建topics:
kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
2.4.2、查看topics
查看topics列表:
kafka-topics.bat --bootstrap-server localhost:9092 --list
2.4.3、打开一个producer(生产者)
以管理员权限新开一个命令提示窗口,进入D:\bigdata\kafka\2.12-3.5.1\bin\windows目录,
执行以下命令,打开一个producer(生产者):
kafka-console-producer.bat --broker-list localhost:9092 --topic test
2.4.4、打开一个consumer(消费者)
以管理员权限新开一个命令提示窗口,进入D:\bigdata\kafka\2.12-3.5.1\bin\windows目录,执行以下命令,打开一个consumer(消费者):
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning
2.4.5、测试发送和接受消息
以上打开的窗口不要关闭,然后就可以在producer(生产者)控制台窗口输入消息并回车。在消息输入过后,很快consumer(消费者)窗口就会显示出producer(生产者)发送的消息。
2.4.5.1、producer(生产者)发送消息
在producer(生产者)控制台窗口输入消息:
2.4.5.2、consumer(消费者)接收消息
在consumer(消费者)控制台窗口查看消息:
我们发现,producer(生产者)发送的消息被consumer(消费者)接受到了。
这里乱码是字符集的问题。
2.4.5、收不到消息,常见情况
- 在consumer没有打开之前,就在producer里面发送了消息
- producer和consumer使用的topic不一致