kafka安装记录:
官网:http://kafka.apache.org/downloads.html
1.下载
yum install -y wget
wget https://mirrors.bfsu.edu.cn/apache/kafka/2.6.0/kafka_2.12-2.6.0.tgz
2.解压:
tar -zxvf kafka_2.12-2.6.0.tgz -C /opt/
3.改名
mv kafka_2.12-2.6.0 kafka
4.创建文件
cd kafka
kafka目录下创建:
mkdir logs
mkdir data
5.修改配置文件:
cd config/
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/kafka/data
#topic 在当前 broker 上的分区个数
num.partitions=1
#用来恢复和清理 data 下数据的线程数量
num.recovery.threads.per.data.dir=1
#segment 文件保留的最长时间,超时将被删除
log.retention.hours=168
#配置连接 Zookeeper 集群地址
zookeeper.connect=x:2181,x1:2181,x2:2181
分别在 另外两台主机上修改配置文件
/opt/kafka/config/server.properties
中的 broker.id=1、broker.id=2注:broker.id 不得重复
6.配置环境变量
vi ~/.bash_profile
添加:
#KAFKA_HOM
export KAFKA_HOME=/opt/kafka
export PATH=$PATH:$KAFKA_HOME/bin
配置文件生效:
source ~/.bash_profile
7.启动集群,
(必须先启动zookeeper)(后续写一个启动脚本)
cd /opt/zookeeper/bin/
./zkServer.sh start
7.1再依次在 master、server1、server2 节点上启动 kafka
cd /opt/kafka/bin/
./kafka-server-start.sh /opt/kafka/config/server.properties
(启动后是个阻塞进程,操作还得重新开一个窗口,但方便查看输出的日志)
./kafka-server-start.sh -daemon /opt/kafka/config/server.properties
(后台启动,推荐。)
查看Kafka是否启动成功 jps
8.创建集群脚本
echo $PATH
为了命令能找到我们创建的脚本;可创建到以上任一bin目录下; 以/usr/bin 为例
cd /usr/bin
vi kk.sh
8.1 更改kafka 停止脚本
kafka 的
bin目录下
kafka-server-stop.sh
有些问题,需要先修改一下官方提供的stop脚本,集群中的每一台机器都要改(注意 kafka 里面的k是小写)
PIDS=$(ps ax | grep -i 'kafka\.Kafka' | grep java | grep -v grep | awk '{print $1}')
改为
PIDS=$(ps ax | grep -i 'kafka' | grep java | grep -v grep | awk '{print $1}')
集群启动脚本:
#!/bin/bash
case $i in
"start"){
for i in x x1 x2
do
echo --------$i 启动kafka---------
ssh $i " source /etc/profile;/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties"
done
};;
"stop"){
for i in x x1 x2
do
echo --------$i 停止kafka---------
ssh $i " source /etc/profile;/opt/kafka/bin/kafka-server-stop.sh stop"
done
};;
esac
8.2赋予权限:
chmod 777 kk.sh
8.3脚本使用:
停止:
kk.sh stop
运行:
kk.sh start
解决Windows创建的脚本文件,上传到Linux使用不了的问题:
sed -i 's/\r$//' kk.sh
9.创建主题:
[root@x kafka]#
bin/kafka-topics.sh --create --zookeeper x:2181 --topic first --partitions 2 --replication-factor 2 --create
解析:
bin/kafka-topics.sh
增加主题create
创建zookeeper x:2181
存储数据topic
first
主题名字partitions
分区数replication-factor
2个副本
9.1查看主题:
[root@x kafka]# bin/kafka-topics.sh --list --zookeeper x:2181
帮助我们分类数据
9.2删除主题:
bin/kafka-topics.sh --delete --zookeeper x:2181 --topic first
需要 server.properties 中设置 delete.topic.enable=true 否则只是标记删除。
9.3修改分区数
bin/kafka-topics.sh --zookeeper x:2181 --alter --topic first --partitions 3
一般 分区数,不超过主机数量
9.4详细信息:
bin/kafka-topics.sh --describe --topic first --zookeeper x:2181
10.生产:
bin/kafka-console-producer.sh --topic first --broker-list x:9092
10.1去另一台机器开启消费者:
[root@x1 kafka]# bin/kafka-console-consumer.sh --bootstrap-server x:9092,x1:9092,x2:9092 --topic first
x生产者发送消息, x1消费者会接收消息,
x2消费者 从头接收消息(
--from-beginning
) 超过7天 就消费不了了
bin/kafka-console-consumer.sh --bootstrap-server x:9092,x1:9092,x2:9092 --topic first --from-beginning
平常遇到以下这种警告,是有节点掉线了 检查三个节点状态,掉了,节点再启动下可以解决
11 一些错误聚集记录
zookeeper,kafka错误
1.ERROR Exiting Kafka due to fatal exception (kafka.Kafka$)
原因:找不到properties文件,或者配置文件路径指定错误
办法:指定配置文件路径
2.Configured broker.id 130 doesn’t match stored broker.id 0 in meta.properties
原因:单机使用过
办法:删除数据文件重启
3.zookeeper is not a recognized option
原因:旧版使用--zookeeper 新版已经去掉了这个选项
办法:0.9以后版本启动改为 --bootstrap-server
4.Replication factor: 2 larger than available brokers: 1
原因:副本数超过了broker的数即服务器数
办法:小于broker数即可
5.报错:
WARN Error while fetching metadata with correlation id 479 : {test=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
WARN Error while fetching metadata with correlation id 480 :{test=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
办法:修改 server.properties 添加
host.name=