kafka系列1:概述和安装使用

Apache Kafka是一个高性能、可持久化的分布式消息系统,现已成为重要的流式处理平台。它不仅用于消息传递,还可作为存储系统和流处理平台。Kafka通过Zookeeper进行协调,支持与多种分布式处理系统集成,如Cloudera、Storm、Spark和Flink。本文介绍了Kafka的安装与测试过程,包括启动Zookeeper和Kafka、创建Topic、启动Producer和Consumer的实践操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. kafka——拥有更广阔的大海

Kafka 起初是由 Linkedin 公司采用 Scala 语言开发的 一个多分区、多副本且基于 ZooKeeper协调的分布式消息系统。不过kafka不只是一个简单的mq,在大数据领域也是重要的玩家,现在已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用。目前越来越多的开源分布式处理系统如 Cloudera 、 Storm、 Spark、 Flink 等都支持与 Kafka 集成 。
Kafka 之所以受到越来越多的青睐,与它所“扮演 ”的三大角色是分不开的 :

  • 消息系统: Kafka 和传统的消息系统(也称作消息中间件〉都具备系统解稿、冗余存储、流量削峰、缓冲、异步通信、扩展性、 可恢复性等功能。与此同时, Kafka 还提供了大多数消息系统难以实现的消息顺序性保障及回溯消费的功能 。
  • 存储系统: Kafka 把消息持久化到磁盘,相比于其他基于内存存储的系统而言,有效地降低了数据丢失的风险 。 也正是得益于 Kafka 的消息持久化功能和多副本机制,我们可以把 Kafka 作为长期的数据存储系统来使用,只需要把对应的数据保留策略设置为“永久”或启用主题的日志压缩功能即可 。
  • 流式处理平台: Kafka 不仅为每个流行的流式处理框架提供了可靠的数据来源,还提供了一个完整的流式处理类库,比如窗口、连接、变换和聚合等各类操作 。

普通后台系统中,我们见到最多的是基于ES,Lucene一起构建日志分析系统ELK。

2. 安装与测试

2.1 kafka为什么需要zk

kafka必须要有一个ZK服务,在生产环境下也需要为zk搭建一个集群,ZK做什么呢?
利用ZK的有序节点,临时节点和监听机制,ZK帮助kafka做了这些事情:
配置中心(管理Broker,Topic,Partition,Consumer的信息,包括元数据的变动),负载均衡,命名服务,分布式通知,集群管理和选举,分布式锁。

2.2 安装和测试步骤

与RabbitMQ相比,kafka的安装稍微复杂一些,这里我们在centos虚拟机里搭建。
从这里下载http://kafka.apache.org/downloads
也可以使用命令:

cd /usr/local/soft
wget https://mirror.bit.edu.cn/apache/kafka/2.5.0/kafka_2.13-2.5.0.tgz
tar -xzvf kafka_2.13-2.5.0.tgz
cd kafka_2.13-2.5.0

下载之后,我们可以看到bin目录下提供了很多脚本供我们使用:
在这里插入图片描述

3.1 启动zookeeper

kafka需要依赖ZK,安装包中已经自带了一个ZK,也可以改成指定已运行的ZK。
如果改成指定的ZK需要修改修改 kafka 安装目录下的 config/server.properties 文件中的 zookeeper.connect 。这里使用自带的ZK。
后台启动ZK:

nohup ./bin/zookeeper-server-start.sh config/zookeeper.properties >> zookeeper.nohup &

检查zookeeper是否启动成功:

ps -ef|grep zookeeper

3.2 启动kafka

修改相关配置:

vim config/server.properties

Broker ID启动以后就不能改了:

broker.id=1

取消注释,改成本机IP:

listeners=PLAINTEXT://192.168.3.128:9092

num.partitions后面增加2行。
发送到不存在topic自动创建。允许永久删除topic。

num.partitions=1
auto.create.topics.enable=true
delete.topic.enable=true

后台启动kafka(kafka安装目录下):
注意这里注意不要到bin目录下直接执行脚本,因为脚本还需要加载配置文件,或者你修改下面的命令

nohup ./bin/kafka-server-start.sh ./config/server.properties & 

3.3 测试

1.创建Topic:
创建一个名为lqctest的topic,只有一个副本,一个分区:

sh bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic lqctest

查看已经创建的 topic:

sh bin/kafka-topics.sh -list -zookeeper localhost:2181

2.启动Producer:

打开一个窗口,在kafka解压目录下:

sh bin/kafka-console-producer.sh --broker-list localhost:9092 --topic gptest

3.启动Consumer:

sh bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic lqctest --from-beginning

此时在producer窗口输入字符串,消费者窗口就能看到了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纵横千里,捭阖四方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值