本文分享了如何在Ubuntu 20.04 LTS上安装Apache Kafka以及Kfaka使用的简单示例。
Kafka介绍
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。它提供了用于存储,读取和分析流数据的框架。要了解有关Kafka的更多信息,请访问官方文档页面。
先决条件
- Ubuntu 20.04系统
- 具有Sudo权限的用户
- 防火墙端口开启:2181,9092
- JDK 1.8或更高版本
在Ubuntu上安装JDK
请按照以下文章手动在Ubuntu 20.04 LTS上下载并安装Oracle JAVA 8。可以查看本站的如何在Ubuntu 20.04上安装Java。
步骤1:如何在Ubuntu 20.04 LTS上安装Apache Kafka
从官方网站下载二进制文件。请使用此链接下载并提示下载页面。
sudo wget https://downloads.apache.org/kafka/2.4.1/kafka_2.13-2.4.1.tgz
现在解压缩存档文件并移动到另一个位置:
sudo tar xzf kafka_2.13-2.4.1.tgz
sudo mv kafka_2.13-2.4.1 /opt/kafka
第2步:创建Zookeeper和Kafka系统单位文件
为Zookeeper服务创建系统单位文件
sudo nano /etc/systemd/system/zookeeper.service
粘贴以下几行
/etc/systemd/system/zookeeper.service
[Unit]Description=Apache Zookeeper serviceDocumentation=http://zookeeper.apache.orgRequires=network.target remote-fs.targetAfter=network.target remote-fs.target[Service]Type=simpleExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.propertiesExecStop=/opt/kafka/bin/zookeeper-server-stop.shRestart=on-abnormal[Install]WantedBy=multi-user.target
重新加载守护程序以生效
sudo systemctl daemon-reload
为kafka服务创建系统单元文件
sudo nano /etc/systemd/system/kafka.service
在/etc/systemd/system/kafka.service文件中粘贴以下几行
[Unit]Description=Apache Kafka ServiceDocumentation=http://kafka.apache.org/documentation.htmlRequires=zookeeper.service[Service]Type=simpleEnvironment="JAVA_HOME=/opt/jdk/jdk1.8.0_251"ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.propertiesExecStop=/opt/kafka/bin/kafka-server-stop.sh[Install]WantedBy=multi-user.target
注意:如果您的Java安装路径不同,请修改JAVA_HOME值。
重新加载守护程序以生效
sudo systemctl daemon-reload
步骤3:启动ZooKeeper和Kafka服务
让我们先启动Zookeeper服务
sudo systemctl start zookeeper
启动kafka服务
sudo systemctl start kafka
检查Zookeeper服务的状态(如果已启动)
sudo systemctl status zookeeper
输出:
● zookeeper.service - Apache Zookeeper serviceLoaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: enabled)Active: active (running) since Sat 2020-06-11 09:52:40 UTC; 22min agoDocs: http://zookeeper.apache.orgMain PID: 25638 (java)Tasks: 30 (limit: 9513)CGroup: /system.slice/zookeeper.service└─25638 java -Xmx512M -Xms512M -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true
检查kafka服务的状态(如果已启动)
sudo systemctl status kafka
输出:
● kafka.service - Apache Kafka ServiceLoaded: loaded (/etc/systemd/system/kafka.service; disabled; vendor preset: enabled)Active: active (running) since Sat 2020-06-11 09:52:48 UTC; 24min agoDocs: http://kafka.apache.org/documentation.htmlMain PID: 26027 (java)Tasks: 66 (limit: 9513)CGroup: /system.slice/kafka.service└─26027 /opt/jdk/jdk1.8.0_241/bin/java -Xmx1G -Xms1G -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -D
在后台启动Kafka和ZooKeeper服务器(不创建systemd单位文件)
我们有shell脚本在后端运行kafka和zookeeper服务器:
创建一个名为kafkastart.sh的文件,并复制以下脚本:
#!/ bin / bash sudo nohup /opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties> / dev / null 2>&1&sleep 5 sudo nohup / opt / kafka / bin / kafka-server-start.sh -daemon /opt/kafka/config/server.properties> / dev / null 2>&1&
在授予可执行文件权限之后:
sudo chmod +x kafkastart.sh
成功地介绍了如何在ubuntu 20.04 LTS上安装apache kafka。
步骤4:在Kafka中创建主题
现在,我们将创建一个名为“DevOps”的主题,带有一个副本因子和分区:
cd /opt/kafka
sudo bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic DevOps
输出:
Created topic "DevOps".
查看创建的主题列表。
sudo bin/kafka-topics.sh --list --zookeeper localhost:2181
输出:
DevOps
步骤5:发送一些消息
发送一些有关已创建主题的消息。
sudo bin/kafka-console-producer.sh --broker-list localhost:9092 --topic DevOps
提示输入的消息:
> Hi> How are you?
步骤6:开始消费
使用以下命令,我们可以看到消息列表:
sudo bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic DevOps --from-beginning> Hi> How are you?
第7步:从远程计算机连接Kafka
要进行连接,请创建主题并从远程服务器发送消息。请按照以下步骤操作。
转到以下路径:
cd /opt/kafka/config
现在查找server.properties并进行一些配置更改:
sudo vi server.properties
在此属性文件中,取消注释,如下所述:
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://<HOST IP>:9092
步骤8:删除任何主题
如果要删除任何创建的主题,请使用以下命令:
sudo bin/kafka-topics.sh --delete localhost:9092 --topic <anytopic>
评论前必须登录!
注册