学习链接:https://www.bilibili.com/video/BV1vr4y1677k?p=6&spm_id_from=pageDriver&vd_source=b9e4f35102d61e6d02e0a5e1bbfea480


1 安装部署

1.1 集群规划

hadoop102 hadoop103 hadoop104
zk zk zk
kafka kafka kafka

1.2 集群部署

官网:https://kafka.apache.org/downloads.html

  1. 将kafka_2.12-3.0.0.tgz拷贝到hadoop102的/opt/software目录下
  2. 解压安装包到/opt/module

    1. [qtbhy@hadoop102 software]$ tar -zxvf kafka_2.12-3.0.0.tgz -C /opt/module
  3. 修改解压后的文件名称

    1. [qtbhy@hadoop102 module]$ mv kafka_2.12-3.0.0/ kafka
  4. 进入/opt/module/kafka目录,修改配置文件

    1. [qtbhy@hadoop102 config]$ vim server.properties

    QQ截图20220630110943.pngQQ截图20220630111202.pngQQ截图20220630111354.png

  5. 分发安装包

    1. [qtbhy@hadoop102 module]$ xsync kafka/
  6. 在hadoop103、hadoop104上修改配置文件/opt/module/kafka/config/server.properties中的broker.id=1、broker.id=2

broker.id 不得重复,整个集群中唯一

  1. 配置环境变量

    1. [qtbhy@hadoop102 module]$ sudo vim /etc/profile.d/my_env.sh

    添加

    1. #KAFKA_HOME
    2. export KAFKA_HOME=/opt/module/kafka
    3. export PAth=$PATH:$KAFKA_HOME/bin

    刷新环境变量

    1. [qtbhy@hadoop102 module]$ source /etc/profile

    分发环境变量文件到其他节点,并 source

    1. [qtbhy@hadoop102 module]$ sudo /home/qtbhy/bin/xsync /etc/profile.d/my_env.sh
    2. [qtbhy@hadoop103 module]$ source /etc/profile
    3. [qtbhy@hadoop104 module]$ source /etc/profile
  2. 启动集群

    1. 先启动ZooKeeper集群,再启动Kafka

      1. [qtbhy@hadoop102 zookeeper-3.5.7]$ bin/zkServer.sh start
      2. [qtbhy@hadoop103 zookeeper-3.5.7]$ bin/zkServer.sh start
      3. [qtbhy@hadoop104 zookeeper-3.5.7]$ bin/zkServer.sh start
    2. 在hadoop102、hadoop103、hadoop104 节点上启动 Kafka

      1. [qtbhy@hadoop102 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
      2. [qtbhy@hadoop103 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
      3. [qtbhy@hadoop104 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
  3. 关闭集群

    1. [qtbhy@hadoop102 kafka]$ bin/kafka-server-stop.sh
    2. [qtbhy@hadoop103 kafka]$ bin/kafka-server-stop.sh
    3. [qtbhy@hadoop104 kafka]$ bin/kafka-server-stop.sh

    1.3 集群启停脚本

  4. 在/home/qtbhy/bin目录下创建文件kf.sh脚本文件

    1. [qtbhy@hadoop102 ~]$ cd /home/qtbhy/bin/
    2. [qtbhy@hadoop102 bin]$ vim kf.sh

    QQ截图20220630211628.png

  5. 添加执行权限

    1. [qtbhy@hadoop102 bin]$ chmod 777 kf.sh
  6. 集群启停

    1. [qtbhy@hadoop102 bin]$ kf.sh start
    2. [qtbhy@hadoop102 bin]$ kf.sh stop

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

    2 Kafka命令行操作

    QQ截图20220630212539.png

    2.1 主题命令行操作

  7. 查看操作主题命令参数

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

    | 参数 | 描述 | | —- | —- | | —bootstrap-server | 连接的 Kafka Broker 主机名称和端口号 | | —topic | 操作的 topic 名称 | | —create | 创建主题 | | —delete | 删除主题 | | —alter | 修改主题 | | —list | 查看所有主题 | | —describe | 查看主题详细描述 | | —partitions | 设置分区数 | | —replication-factor | 设置分区副本 | | —config | 更新系统默认的配置 |

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

    1. [qtbhy@hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --list
  9. 创建一个topic first

    1. [qtbhy@hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --topic first --create --partitions 1 --replication-factor 3

    —topic 定义topic名
    —replication-factor 定义副本数
    —partitions 定义分区数

  10. 查看first主题的详情

    1. [qtbhy@hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --topic first --describe

    QQ截图20220630213825.png

  11. 修改分区数 :::danger 分区数只能增加,不能减少! :::

    1. [qtbhy@hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --topic first --alter --partitions 3

    QQ截图20220630214011.png

    2.2 生产者命令行操作

  12. 查看操作生产者命令参数

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

    | 参数 | 描述 | | —- | —- | | —bootstrap-server | 连接的 Kafka Broker 主机名称和端口号 | | —topic | 操作的 topic 名称 |

  13. 发送消息

    1. [qtbhy@hadoop102 kafka]$ bin/kafka-console-producer.sh --bootstrap-server hadoop102:9092 --topic first
    2. >hello

    2.3 消费者命令行操作

  14. 查看操作消费者命令参数

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

    | 参数 | 描述 | | —- | —- | | —bootstrap-server | 连接的 Kafka Broker 主机名称和端口号 | | —topic | 操作的 topic 名称 | | —from-beginning | 从头开始消费 | | —group | 指定消费者组名称 |

  15. 消费消息

    1. 消费first主题中的数据

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

      1. [qtbhy@hadoop103 kafka]$ bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --from-beginning --topic first