Kafka 初识+安装

1. Kafka

1.1 Kafka 是什么

Kafka 是一个分布式的基于发布/订阅模式的分布式消息队列(Massage Queue),具有高性能、持久化、多副本备份、横向扩展能力,主要应用于大数据实时处理领域。

1.2 消息队列模式

1.2.1 点对点通信

在点对点系统中,消息生产者生产的消息被保留在 Queue 中, 一个或多个消费者可以从 Queue 中取出并消费的消息,但是特定消息只能由最多一个消费者消费。 一旦消费者读取 Queue 中的消息,它就从该 Queue 中清除。

1.2.2 发布/订阅模式

在发布/订阅模式中,消息被保留在 Topic 中。与点对点模式不同,消费者可以订阅一个或多个 Topic,并使用该 Topic 中的所有消息,并且消息不会被清除。

1.2.3 Kafka 基础架构

image-20211228090723031

Producer: 消息的发送者为 Producer,即消息生产者;

Consumer: 消息的使用者和接收者是 Consumer,即消息消费者

Consumer Group(CG): 消费者组,由多个 Consumer 组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费,消费者组之间互补影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。

Broker: Kafka 集群中有很多台 Server,其中每一台 Server 都可以存储消息,将每一台 Server 称为一个 kafka 实例,也叫做 Broker,一个 Broker 可以容纳多个 Topic,一个非常大的 Topic 可以分布到多个 Broker 上。

Topic: 一个 Topic 里保存的是同一类消息,相当于对消息的分类,每个 Producer 将消息发送到 Kafka 中,都需要指明要存的 Topic 是哪个,也就是指明这个消息属于哪一类。

Partition: 每个 Topic 都可以分成多个 Partition,Partion 是一个有序的队列,每个 Partition 在存储层面是 Append Log 文件。任何发布到此 Partition 的消息都会被直接追加到 Log 文件的尾部。

Replica: 副本,为保证集群中某个节点发生故障时,该节点上的 Partition 数据不会丢失,且 Kafka 仍能够继续工作,Kafka 提供了副本机制,一个 Topic 的每个分区都有若干个副本,一个 Leader 和 若干个 Follower。

Leader: 每个分区多个副本中的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是 Leader。

Follower: 每个分区多个副本中的“从”,实时从 Leader 中同步数据,保持和 Leader 数据的同步。Leader 发生故障时,某个 Follower 会成为新的 Follower。

Offset: 偏移量,一个分区对应一个磁盘上的文件,而消息在文件中的位置就成为 Offset,Offset 为一个 Long 型数据,用于标记一条信息。由于 Kafka 并没有提供其他额外的索引机制来存储 Offset,文件只能顺序的读写,所以在 Kafka 中几乎不允许对数据进行“随机读写”。

2. Kafka 安装

版本说明:

JDK:1.8

Zookeeper:3.5.7

0️⃣1️⃣ 安装 JDK,并配置环境变量

0️⃣2️⃣ 安装 Zookeeper

1️⃣ 下载 Kafka 压缩包

传送门:https://kafka.apache.org/downloads

image-20211228094038235

2️⃣ 上传至服务器,并解压(我放到 /opt 目录下)

tar -zxvf kafka_2.11-2.4.1.tgz

3️⃣ 加压后的文件重命名

mv kafka_2.11-2.4.1.tgz kafka-2.4.1

4️⃣ 在 Kafka 根目录下创建 logs 文件夹

mkdir logs

5️⃣ 修改配置文件 ./config/server.properties

image-20211228094851761

#broker 的全局唯一编号,不能重复,标明 Kafka 主机的编号 ========= *
broker.id=0 
#删除 topic 功能使能 
delete.topic.enable=true 
#处理网络请求的线程数量 
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 运行日志存放的路径(刚新建的目录)  ========= *
log.dirs=/opt/kafka-2.4.1/logs 
#topic 在当前 broker 上的分区个数 
num.partitions=1 
#用来恢复和清理data 下数据的线程数量 
num.recovery.threads.per.data.dir=1 
#segment 文件保留的最长时间,超时将被删除 
log.retention.hours=168 
#配置连接 Zookeeper 集群地址(换成自己的主机名或主机IP) ========= *
zookeeper.connect=node1:2181,node2:2181,node3:2181

🌈 修改上方标识的三处即可!

6️⃣ 配置环境变量,该外刷新该文件

vim /etc/profile
export KAFKA_HOME=/opt/kafka-2.4.1
export PATH=$KAFKA_HOME/bin:$PATH
source /etc/profile

7️⃣ 向其他主机分发 Kafka

scp -rp kafka-2.4.1 node2:/opt/
scp -rp kafka-2.4.1 node3:/opt/

8️⃣ 在主机 node2、主机node3上修改配置文件 ./config/server.properties,并添加环境变量(记得刷新)

# node2
broker.id=1
# node3
broker.id=2

9️⃣ 启动集群,依次在各个主机上执行如下命令(记得提前启动好 Zookeeper!)

/opt/kafka-2.4.1/bin/kafka-server-start.sh -daemon /opt/kafka-2.4.1/config/server.properties

1️⃣0️⃣ 在 Zookeeper 上验证,启动 Zookeeper 的客户端查看节点变化

ls /

image-20211228100827843

如上图生成了跟多节点信息,记得刚才我们配置了 broker.id 属性,所以可以在 /brokers/ids 节点下看到上线的的 Kafka 主机编号

ls /brokers/ids

image-20211228101225435

1️⃣1️⃣ 关闭集群,依次在各个主机上执行如下命令

/opt/kafka-2.4.1/bin/kafka-server-stop.sh stop

3. 写在最后

Kafka 是一个基于发布/订阅模式的分布式消息队列。

Kafka 面向大数据,消息保存在主题中,而每个 Topic 又分为多个分区

kafka 的消息数据保存在磁盘,每个 Partition 对应磁盘上的一个文件,消息写入就是简单的文件追加,文件可以在集群内复制备份以防丢失

即使消息被消费,Kafka 也不会立即删除该消息,可以通过配置使得过一段时间后自动删除以释放磁盘空间

Kafka 依赖分布式协调服务 Zookeeper,适合离线/在线信息的消费,与 Storm 和 Spark 等实时流式数据分析常常结合使用。

🌟 Kafka 群启动/关闭脚本

#!/bin/bash

# 获取IP映射文件中的主机名
HOSTS=`cat /etc/hosts | grep node | awk '{print $2}'`

case $1 in
"start"){
        for HOST in ${HOSTS}
        do
                echo "========= Kafka in ${HOST} ========="
                ssh $HOST /opt/kafka-2.4.1/bin/kafka-server-start.sh -daemon /opt/kafka-2.4.1/config/server.properties
        done
}
;;
"stop"){
        for HOST in ${HOSTS}
        do
                echo "========= Kafka in ${HOST} ========="
                ssh $HOST /opt/kafka-2.4.1/bin/kafka-server-stop.sh stop
        done
}
;;
esac

 


❤️ END ❤️
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是在Windows上安装Kafka和Zookeeper的步骤: 1. 下载Kafka和Zookeeper 访问官网下载页面,选择与您的操作系统版本相对应的Kafka和Zookeeper版本,并下载压缩包。 2. 解压缩文件 将Kafka和Zookeeper的压缩包解压缩到您选择的目录。 3. 配置Zookeeper 进入Zookeeper的目录,复制conf文件夹下的zoo_sample.cfg文件并重命名为zoo.cfg,然后打开zoo.cfg文件,修改dataDir参数为您想要存储Zookeeper数据的目录。例如: ``` dataDir=C:/zookeeper-3.6.2/data ``` 4. 启动Zookeeper 在Zookeeper目录下,打开命令提示符或PowerShell,输入以下命令来启动Zookeeper: ``` bin/zkServer.cmd ``` 5. 配置Kafka 进入Kafka的目录,打开config文件夹下的server.properties文件,修改以下参数: ``` brokers.id=0 listeners=PLAINTEXT://localhost:9092 zookeeper.connect=localhost:2181 ``` 6. 启动KafkaKafka目录下,打开命令提示符或PowerShell,输入以下命令来启动Kafka: ``` bin/windows/kafka-server-start.bat config/server.properties ``` 7. 测试KafkaKafka目录下,打开命令提示符或PowerShell,输入以下命令来创建一个名为“test”的主题: ``` bin/windows/kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test ``` 然后,输入以下命令来启动一个消费者,并订阅刚创建的主题: ``` bin/windows/kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning ``` 最后,打开另一个命令提示符或PowerShell窗口,输入以下命令来启动一个生产者,并向刚创建的主题发送消息: ``` bin/windows/kafka-console-producer.bat --broker-list localhost:9092 --topic test ``` 在生产者命令行中输入消息,然后切换到消费者命令行,您将看到刚刚发送的消息。 以上就是在Windows上安装Kafka和Zookeeper的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

JOEL-T99

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

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

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

打赏作者

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

抵扣说明:

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

余额充值