1、什么是kafka
Kafka 是一款开源的分布式流处理平台,最初由 LinkedIn 开发,后由 Apache 基金会维护。它被设计用于高吞吐、可扩展的实时数据管道和流处理场景。Kafka 的核心功能包括发布和订阅消息流、持久化存储数据以及实时处理数据流。其架构基于生产者(Producer)、消费者(Consumer)、主题(Topic)和分区(Partition)等概念,支持水平扩展和高容错性。Kafka 广泛应用于日志收集、消息系统、实时分析和事件溯源等场景,是现代大数据生态系统中不可或缺的组件之一。
2、实验拓扑
3、搭建步骤
3.1、基础环境搭建
在所有节点上,通过命令“ apt install openjdk-17-jdk -y
”安装jdk环境,并通过命令“java -version
”验证是否安装成功
3.2、搭建zookeeper集群
(1)登录zookeeper官网,点击Download进入下载页,本实验我们下载3.8.4这一版本,下载链接可以根据自身实际的网络状况进行选择,下载完成后的tar.gz压缩包分发到所有节点的服务器上:
(2)在所有节点上通过命令“tar -xvzf apache-zookeeper-3.8.4-bin.tar.gz
”解压刚刚下载好的tar.gz安装包,以debian1节点为例,如下:
(3)进入“apache-zookeeper-3.8.4-bin/conf
”目录,将zoo_sample.cfg
在当前目录下复制一份,并命名为“zoo.cfg
”,此操作在每个服务器节点上都要进行,如下:
(4)在每个服务器节点的“apache-zookeeper-3.8.4-bin/conf
”目录下,输入命令“vim zoo.cfg
”打开zoo.cfg
,修改此配置文件,所有节点服务器修改内容都相同,修改部分如下图所示:
(5)根据上一个步骤中,zoo.cfg
配置文件的dataDir
参数配置路径,在每台服务器上都创建相应的路径,以debian1节点为例如下图:
(6)在上一个步骤创建的zkData
目录下,创建一个名为myid
的文件,并写入相应的内容,其中debian1节点的内容为“1”,debian2节点的内容为“3”,debian3节点的内容为“2”,这些内容与zoo.cfg配置文件中的“server.1、server.2、server.3”号码对应(例如server.1=192.168.26.144:2888:3888的myid是1,server2是2,server3是3),如下图所示:
(7)在每台服务器上通过命令执行相应的zookeeper启动命令,如下图:
(8)在每台服务器节点上输入命令“/root/apache-zookeeper-3.8.4-bin/bin/zkServer.sh status
”检查集群成员运行,通过状态可以看到,当前被选举为leader节点的是debian1(192.168.26.144)节点:
至此,zookeeper集群部分搭建完成。
3.3、搭建kafka集群
(1)登录kafka官网,点击Download进入下载页,本实验我们下载3.9.0这一版本,下载链接可以根据自身实际的网络状况进行选择,下载完成后的tgz压缩包分发到所有节点的服务器上:
(2)在所有节点上通过命令“tar -xvzf kafka_2.12-3.9.0.tgz
”解压刚刚下载好的tar.gz安装包,以debian1节点为例,如下:
(3)在所有节点上通过命令“vim /root/kafka_2.12-3.9.0/config/server.properties
”修改kafka的server.properties
配置文件,在配置文件中主要修改的是三个参数,分别为“broker.id
”“listeners=PLAINTEXT
”和“zookeeper.connect
”,不同节点的配置参数有所差异,分别如下:
【debian1节点】
【debian2节点】
【debian3节点】
(4)在所有节点上输入命令“/root/kafka_2.12-3.9.0/bin/kafka-server-start.sh -daemon ../config/server.properties
”,启动kafka,以debian1节点为例,其余节点均一致,如下:
(5)在任意节点输入命令“/root/kafka_2.12-3.9.0/bin/kafka-broker-api-versions.sh --bootstrap-server 192.168.26.144:9092 | grep 192.168
”,如果返回的结果包含了其他的成员节点,则表示kafka集群搭建成功,以debian1节点上为例,如下:
至此,kafka集群搭建完成。
4、验证
(1)在任意节点(如debian2节点),输入命令“/root/kafka_2.12-3.9.0/bin/kafka-topics.sh --create --bootstrap-server 192.168.26.151:9092 --replication-factor 1 --partitions 1 --topic test
”创建一个名为“test
”的topic(主题),如下:
(2)更换其他节点,输入命令“/root/kafka_2.12-3.9.0/bin/kafka-topics.sh --list --bootstrap-server 192.168.26.152:9092
”查看刚刚创建的test主题,如果成功反馈,则表示kafka集群成功进行数据同步,集群搭建成功,如下:
(3)在任意节点上(如debian2节点),输入命令“/root/kafka_2.12-3.9.0/bin/kafka-console-producer.sh --topic test-topic --bootstrap-server 192.168.26.152:9092
”进入生产者(Producer)的会话,然后输入任意内容,并敲回车键发送,如下:
(4)更换一个节点(如debian1节点),输入命令“/root/kafka_2.12-3.9.0/bin/kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server 192.168.26.144:9092
”,进入消费者(Consumer)会话,如果能接收到生产者发送的关键词,则kafka集群功能测试通过,如下:
至此,kafka+zookeeper搭建和测试工作全部完成。
5、其他注意事项
Kafka和zookeeper都建议前往官网下载tar.gz和tgz压缩包进行部署搭建,不建议使用debian软件仓库中的安装包,在搭建过程中我们发现,debian系统的软件仓库有zookeeper可供安装,然而使用软件仓库中的zookeeper版本可能会因为slf4j和log4j版本不兼容导致单机或者集群部署后无法正常启动且报错,因此为提高部署成功率,减少不必要的排错工作,建议使用官网上的版本。