Kafka入门集群部署

[亡魂溺海] 提交于 2020-02-26 13:37:22

一、Kafka 概述

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

二、消息队列的两种模式

(1)点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除)
消息生产者生产消息发送到Queue中,然后消息消费者从Queue中取出并且消费消息。
消息被消费以后,queue 中不再有存储,所以消息消费者不可能消费到已经被消费的消息。
Queue 支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。
在这里插入图片描述
(2)发布/订阅模式(一对多,消费者消费数据之后不会清除消息)
消息生产者(发布)将消息发布到 topic 中,同时有多个消息消费者(订阅)消费该消
息。和点对点方式不同,发布到 topic 的消息会被所有订阅者消费。
在这里插入图片描述

三、kafka下载和环境准备

kafaka下载地址:http://kafka.apache.org/downloads.html
选择自己需要对应的scala版本进行下载。
在这里插入图片描述
3.1 集群规划
准备三台虚拟机这三台虚拟机也完成了zookeeper的集群规划,没有完成的可以参考这一篇Zookeeper集群部署

四、配置环境

4.1 解压安装包,并修改解压后的文件名称

tar -zxvf kafka_2.12-2.3.0.tgz
mv kafka_2.12-2.3.0  kafka

4.2 在kafka目录下创建 logs 文件夹

 mkdir logs

4.3 修改配置文件

cd config
sudo vi server.properties

输入以下内容:


#broker 的全局唯一编号,不能重复
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/module/kafka/logs
#topic 在当前 broker 上的分区个数
num.partitions=1
#用来恢复和清理 data 下数据的线程数量
num.recovery.threads.per.data.dir=1
#segment 文件保留的最长时间,超时将被删除
log.retention.hours=168
#配置连接 Zookeeper 集群地址
zookeeper.connect=slave1:2181,slave2:2181,slave3:2181

4.4配置环境变量

sudo vi /etc/profile

#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin

source /etc/profile

4.5分发压缩包

 xsync kafka/

注意:分发之后记得配置其他机器的环境变量
分别在slave2 和slave3 上修改配置文件kafka/config/server.properties
中的 broker.id=1、broker.id=2
注:broker.id 不得重复

五、启动集群和kafka基本命令操作

5.1 启动集群
先在各个节点上依次启动zookeeper进行集群。
然后依次在 slave1、slave2、slave3各个节点上启动 kafka

//启动集群
bin/kafka-server-start.sh -daemon
config/server.properties
//关闭集群
bin/kafka-server-stop.sh stop

5.2Kafka 命令行操作
1.查看当前服务器中的所有 topic

bin/kafka-topics.sh --zookeeper slave1:2181 --list

2.创建 topic

bin/kafka-topics.sh --zookeeper slave1:2181 --create --replication-factor 2 --partitions 1 --topic test

在这里插入图片描述
选项说明:–topic 定义 topic 名 --replication-factor 定义副本数 --partitions 定义分区数

这里如果出现

Error while executing topic command : Replication factor: 2 larger than available brokers: 0.
创建kafka的topic显示,存活的brokers为0
可能是zookeeper集群没有正常完成

3.发送消息和消费消息

//发送消息
 bin/kafka-console-producer.sh --broker-list slave1:9092 --topic test
//消费消息
bin/kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic test

在这里插入图片描述
在这里插入图片描述
4.删除 topic

bin/kafka-topics.sh --zookeeper slave1:2181 --delete --topic test

在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!