什么是kafka?

kafka早期是由领英公司开发,后来'捐'给了Apache基金会。
kafka是Apache基金会的顶级项目,是一款消息队列产品,用于临时缓存输出的产品。
同类型产品有很多,比如RabbitMQ,RocketMQ,ActiveMQ等。
官网地址:
https://kafka.apache.org/

kafka单点部署:

  • 1.下载kafka
[root@elk91 ~]# wget https://dlcdn.apache.org/kafka/3.9.0/kafka_2.13-3.9.0.tgz
  • 2.解压软件包
[root@elk91 ~]# tar xf kafka_2.13-3.9.0.tgz -C /usr/local/
[root@elk91 ~]# 
  • 3.修改kakfa的配置文件
[root@elk91 ~]# vim /usr/local/kafka_2.13-3.9.0/config/server.properties 
...
# kafka的唯一标识
broker.id=91 
# 修改数据目录
log.dirs=/var/lib/kafka
# 指定kafka的元数据存储在zookeeper集群的路径(znodes)
zookeeper.connect=10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181/oldboyedu-kafka-3.9.0
  • 4.配置环境变量
[root@elk91 ~]# cat /etc/profile.d/kafka.sh
#!/bin/bash
export KAFKA_HOME=/usr/local/kafka_2.13-3.9.0
export PATH=$PATH:$KAFKA_HOME/bin
[root@elk91 ~]# 
[root@elk91 ~]# source /etc/profile.d/kafka.sh
[root@elk91 ~]# 
  • 5.将kafka放在后台运行
[root@elk91 ~]# kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties 
[root@elk91 ~]# 
[root@elk91 ~]# ss -ntl | grep 9092
LISTEN 0      50                      *:9092             *:*          
[root@elk91 ~]# 
  • 6.在zookeeper集群查看数据是否写入成功

zookeeper单点部署以及集群搭建 – violet

  • kafka常见术语
    • broker
      表示每个kafka节点。
    • producer(生产者)
      往broker写入数据的一方。
    • consumer(消费者)
      从broker读取数据的一方。
    • topic(主题)
      指的是Producer和consumer从某个特定的topic读写数据。
      换句话说,就是从kafka节点读写数据的逻辑单元。
    • partitions(分区):
      一个topic可以有多个partition,数据分布式存储在某个特定的parititon。 但是partition依旧是逻辑单元,但并是实际存储数据的载体。
    • replica(副本):
      每个分区最少有一个replica,是数据的实际载体。 当某个paritition的replica数量大于1时,就可以实现数据的高可用。 此时,副本区分Leader和follower。

至此kafaka单点部署完成!

kafka集群搭建

  • 1.拷贝程序到其他节点
[root@elk91 ~]# scp -r /usr/local/kafka_2.13-3.9.0/ 10.0.0.92:/usr/local/
[root@elk91 ~]# scp -r /usr/local/kafka_2.13-3.9.0/ 10.0.0.93:/usr/local/
[root@elk91 ~]# scp /etc/profile.d/kafka.sh  10.0.0.92:/etc/profile.d/
[root@elk91 ~]# scp /etc/profile.d/kafka.sh  10.0.0.93:/etc/profile.d/
  • 2.其他节点修改配置文件
[root@elk92 ~]# sed -i '/^broker.id/s#91#92#' /usr/local/kafka_2.13-3.9.0/config/server.properties 
[root@elk92 ~]# 
[root@elk92 ~]# grep ^broker.id /usr/local/kafka_2.13-3.9.0/config/server.properties 
broker.id=92
[root@elk92 ~]# 


[root@elk93 ~]# sed -i '/^broker.id/s#91#93#' /usr/local/kafka_2.13-3.9.0/config/server.properties
[root@elk93 ~]# 
[root@elk93 ~]# grep ^broker.id /usr/local/kafka_2.13-3.9.0/config/server.properties
broker.id=93
[root@elk93 ~]#
  • 3.其他节点启动kafka
[root@elk92 ~]# source /etc/profile.d/kafka.sh && kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties 
[root@elk92 ~]#
[root@elk92 ~]# ss -ntl | grep 9092
LISTEN 0      50                      *:9092             *:*          
[root@elk92 ~]# 

[root@elk93 ~]# source /etc/profile.d/kafka.sh && kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties 
[root@elk93 ~]#
[root@elk93 ~]# ss -ntl | grep 9092
LISTEN 0      50                      *:9092             *:*          
[root@elk93 ~]#