ubuntu安装kafka(Ubuntu安装虚拟机)

ubuntu安装kafka(Ubuntu安装虚拟机)

精选文章moguli202025-05-06 14:51:119A+A-

ubuntu安装kafka

前言

Apache Kafka 是一款开源的 分布式流处理平台,最初由 LinkedIn开发,用于处理实时数据管道和流式分析。其核心设计目标是 高吞吐、低延迟、持久化存储水平扩展,现已成为大数据生态中实时数据处理的行业标准工具。

Kafka 的作用

  1. 消息中间件:作为生产者-消费者模型的消息队列,解耦系统间通信。
  2. 实时数据管道:连接数据源与处理系统(如 Hadoop、Spark、Flink),实现日志、指标等数据的实时传输。
  3. 流处理:通过 Kafka Streams 或集成 Flink 实现实时ETL、聚合、风控等流式计算。
  4. 事件溯源与审计:持久化存储消息,支持回溯历史数据,用于系统状态恢复或合规审计。

为何要使用 Kafka?

  1. 高吞吐与低延迟单机每秒可处理百万级消息,取决于硬件,支持毫秒级响应,远超传统消息队列。
  2. 水平扩展性通过分布式分区(Partition)和多副本机制,可无缝扩展集群规模,支撑海量数据。
  3. 数据持久化消息按 Topic分区存储,默认保留 7 天,也可以配置为永久,避免数据丢失风险。
  4. 生态整合能力与主流大数据组件(Hadoop、Spark、Flink)深度集成,支持 Connector快速对接外部系统。

Kafka 的优缺点

优点

  • 性能卓越:顺序读写磁盘+零拷贝技术,最大化利用硬件资源。
  • 容灾能力强:多副本机制(ISR)保障数据高可用,故障自动切换。
  • 多场景适配:既可作为消息队列,也能用于日志聚合、流处理、事件驱动架构。

缺点

  • 运维复杂:需管理 ZooKeeper 依赖(Kafka 2.8+ 开始支持去 ZooKeeper 模式)。
  • 资源消耗高:高吞吐依赖磁盘和内存,成本可能高于轻量级消息队列。
  • 功能局限性:无原生延时消息、事务消息实现复杂,需额外开发或依赖插件。

对比 RocketMQ、RabbitMQ、ActiveMQ

Kafka 是 大规模实时数据处理的标杆工具,尤其适合日志收集、流处理和高吞吐消息传输场景。与 RocketMQ 相比,Kafka 吞吐量更高但事务支持较弱;与 RabbitMQ 相比,Kafka 牺牲部分功能灵活性以换取性能;与 ActiveMQ 相比,Kafka 在分布式扩展和持久化能力上更具优势。

选型建议

  • 需要 超高吞吐和流处理能力 → Kafka
  • 强事务和顺序消息 → RocketMQ
  • 复杂路由和协议兼容 → RabbitMQ
  • 轻量级 JMS 实现 → ActiveMQ

安装Kafka

kafka

# 下载
cd /opt/kafka
wget https://downloads.apache.org/kafka/3.9.0/kafka_2.13-3.9.0.tgz
tar -xzf kafka_2.13-3.9.0.tgz
mv kafka_2.13-3.9.0 /ops/app/kafka

# 配置
cd /ops/app/kafka
vim config/server.properties
# 找到并修改以下配置:
# 允许外部访问,定义 Broker 监听的地址和端口
listeners=PLAINTEXT://0.0.0.0:9092
# 设置Kafka的广告地址为主机IP(需替换为实际IP),定义 Broker 对外公布的地址和端口
advertised.listeners=PLAINTEXT://<主机IP>:9092
# 如果是本地就用localhost
advertised.listeners=PLAINTEXT://localhost:9092

zookeeper

如果使用kafka自带zookeeper

# 后台启动kafka自带zk
cd /ops/app/kafka
nohup bin/zookeeper-server-start.sh config/zookeeper.properties > zookeeper.log 2>&1 &

如果是自己安装zookeeper

tar -zxvf /ops/app/zookeeper-3.4.14.tar.gz
mv /ops/app/zookeeper-3.4.14.tar.gz/zookeeper-3.4.14 /ops/app/zookeeper
cp /ops/app/zookeeper/conf/zoo_sample.cfg /ops/app/zookeeper/conf/zoo.cfg

# 进入到bin目录下启动,否则在默认日志配置的情况下,会报找不到日志存放路径
cd /ops/app/zookeeper/bin/
./zkServer.sh start

# 查看是否启动成功
ps -ef|grep zookeeper

启动

cd /ops/app/kafka

# 启动zk
nohup bin/zookeeper-server-start.sh config/zookeeper.properties > zookeeper.log 2>&1 &

# 停止zk
bin/zookeeper-server-stop.sh

# 启动kafka
nohup bin/kafka-server-start.sh config/server.properties > kafka.log 2>&1 &

# 停止kafka
bin/kafka-server-stop.sh

测试kafka

创建topic

# 创建topic
bin/kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1

# 查看topic列表
bin/kafka-topics.sh --list --bootstrap-server localhost:9092

生产消息

bin/kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092

输入 Hello Kafka 并回车

消费消息

在另一个客户端输入命令监听消息

# 当启动消费者时,--from-beginning 会指示消费者从 Topic 的最早消息(即第一条消息)开始消费,而不是默认的从最新消息开始,不加此参数则从最新消息开始消费
bin/kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server localhost:9092

删除topic

bin/kafka-topics.sh --delete \
  --bootstrap-server localhost:9092 \
  --topic test-topic
点击这里复制本文地址 以上内容由莫古技术网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

莫古技术网 © All Rights Reserved.  滇ICP备2024046894号-2