2 Kafka安装配置
2.1 集群规划
hadoop102 | hadoop103 | hadoop104 |
---|---|---|
zk | zk | zk |
kafka | kafka | kafka |
2.2 集群安装配置
步骤1:解压安装包
[atguigu@hadoop102 software]$ tar -zxvf kafka_2.11-2.4.1.tgz -C /opt/module/
步骤2:修改解压后的文件名称
[atguigu@hadoop102 module]$ mv kafka_2.11-2.4.1.tgz kafka
步骤3:在/opt/module/kafka目录下创建logs文件
[atguigu@hadoop102 kafka]$ mkdir logs
后续配置日志数据分离,需要在创建一个data文件夹。用来存放数据,logs存放kafka的日志。
我们主要关注这个日志:
步骤4:修改配置文件
[atguigu@hadoop102 kafka]$ cd config/
[atguigu@hadoop102 config]$ vi server.properties
输入以下内容:
#broker的全局唯一编号,不能重复
broker.id=0
#删除topic功能使能,当前版本此配置默认为true,已从配置文件移除
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=hadoop102:2181,hadoop103:2181,hadoop104:2181
步骤5:配置环境变量
[atguigu@hadoop102 module]$ sudo vi /etc/profile
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin
[atguigu@hadoop102 module]$ source /etc/profile
步骤6:分发Kafka、分发配置文件
[atguigu@hadoop102 module]$ xsync kafka/
[atguigu@hadoop102 module]$ xsync /etc/profile.d/my_env.sh
步骤7:修改hadoop103和hadoop104的broker.id
# hadoop103
broker.id=1
# hadoop104
broker.id=2
注:broker.id不得重复
步骤8:启动集群
先启动zookeeper集群,然后启动kafka
[atguigu@hadoop102 kafka]$ zk.sh start
单点启动kafka
[atguigu@hadoop102 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
[atguigu@hadoop103 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
[atguigu@hadoop104 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
步骤9:关闭集群
[atguigu@hadoop102 kafka]$ bin/kafka-server-stop.sh stop
[atguigu@hadoop103 kafka]$ bin/kafka-server-stop.sh stop
[atguigu@hadoop104 kafka]$ bin/kafka-server-stop.sh stop
步骤10:kafka群起脚本
#!/bin/bash
case $1 in
"start"){
for i in hadoop102 hadoop103 hadoop104
do
echo "========== $i starting kafaka =========="
ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"
done
};;
"stop"){
for i in hadoop102 hadoop103 hadoop104
do
echo "========== $i stoping kafaka =========="
ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh stop"
done
};;
esac
2.3 Kafka日志数据分离
步骤1:停止zookeeper进程,停止kafka进程。
步骤2:删除kafka的logs文件夹,删除了所有的日志和数据信息。之前如果执行过kafka,还会有一些增删改查的元数据信息保存在zookeeper中,可以通过进入zkCli.sh然后ls / 查看信息,除了zookeeper节点,其他的所有节点都是kafka生成的。可以通过delete删除,多层的节点通过deleteall删除。
方式2:另外可以直接删除zookeeper安装目录里面的log文件夹,和zkData里面的version-2文件夹。相当于初始化的zookeeper。
步骤3:这个时候进入kafka的安装目录,修改conf内的server.properties文件。
#kafka数据更改为data
log.dirs=/opt/module/kafka/data
那么kafka的日志信息在哪呢?
开启zookeeper、kafka后会产生新的/opt/module/kafka/logs;存放:
创建新的主题后,会在data目录看到:主题-分区号。