1、jar包下载
2、集群部署
正常集群规划为完全分布式里的每台主机都要配置有zookeeper,kafka如:
①使用工具将jar包传到集群中(为了方便演示,使用的是伪分布式)
②解压到相应文件夹中
tar -zxf kafka_2.11-0.11.0.0.tgz -C /opt/modules/
解压成功,个人习惯将文件夹命名为kafka:
③在kafka目录下创建logs文件
④配置zookeeper
当前下载的kafka程序里自带Zookeeper,可以直接使用其自带的Zookeeper建立集群,也可以单独使用Zookeeper安装文件建立集群。
因为很多其它大数据框架也需要使用zookeeper,建议没安装zookeeper的同学先安装zookeeper,具体教程本篇就不在叙述了。
⑤修改配置文件
需要注意的:
# broker 的全局唯一编号,不能重复
broker.id=0
需要修改的:
# 能够真正删除topic(主题)需要server.properties中设置delete.topic.enable=true否则只是标记删除
delete.topic.enable=true
# kafka消息存放的路径
log.dirs=/opt/modules/kafka/data
# 配置连接 Zookeeper 集群地址,看情况来配,有几个机器就配几个
zookeeper.connect=hadoop100:2181
注意,log.dir不是log日志存放的dir目录,而是kafka消息存放目录,只是命名为log,不要搞混掉
不需要修改,只是讲述一下该参数的意义:
# 处理网络请求的线程数量
num.network.threads=3
# 用来处理磁盘 IO 的现成数量
num.io.threads=8
# 发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
# 接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
# 请求套接字的缓冲区大小
socket.request.max.bytes=104857600
# topic 在当前 broker 上的分区个数
num.partitions=1
# 用来恢复和清理 data 下数据的线程数量
num.recovery.threads.per.data.dir=1
# segment 文件保留的最长时间,超时将被删除
log.retention.hours=168
⑥配置环境变量
# kAFKA_HOME
export KAFKA_HOME=/opt/modules/kafka
export PATH=$PATH:$KAFKA_HOME/bin
⑦分发配置文件到其它集群
xsync kafka/
并将其它集群配置文件中borker.id修改为1,2......依次递增
⑧启动&关闭集群
启动集群:
bin/kafka-server-start.sh -daemon config/server.properties
关闭集群:
bin/kafka-server-stop.sh stop
⑨群起脚本
#!/bin/bash
case $1 in
"start"){
for i in hadoop102 hadoop103 hadoop104
do
echo "========== $i =========="
ssh $i '/opt/modules/kafka/bin/kafka-server-start.sh -daemon /opt/modules/kafka/config/server.properties'
done
};;
"stop"){
for i in hadoop102 hadoop103 hadoop104
do
echo "========== $i =========="
ssh $i '/opt/modules/kafka/bin/kafka-server-stop.sh stop'
done
};;
esac
注:kafka关闭后要等一下进程才会被结束