Apache Kafka® 是一个分布式流处理平台,在大数据实时场景下应用非常广泛。本文主要介绍单节点Kafka的安装。
Kafka软件安装
安装Java
Kafka的运行需要Java环境,推荐使用Java8+以上版本。在Ubuntu 20.04操作系统下可以直接通过以下命令进行安装。
sudo apt-get update
sudo apt install -y openjdk-8-jdk
安装完成后可以通过以下命令检查安装结果。
java -version
Kafka下载
安装Kafka之前,需要通过其官方网站下载Kafka的安装包,目前Kafka的最新版本是3.3.1。
选择Scala 2.12的版本进行下载,或者可以通过命令进行下载。
wget https://downloads.apache.org/kafka/3.3.1/kafka_2.12-3.3.1.tgz
Kafka的安装
Kafka的安装比较简单,直接将安装包解压即可完成安装。
解压安装包
我们将软件安装到apps目录下,所以需要先创建一个apps目录,然后使用tar命令解压安装包即可。
mkdir apps
tar -xzf kafka_2.12-3.3.1.tgz -C apps/
在Kafka的安装目录中,bin目录主要存放的是Kafka相关的一些命令,包括启动Zookeeper、启动Kafka、停止Zookeeper、停止Kafka等命令;config目录主要存放的是Kafka的相关配置,包括Zookeeper的配置、Kafka的配置等;libs目录下存放的是Kafka的软件依赖的一些jar包。
配置Kafka
Kafka的配置主要包括两个部分,一个是config/zookeeper.properties,用于配置Zookeeper的;一个是config/server.properties,用于配置Kafka的。要编辑这些配置文件,可以直接使用vi命令进行编辑。
vi apps/kafka_2.12-3.3.1/config/zookeeper.properties
vi apps/kafka_2.12-3.3.1/config/server.properties
本文主要介绍单机模式安装,因此配置文件保持默认,不进行编辑配置。默认的Zookeeper端口是2181,默认的Kafka端口是9092。
启动Kafka
启动Kafka需要分两个步骤。
第一步需要启动Zookeeper,使用命令:
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
第二步需要启动Kafka,使用命令:
bin/kafka-server-start.sh -daemon config/server.properties
启动完成后,可以通过jps命令查看当前系统的进程。
其中,QuorumPeerMain是Zookeeper的进程,Kafka是Kafka的进程。
Kafka的使用验证
创建Topic
在使用Kafka之前,需要创建一个主题,即Topic,用于存放消息,使用以下命令即可创建一个名为KafkaFirstTopic的Topic。
bin/kafka-topics.sh --create --topic KafkaFirstTopic --partitions 1 --replication-factor 1 --bootstrap-server 10.0.0.4:9092
创建完成后,可以通过list命令查看当前Kafka包含的Topic。
bin/kafka-topics.sh --list --bootstrap-server 10.0.0.4:9092
生产消息
Kafka主要是用来处理消息的,那么首先就得有消息产生才行。Kafka为我们提供了一个命令行的消息生产者,使用以下命令可以启动生产者并生产消息。
bin/kafka-console-producer.sh --bootstrap-server 10.0.0.4:9092 --topic KafkaFirstTopic
这里我们可以生产一条消息:data from kafka。
消费消息
消息已经产生并且发送到了Kafka,那么接下来就可以消费消息了。Kafka同样为我们提供了一个命令行的消息消费者,使用以下命令即可启动消费者处理消息,命令行消费者仅将消息打印在标准输出。
bin/kafka-console-consumer.sh --bootstrap-server 10.0.0.4:9092 --topic KafkaFirstTopic --from-beginning
执行命令后可以看到生产者生产的消息打印到了屏幕上。
可以继续验证生产别的消息并消费。
- 生产
- 消费
至此,单节点的Kafka安装完成、启动成功、生产及消费消息都正常。