Kafka
是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于Producer
:消息生产者,就是向 kafka broker
发消息的客户端;Consumer
:消息消费者,向 kafka broker
取消息的客户端;Consumer Group (CG)
:消费者组,由多个 consumer
组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。Broker
:一台 kafka
服务器就是一个 broker
。一个集群由多个 broker
组成。一个 broker
可以容纳多个 topic
。Topic
:可以理解为一个队列,生产者和消费者面向的都是一个 topic
;Partition
:为了实现扩展性,一个非常大的 topic
可以分布到多个 broker
(即服务器)上,一个 topic
可以分为多个 partition
,每个 partition
是一个有序的队列;Replica
:副本,为保证集群中的某个节点发生故障时,该节点上的 partition
数据不丢失,且 kafka
仍然能够继续工作,kafka
提供了副本机制,一个 topic
的每个分区都有若干个副本,一个 leader
和若干个 follower
。leader
:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是 leader
。follower
:每个分区多个副本中的“从”,实时从 leader
中同步数据,保持和 leader
数据的同步。leader
发生故障时,某个 follower
会成为新的 follower
。(1) 虚拟机准备
虚拟机的创建于配置在之前博客详细说过,需要的同学可以参考: Hadoop运行环境搭建中第1.1小节
进行操作。
(2) 安装 JDK
安装JDK
在之前的博客中已经详细说过,没安装的同学可以参考: Hadoop运行环境搭建中第1.2小节
进行操作。
(3) 安装 Zookeeper
安装Zookeeper
在之前的博客中已经详细说过,没安装的同学可以参考: Zookeeper基础—本地模式安装中第2.1小节
进行操作。
hadoop100 | hadoop101 | hadoop102 |
---|---|---|
zookeeper | zookeeper | zookeeper |
kafka | kafka | kafka |
Kafka
安装包路径下[xqzhao@hadoop100 ~]$ cd /opt/software/
注: Kafka
安装包下载地址: 点击进入Kafka下载地址
/opt/module
下面[xqzhao@hadoop100 software]$ tar -zvxf kafka_2.11-2.4.0.tgz -C /opt/module/
[xqzhao@hadoop100 software]$ ls /opt/module/
kafka_2.11-2.4.0
// 修改 `kafka_2.11-2.4.0` 的名称为 `kafka`
[xqzhao@hadoop100 module]$ mv kafka_2.11-2.4.0/ kafka
/opt/module/kafka
目录下创建 logs
文件夹[xqzhao@hadoop100 kafka]$ mkdir logs
[xqzhao@hadoop100 kafka]$ cd config/
[xqzhao@hadoop100 config]$ vim 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=hadoop100:2181,hadoop101:2181,hadoop102:2181
[xqzhao@hadoop100 module]$ sudo vim /etc/profile
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin
[xqzhao@hadoop100 module]$ source /etc/profile
[xqzhao@hadoop100 module]$ xsync kafka/
- 注1:
分发之后记得配置其他机器的 环境变量
- 注2:
xsync
集群分发脚本在: Hadoop运行模式-完全分布式(重点) 中第4.4小节
有详细描述。
hadoop101
和 hadoop102
上修改配置文件 /opt/module/kafka/config/server.properties
中的 broker.id=1
、broker.id=2
broker.id
不得重复[xqzhao@hadoop100 kafka]$ cd config/
[xqzhao@hadoop100 config]$ vim server.properties
使用脚本操作 Zookeeper
集群:
# 启动集群 Zookeeper 服务
[xqzhao@hadoop100 bin]$ zk.sh start
注1: **
Zookeeper
集群安装配置等请参考博客: Zookeeper集群操作—集群安装、操作脚本 中第3.1小节
的描述。
注2:Zookeeper
集群启动停止脚本请查看博客: Zookeeper集群操作—集群安装、操作脚本 中第3.3.1小节
的描述。
依次在 hadoop100
、hadoop101
、hadoop102
节点上启动 kafka
[xqzhao@hadoop100 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
[xqzhao@hadoop101 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
[xqzhao@hadoop102 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
[xqzhao@hadoop100 kafka]$ bin/kafka-server-stop.sh stop
[xqzhao@hadoop101 kafka]$ bin/kafka-server-stop.sh stop
[xqzhao@hadoop102 kafka]$ bin/kafka-server-stop.sh stop
hadoop100
的 /home/xqzhao/bin
目录下创建 kk.sh
文件[xqzhao@hadoop100 bin]$ sudo touch kk.sh
[xqzhao@hadoop100 bin]$ sudo vim kk.sh
在该文件中编写如下代码:
#!/bin/bash
case $1 in
"stop"){
for i in hadoop100 hadoop101 hadoop102
do
echo ------------ Kafka $i 关闭 ------------
ssh $i '/opt/module/kafka/bin/kafka-server-stop.sh /opt/module/kafka/config/server.properties'
done
}
;;
"start"){
for i in hadoop100 hadoop101 hadoop102
do
echo ------------ Kafka $i 启动 ------------
ssh $i '/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties'
done
}
;;
esac
kk.sh
具有执行权限[xqzhao@hadoop100 bin]$ sudo chmod 777 kk.sh
# 启动集群 Kafka 服务
[xqzhao@hadoop100 bin]$ kk.sh start
`博主这里不知什么原因 start 不了,但是 stop 是可以用的`
# 关闭集群 Kafka 服务
[xqzhao@hadoop100 bin]$ kk.sh stop
声明:本文是学习时记录的笔记,如有侵权请告知删除!
原视频地址:https://www.bilibili.com/video/BV1EZ4y1G7iL