kafka学习笔记--安装部署、简单操作

本文内容来自尚硅谷B站公开教学视频,仅做个人总结、学习、复习使用,任何对此文章的引用,应当说明源出处为尚硅谷,不得用于商业用途。

如有侵权、联系速删

视频教程链接:【尚硅谷】Kafka3.x教程(从入门到调优,深入全面)

文章目录

  • [1 安装部署](#1 安装部署)
    • [1.1 集群规划](#1.1 集群规划)
    • [1.2 集群部署](#1.2 集群部署)
  • [2 命令行操作](#2 命令行操作)
    • [2.1 主题](#2.1 主题)
    • [2.2 生产者](#2.2 生产者)
    • [2.3 消费者](#2.3 消费者)
    • [2.4 消费者组](#2.4 消费者组)

1 安装部署

1.1 集群规划

这里采用的是三节点的kafka集群,名称为hadoop102、hadoop103、hadoop104

1.2 集群部署

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

  1. 解压安装包

    shell 复制代码
    tar -zxvf kafka_2.12-3.0.0.tgz -C /opt/module/
  2. 修改解压后的文件名称

    shell 复制代码
     mv kafka_2.12-3.0.0/ kafka
  3. 进入到/opt/module/kafka 目录,修改配置文件

    shell 复制代码
     cd config/
     vim server.properties

    按需修改以下内容:

    shell 复制代码
    #broker 的全局唯一编号,不能重复,只能是数字(一般修改这个)。
    broker.id=0
    #处理网络请求的线程数量
    num.network.threads=3
    #用来处理磁盘 IO 的线程数量
    num.io.threads=8
    #发送套接字的缓冲区大小
    socket.send.buffer.bytes=102400
    #接收套接字的缓冲区大小
    socket.receive.buffer.bytes=102400
    #请求套接字的缓冲区大小
    socket.request.max.bytes=104857600
    #kafka 运行日志(数据)存放的路径,路径不需要提前创建,kafka 自动帮你创建,可以配置多个磁盘路径,路径与路径之间可以用","分隔。(一般修改这个)
    log.dirs=/opt/module/kafka/datas
    #topic 在当前 broker 上的分区个数
    num.partitions=1
    #用来恢复和清理 data 下数据的线程数量
    num.recovery.threads.per.data.dir=1
    # 每个 topic 创建时的副本数,默认时 1 个副本
    offsets.topic.replication.factor=1
    #segment 文件保留的最长时间,超时将被删除
    log.retention.hours=168
    #每个 segment 文件的大小,默认最大 1G
    log.segment.bytes=1073741824
    # 检查过期数据的时间,默认 5 分钟检查一次是否数据过期
    log.retention.check.interval.ms=300000
    #配置连接 Zookeeper 集群地址(在 zk 根目录下创建/kafka,方便管理)(一般修改这个)
    zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka
  4. 另外两个节点也装安装包

  5. 分别在 hadoop103 和 hadoop104 上修改配置文件/opt/module/kafka/config/server.properties中的 broker.id=1、broker.id=2
    注:broker.id 不得重复,整个集群中唯一。

  6. 配置环境变量

    • 在/etc/profile.d/my_env.sh 文件中增加 kafka 环境变量配置

      shell 复制代码
      sudo vim /etc/profile.d/my_env.sh

      增加如下内容:

      shell 复制代码
      #KAFKA_HOME
      export KAFKA_HOME=/opt/module/kafka
      export PATH=$PATH:$KAFKA_HOME/bin
    • 刷新一下环境变量。

      shell 复制代码
      source /etc/profile
    • 其他节点一样的操作。
      在另外两个节点 source刷新

      shell 复制代码
      source /etc/profile
  7. 启动集群
    先启动 Zookeeper 集群,然后启动 Kafka。

    shell 复制代码
    zk.sh start
    kafka-server-start.sh -daemon config/server.properties
  8. 关闭集群

    shell 复制代码
    bin/kafka-server-stop.sh

    注意:停止 Kafka 集群时,一定要等 Kafka 所有节点进程全部停止后再停止 Zookeeper集群。因为 Zookeeper 集群当中记录着 Kafka 集群相关信息,Zookeeper 集群一旦先停止,Kafka 集群就没有办法再获取停止进程的信息,只能手动杀死 Kafka 进程了。

2 命令行操作

2.1 主题

1 查看操作主题命令参数

shell 复制代码
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> 更新系统默认的配置。

操作时要先连接,所以后面的命令行都有--bootstrap-server hadoop102:9092
2 查看当前服务器中的所有 topic

shell 复制代码
bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --list

3 创建一个topic,这里我起名为first

shell 复制代码
bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --create --partitions 1 --replication-factor 3 --topic first

选项说明:
--topic定义topic名
--replication-factor定义副本数
--partitions 定义分区数
4 查看 first 主题的详情

shell 复制代码
bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --describe --topic first

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

shell 复制代码
bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --alter --topic first --partitions 3

6 再次查看 first 主题修改后的详情

shell 复制代码
 bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --describe --topic first

7 删除 topic

shell 复制代码
 bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --delete --topic first

2.2 生产者

1 查看生产者

shell 复制代码
bin/kafka-console-producer.sh
参数 描述
--bootstrap-server <String: server toconnect to> 连接的 Kafka Broker 主机名称和端口号。
--topic <String: topic> 操作的 topic 名称。

2 发送消息

shell 复制代码
bin/kafka-console-producer.sh --bootstrap-server hadoop102:9092 --topic first
hello world
atguigu atguigu

2.3 消费者

1 查看消费者

shell 复制代码
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 消费消息

  • 消费指定主题的数据

    shell 复制代码
    bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic first
  • 把主题中所有的数据都读取出来(包括历史数据)。

    shell 复制代码
    bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --from-beginning --topic first

2.4 消费者组

1 查看消费者组

shell 复制代码
bin/kafka-consumer-groups.sh
参数 描述
--bootstrap-server <String: server toconnect to> 连接的 Kafka Broker 主机名称和端口号。
--describe 列出消费者组详情信息。
--list 列出所有消费者。
--group <String: consumer group id> 指定消费者组名称。

如果我们要查询testGroup消费者组的详细信息,执行如下命令

shell 复制代码
bin/kafka-consumer-groups.sh --bootstrap-server hadoop102:9092 --describe --group testGroup

其中列出的参数含义为:

参数 描述
GROUP 消费者组名
TOPIC 主题名称
PARTITION 该主题消息的分区ID列表
CURRENT-OFFSET 最后被消费的消息的偏移量
LOG-END-OFFSET 该主题最后一条消息的偏移量
LAG 消息积压量
CONSUMER-ID 该组消费者ID
HOST 该组消费者主机IP/brokerID
CLIENT-ID 该组消费者客户端ID
相关推荐
mez_Blog11 分钟前
个人小结(2.0)
前端·javascript·vue.js·学习·typescript
Rookie也要加油12 分钟前
WebRtc一对一视频通话_New_peer信令处理
笔记·学习·音视频·webrtc
liangbm333 分钟前
MATLAB系列09:图形句柄
图像处理·笔记·计算机视觉·matlab·matlab绘图·工程基础·图形句柄
David猪大卫34 分钟前
数据结构修炼——顺序表和链表的区别与联系
c语言·数据结构·学习·算法·leetcode·链表·蓝桥杯
honey ball35 分钟前
仪表放大器AD620
运维·单片机·嵌入式硬件·物联网·学习
liangbm344 分钟前
MATLAB系列05:自定义函数
开发语言·笔记·matlab·教程·函数·自定义函数·按值传递
五味香1 小时前
C++学习,动态内存
java·c语言·开发语言·jvm·c++·学习·算法
神之王楠2 小时前
学习风格的类型
学习
paixiaoxin2 小时前
学术新手进阶:Zotero插件全解锁,打造你的高效研究体验
人工智能·经验分享·笔记·机器学习·学习方法·zotero