Kafka3.x学习记录(一)——集群和命令行操作

Kafka3.x学习记录(一)——集群和命令行操作

目录

  • Kafka3.x学习记录(一)——集群和命令行操作
    • 对应课程
    • 消息队列概述
    • Kafka基础
      • 基础架构
      • 集群部署
      • 启动集群
    • Kafka命令行操作
      • 主题命令行操作
      • 生产者命令行操作
      • 消费者命令行操作

对应课程

【尚硅谷】2022版Kafka3.x教程(从入门到调优,深入全面)

消息队列概述

发布/订阅模式:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息。

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

传统的消息队列的应用场景包括:缓存/消峰解耦异步通信

消息队列的两种模式:

Kafka3.x学习记录(一)——集群和命令行操作_第1张图片

Kafka基础

基础架构

Kafka3.x学习记录(一)——集群和命令行操作_第2张图片
  1. Producer:消息生产者,就是向Kafka broker发送消息的客户端。
  2. Consumer:消息消费者,向Kafka broker获取消息的客户端。注:生产和消费只针对"Leader"。
  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。
  10. Zookeeper:记录了哪些服务器上线了,和一个分区中,谁是"Leader"。

集群部署

官网下载地址:http://kafka.apache.org/downloads.html

目标:将kafka部署到hadoop101,hadoop102和hadoop103上。

将安装包"kafka_2.12-3.0.0.tgz"复制到目录"/opt/software"下,然后解压至"/opt/module"目录下:

tar -zxvf kafka_2.12-3.0.0.tgz -C /opt/module

修改解压后文件的名称:

mv kafka_2.12-3.0.0.tgz/ kafka

进入到配置文件的目录"/opt/module/kafka/config",修改配置文件"server.properties":

vim server.properties

修改三部分内容:

#全局唯一的编号,各个节点不能重复
broker.id=0
#kafka日志存放路径
log.dirs=/opt/module/kafka/datas
#配置连接Zookeeper集群的地址(在zk根目录下创建/kafka,方便管理)
zookeeper.connect=hadoop101:2181,hadoop102:2181,hadoop103:2181/kafka

将kafka包分发至hadoop102和hadoop103上:

scp -r /opt/module/kafka [email protected]:/opt/module
scp -r /opt/module/kafka [email protected]:/opt/module

依次,在hadoop102和hadoop103上,修改配置文件"server.properties"的broker.id为1和2。

依次,添加环境变量:

vim /etc/profile
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin

执行环境配置文件(刷新):

source /etc/profile

编写kafka集群统一启动和停止的shell脚本"kf.sh",并放置在/home/user/bin目录下:

#!/bin/bash

case $1 in
"start")
	for i in hadoop101 hadoop102 hadoop103
	do
		echo "--- 启动 $i kafka ---"
		sshpass -p 123456 ssh -o StrictHostKeyChecking=no $i "sh /opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"
	done
;;
"stop")
	for i in hadoop101 hadoop102 hadoop103
	do
		echo "--- 停止 $i kafka ---"
		sshpass -p 123456 ssh -o StrictHostKeyChecking=no $i "sh /opt/module/kafka/bin/kafka-server-stop.sh"
	done
;;
esac

还有集群java进程的显示工具"xcall":

#!/bin/bash


for host in hadoop101 hadoop102 hadoop103
do
        echo =============== $host ===============
        sshpass -p 123456 ssh -o StrictHostKeyChecking=no $host "/opt/java/jdk/jdk1.8/bin/jps" 
done

在目录/home/user下,提升shell脚本的执行权限:

chmod u+x bin/*

启动集群

首先,启动zookeeper集群(Kafka2.8以后无必要)

zk.sh start

再启动kafka集群:

kf.sh start

查看java进程状态:

xcall

[root@hadoop101 ~]# xcall
=============== hadoop101 ===============
3265 QuorumPeerMain
3746 Jps
3654 Kafka
=============== hadoop102 ===============
3632 Kafka
3243 QuorumPeerMain
3707 Jps
=============== hadoop103 ===============
3634 Kafka
3252 QuorumPeerMain
3709 Jps

停止集群的命令如下:

kf.sh stop

Kafka命令行操作

移动至目录"/opt/module/kafka/bin"下,

主题命令行操作

查看操作主题命令行参数:

kafka-topics.sh

查看当前服务器中的所有topic:

kafka-topics.sh --bootstrap-server hadoop101:9092 --list

创建名称为"first"的主题,并指定分区为1,副本为2:

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

选项说明:

–topic定义了主题名;–replication-factor定义了副本数;–partitions定义了分区数

查看first主题的详情:

kafka-topics.sh --bootstrap-server hadoop101:9092 --describe --topic first

修改分区数(注意:分区数只能增加,不能减少):

kafka-topics.sh --bootstrap-server hadoop101:9092 --alter --topic first --partitions 3

删除topic操作:

kafka-topics.sh --bootstrap-server hadoop101:9092 --delete --topic first

生产者命令行操作

查看操作生产者命令参数:

kafka-console-producer.sh

向主机hadoop101的主题first中,添加消息:

kafka-console-producer.sh --bootstrap-server hadoop101:9092 --topic first

/> hello

/> world

消费者命令行操作

查看操作消费者命令参数:

kafka-console-consumer.sh

获取first主题的数据:

kafka-console-consumer.sh --bootstrap-server hadoop101:9092 --topic first

把主题中所有的数据读出来(包括:历史数据):

kafka-console-consumer.sh --bootstrap-server hadoop101:9092 --topic first --from-beginning

你可能感兴趣的:(后端开发,学习,kafka,java)