目录
前言
紧接上章,这次我们来学习Kafka,老样子我们还是先来了解一下Kafka
初了解kafka
官方解释:
Kafka是一种流处理平台,由LinkedIn公司创建,现在是Apache下的开源项目。Kafka通过发布/订阅机制实现消息的异步传输和处理。它具有高吞吐量、低延迟、可伸缩性和可靠性等优点,使其成为了流处理和实时数据管道的首选解决方案
实时数据管道很好理解,就是日常生活中的场景一直会有数据产生,可以把他们收集起来做数据处理。那么什么是流处理呢?如果你是第一次接触“流处理”概念,我们也可以做一点解释,流处理指的是对连续、实时产生的数据流进行实时处理、计算和分析的过程。
在Kafka中,有三大关键角色:生产者、消费者和Broker。生产者负责向Kafka发送消息,消费者从Kafka接收消息,而Broker则负责存储和转发消息。此外,Kafka还引入了一些基本概念,如Topic(主题,用于分类消息)、Partition(分区,用于提高并发处理能力和数据冗余)以及Offset(偏移量,用于标识消费者已读取的消息位置)。
Kafka的使用场景非常广泛,包括日志收集、消息系统、用户活动追踪以及运营指标监控等。例如,Kafka可以收集各种服务的日志,通过统一接口的形式开放给各种消费者;也可以作为消息系统,实现生产和消费者的解耦以及消息的缓存;此外,Kafka还可以记录用户活动,用于监控和分析用户行为。
总的来说,Kafka是一个功能强大、灵活且可扩展的分布式消息系统,广泛应用于各种数据处理和流处理场景。
接下来让我进入搭建阶段
搭建
解压
tar -zxvf kafka_2.12-2.4.1.tgz -C /opt/module/
配置环境
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka-2.4.1
export PATH=$PATH:$KAFKA_HOME/bin
启动kafka
kafka-server-start.sh ../config/server.properties
- 在 Apache Kafka 中,
server.properties
文件是用于配置 Kafka broker 的主要配置文件。Kafka broker 是 Kafka 集群中的一个节点,负责处理生产者和消费者的请求,存储和管理 Kafka 主题(topic)中的消息
Kafka的常见命令
kafka创建Tocpic
kafka-topics.sh --create --bootstrap-server bigdata1:9092,bigdata2:9092,bigdata3:9092 --replication-factor 1 --partitions 4 --topic test
参数解读:
kafka-topics.sh
: 这是 Apache Kafka 提供的一个命令行工具,用于管理 Kafka 中的主题(topic)。--create
: 这个参数告诉kafka-topics.sh
工具要创建一个新的主题。--bootstrap-server bigdata1:9092,bigdata2:9092,bigdata3:9092
: 这个参数指定了 Kafka 集群中的一个或多个 broker 地址,用于初始化与 Kafka 集群的连接。在这个例子中,broker 的主机名是bigdata1
,端口号是9092
。Kafka 客户端会使用这个地址来发现集群中的其他 broker。--replication-factor 1
: 这个参数指定了每个分区的副本因子。副本因子是主题中每个分区拥有的副本数量。在这个例子中,每个分区只有一个副本。这通常意味着没有数据冗余,但在某些情况下,例如测试环境或当数据丢失不是主要关注点时,可以接受这种配置。--partitions 4
: 这个参数指定了主题中的分区数。分区是 Kafka 中用于提高吞吐量、并行处理和容错性的关键概念。每个分区都是一个有序的消息序列,并可以有多个副本。在这个例子中,主题test
将被创建为具有 4 个分区。--topic test
: 这个参数指定了要创建的主题的名称,这里是test
。
kafka列出Tocpic
kafka-topics.sh --list --bootstrap-server bigdata1:9092,bigdata2:9092,bigdata3:9092
参数解读:
kafka-topics.sh
: 这是 Apache Kafka 提供的一个命令行工具,用于管理 Kafka 中的主题(topic)。
--list
: 这个参数告诉kafka-topics.sh
工具要列出所有可用的主题。
--bootstrap-server bigdata1:9092,bigdata2:9092,bigdata3:9092
: 这个参数指定了 Kafka 集群中的一个或多个 broker 地址,用于初始化与 Kafka 集群的连接。在这个例子中,broker 的主机名是bigdata1
,端口号是9092
。Kafka 客户端会使用这个地址来发现集群中的其他 broker。
kafka消费Tocpic
kafka-console-consumer.sh --topic test --bootstrap-server bigdata1:9092,bigdata2:9092,bigdata3:9092 --max-messages 1 --from-beginning
参数解读:
--topic test
: 这个参数指定了要消费的主题名称,这里是test
。
--bootstrap-server bigdata1:9092,bigdata2:9092,bigdata3:9092
: 这个参数指定了 Kafka 集群中的一个或多个 broker 地址,用于初始化与 Kafka 集群的连接。在这个例子中,broker 的主机名是bigdata1
,端口号是9092
。Kafka 客户端会使用这个地址来发现集群中的其他 broker。
--max-messages 1
: 这个参数指定了消费者从主题中消费的最大消息数。在这个例子中,消费者将只消费并打印 1 条消息。这对于测试或调试非常有用,特别是当您只想查看主题中的最新消息或某个特定消息时。
--from-beginning
: 这个参数告诉消费者从主题的起始位置开始消费消息。默认情况下,消费者会从主题的当前位置开始消费,这意味着它将只消费在消费者启动之后发送到主题的消息。使用--from-beginning
参数,消费者将消费主题中的所有消息,从最早的消息开始。