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

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

对应课程

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

消息队列概述

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

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

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

消息队列的两种模式:

两种模式

Kafka基础

基础架构

基础架构
  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 root@192.168.37.102:/opt/module
scp -r /opt/module/kafka root@192.168.37.103:/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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大灰煜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值