目录

1、什么是kafka?

2、kafka的作用和使用场景?

3、kafka的基本架构,由什么组成?

4、kafka命令行操作

    4.1主题topic命令行操作

(1)查看操作主题命令参数

(2)查看当前服务器中的所有topic

(3)创建、修改、删除、查看topic

4.2生产者命令行

(1)查看操作生产者命令参数

  (2) 发送消息

 4.3消费者命令行

 (1)查看操作消费者命令参数

(2)消费消息


1、什么是kafka?

Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。

2、kafka的作用和使用场景?

作用:缓存、解耦、异步通信。

(1)缓冲:有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。

linux查看kafka消息是否有积压 查看kafka消息队列_linux查看kafka消息是否有积压

数据源和目标端分离,可以扩展和修改两边的处理过程。

linux查看kafka消息是否有积压 查看kafka消息队列_kafka_02

(3)异步通信:允许用户把一个消息放入队列,但并不立即处理它,然后在需要的时候再去处理它们。

3、kafka的基本架构,由什么组成?

(1)Producer:消息生产者,就是向Kafka broker发消息的客户端。

(2)Consumer:消息消费者,向Kafka broker取消息的客户端。

(3)Consumer Group(CG):消费者组,由多个consumer组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者

(4)Broker:一台Kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic。

(5)Topic:可以理解为一个队列,生产者和消费者面向的都是一个topic

(6)Partition:为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,一个topic可以分为多个partition,每个partition是一个有序的队列。

(7)Replica:副本。一个topic的每个分区都有若干个副本,一个Leader和若干个Follower

(8)Leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是Leader。

(9)Follower:每个分区多个副本中的“从”,实时从Leader中同步数据,保持和Leader数据的同步。Leader发生故障时,某个Follower会成为新的Leader。

linux查看kafka消息是否有积压 查看kafka消息队列_bootstrap_03

通过图解,大概了解了kafka,下面是kafka集群的最终架构:

linux查看kafka消息是否有积压 查看kafka消息队列_bootstrap_04

4、kafka命令行操作

    4.1主题topic命令行操作

(1)查看操作主题命令参数

[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh

参数

描述

--bootstrap-server <String: server toconnect to>

连接的Kafka Broker主机名称和端口号。

--topic <String: topic>

操作的topic名称。

--create

创建主题。

--delete

删除主题。

--alter

修改主题。

--list

查看所有主题。

--describe

查看主题详细描述。

--partitions <Integer: # of partitions>

设置分区数。

--replication-factor<Integer: replication factor>

设置分区副本。

--config <String: name=value>

更新系统默认的配置。

(2)查看当前服务器中的所有topic

[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --list

(3)创建、修改、删除、查看topic

(1)创建topic
[atguigu@hadoop102 kafka]$ 


kafka-topics.sh --bootstrap-server hadoop102:9092 --create --partitions 1 --replication-factor 3 --topic first


kafka-topics.sh --bootstrap-server hadoop102:9092 --create --topic first1 --partitions 1 --replication-factor 2

选项说明:
--topic 定义topic名
--replication-factor  定义副本数
--partitions  定义分区数

(2)查看某个Topic的详情
[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --describe --topic first

(3)修改分区数(注意:分区数只能增加,不能减少)
[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --alter --topic first --partitions 3

(4)删除topic
[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --delete --topic first

4.2生产者命令行

(1)查看操作生产者命令参数

[atguigu@hadoop102 kafka]$ bin/kafka-console-producer.sh

参数

描述

--bootstrap-server <String: server toconnect to>

连接的Kafka Broker主机名称和端口号。

--topic <String: topic>

操作的topic名称。

  (2) 发送消息

[atguigu@hadoop102 kafka]$ bin/kafka-console-producer.sh --bootstrap-server hadoop102:9092 --topic first

>hello world

>atguigu  atguigu

 4.3消费者命令行

 (1)查看操作消费者命令参数

[atguigu@hadoop102 kafka]$ bin/kafka-console-consumer.sh

参数

描述

--bootstrap-server <String: server toconnect to>

连接的Kafka Broker主机名称和端口号.

--topic <String: topic>

操作的topic名称。

--from-beginning

从头开始消费。

--group <String: consumer group id>

指定消费者组名称。

(2)消费消息

(1)消费first主题中的数据。
[atguigu@hadoop102 kafka]$ bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic first

(2)把主题中所有的数据都读取出来(包括历史数据)。
[atguigu@hadoop102 kafka]$ bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --from-beginning --topic first