kafka详解(02) - kafka_2.11-2.4.1安装部署
kafka详解(02) - kafka_2.11-2.4.1安装部署
环境准备
下载安装包
官网下载地址:https://kafka.apache.org/downloads.html
2.4.1版本下载地址:https://archive.apache.org/dist/kafka/2.4.1/kafka_2.11-2.4.1.tgz
Kafka安装包版本使用scala_2.11的版本,即kafka_2.11-kafka版本号.tgz的安装包,经测试scala_2.12的版本在增加topic时非常的慢,具体原因未定位, scala_2.13版本的未测试过
集群规划
hadoop102 | hadoop103 | hadoop104 |
zk | zk | zk |
kafka | kafka | kafka |
Zookeeper环境
Kafka集群需要依赖zookeeper环境,zookeeper安装请参考文档《Zookeeper详解(02) - zookeeper安装部署-单机模式-集群模式》
集群部署
上传解压
将安装包kafka_2.11-2.4.1.tgz上传到服务器的/opt/software并解压到指定目录
[hadoop@hadoop102 software]$ tar -zxvf kafka_2.11-2.4.1.tgz -C /opt/module/
修改解压后的文件夹名称
[hadoop@hadoop102 software]$ cd /opt/module/
[hadoop@hadoop102 module]$ mv kafka_2.11-2.4.1/ kafka
在/opt/module/kafka目录下创建logs文件夹
[hadoop@hadoop102 module]$ cd kafka/
[hadoop@hadoop102 kafka]$ mkdir logs
修改配置文件
[hadoop@hadoop102 kafka]$ cd config/
[hadoop@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的host必须要用主机名或hosts中配置的映射,不能直接使用ip地址,直接使用ip会出现无法连接的现象
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181
分发安装包
[hadoop@hadoop102 module]$ scp -r kafka/ hadoop103:/opt/module/
[hadoop@hadoop102 module]$ scp -r kafka/ hadoop104:/opt/module/
配置环境变量(可选)
sudo vim /etc/profile
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin
立即生效
source /etc/profile
修改hadoop103和hadoop104上的broker.id
分别在hadoop103和hadoop104上修改配置文件/opt/module/kafka/config/server.properties中的broker.id=1、broker.id=2
集群中每个节点的broker.id不得重复
集群启停
先启动Zookeeper集群
[hadoop@hadoop102 module]$ myzookeeper.sh start
依次在hadoop102、hadoop103、hadoop104节点上启动kafka
[hadoop@hadoop102 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
[hadoop@hadoop103 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
[hadoop@hadoop104 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
查看进程
[hadoop@hadoop102 kafka]$ jpsall
=============== hadoop102 ===============
1237 QuorumPeerMain
1610 Kafka
=============== hadoop103 ===============
1236 QuorumPeerMain
1612 Kafka
=============== hadoop104 ===============
1603 Kafka
1236 QuorumPeerMain
停止kafka集群
[hadoop@hadoop102 kafka]$ bin/kafka-server-stop.sh stop
[hadoop@hadoop103 kafka]$ bin/kafka-server-stop.sh stop
[hadoop@hadoop104 kafka]$ bin/kafka-server-stop.sh stop
kafka群起脚本
[hadoop@hadoop102 kafka]$ vi /home/hadoop/bin/mykafka.sh
添加如下内容
#!/bin/bash
if [ $# -lt 1 ]
then
echo "Input Args Error....."
exit
fi
for i in hadoop102 hadoop103 hadoop104
do
case $1 in
start)
echo "==================START $i KAFKA==================="
ssh $i /opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties
;;
stop)
echo "==================STOP $i KAFKA==================="
ssh $i /opt/module/kafka/bin/kafka-server-stop.sh stop
;;
*)
echo "Input Args Error....."
exit
;;
esac
done
添加可执行权限
[hadoop@hadoop102 kafka]$ chmod +x /home/hadoop/bin/mykafka.sh
使用脚本启动kafka集群
[hadoop@hadoop102 kafka]$ mykafka.sh start
使用脚本停止kafka集群
[hadoop@hadoop102 kafka]$ mykafka.sh stop
Kafka基础命令行操作
1)创建topic
[hadoop@hadoop102 kafka]$ bin/kafka-topics.sh --zookeeper hadoop102:2181 --create --replication-factor 3 --partitions 1 --topic test
选项说明:
--topic 定义topic名
--replication-factor 定义副本数
--partitions 定义分区数
2)查看当前服务器中的所有topic
[hadoop@hadoop102 kafka]$ bin/kafka-topics.sh --zookeeper hadoop102:2181 --list
3)向topic中发送消息
[hadoop@hadoop102 kafka]$ bin/kafka-console-producer.sh --broker-list hadoop102:9092 --topic test
>hello kafka
>hello hadoop
4)从指定topic中消费消息
从此刻最新发送到消息开始消费
[hadoop@hadoop102 kafka]$ bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic test
加--from-beginning:会把主题中现有的所有的数据都读取出来
[hadoop@hadoop102 kafka]$ bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --from-beginning --topic test
5)查看某个Topic的详情
[hadoop@hadoop102 kafka]$ bin/kafka-topics.sh --zookeeper hadoop102:2181 --describe –-topic test
6)修改分区数
bin/kafka-topics.sh --zookeeper hadoop102:2181 --alter –-topic test --partitions 6
7)删除topic
[hadoop@hadoop102 kafka]$ bin/kafka-topics.sh --zookeeper hadoop102:2181 --delete --topic test
本文作者:莲藕淹,转载请注明原文链接:https://www.cnblogs.com/meanshift/p/15902188.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY