Kafka知识体系
Centos7安装与配置Kafka
# yum安装java环境
# 下载并解压Kafka
wget http://mirror.bit.edu.cn/apache/kafka/2.3.0/kafka_2.11-2.3.0.tgz
tar -xf kafka_2.11-2.3.0.tgz
# 移动到合理位置
mv kafka_2.11-2.3.0 /opt/kafka2.11
# 配置系统环境变量
echo "export KAFKA_HOME=/opt/kafka2.11" >> /etc/profile
echo "export PATH=$PATH:$KAFKA_HOME/bin" >> /etc/profile
source /etc/profile
# 测试Kafka,一定要优先启动Zookeeper
# 我这里10.10.10.19:2181端口上是我的Zookeeper,也可以参见下面的配置文件
kafka-server-start.sh -daemon /opt/kafka2.11/config/server.properties
# 查看是否启动成功
jps -m
配置Kafka
vim /opt/kafka2.11/config/server.properties
# 节点名称
broker.id=0
# 绑定地址
listeners=PLAINTEXT://PLAINTEXT:9092
# 当kafka在docker或者虚拟机中时,需要使用以下参数
advertised.listeners=PLAINTEXT://kafka-server:9092
# 发送缓存字节数
socket.send.buffer.bytes=102400
# 接收缓存字节数
socket.receive.buffer.bytes=102400
# 最大请求字节数,保护OOM
socket.request.max.bytes=104857600
# 日志目录
log.dirs=/tmp/kafka-logs
# 默认分区数
num.partitions=1
# zookeeper地址
zookeeper.connect=10.10.10.19:2181
# zookeeper连接超时时间,单位毫秒
zookeeper.connection.timeout.ms=6000
单机版Kafka
在一台服务器上,启动一次即可。
集群版Kafka
- 单节点,多Broker
在一台服务器上,启动多次Kafka,没次启动加载的配置文件需要不一致,并且配置文件中的broker_id的值也需要不一致且每个值唯一。
kafka-server-start.sh -daemon /opt/kafka2.11/config/server_1.properties # 对应broker=1
kafka-server-start.sh -daemon /opt/kafka2.11/config/server_2.properties # 对应broker=2
- 多节点,多Broker
在多台服务器启动单个broker;在多台服务器上启动多个broker。
清理Kafka日志
在配置文件中,有参数可以进行控制:vim /opt/kafka2.11/config/server.properties
log.retention.hours=1 # 日志保留时间(h)
log.retention.minutes=60 # 日志保留时间(m)
log.retention.ms=3600000 # 日志保留时间(s)
# 也可以使用其它配置
log.retention.bytes=1073741824 # 日志保留大小(bytes)
使用Kafka
备注 | 命令 |
---|---|
创建topic | kafka-topics.sh --zookeeper 10.10.10.19:2181 --create --replication-factor 1 --partitions 1 --topic topic_name |
列举topic | kafka-topics.sh --zookeeper 10.10.10.19:2181 --list |
查看topic详情 | kafka-topics.sh --zookeeper 10.10.10.19:2181 --describe --topic topic_name |
修改topic分区 | kafka-topics.sh --zookeeper 10.10.10.19:2181 --alter --partitions 20 --topic topic_name |
删除topic | kafka-topics.sh --zookeeper 10.10.10.19:2181 --delete --topic topic_name |
启动消费者 | kafka-console-consumer.sh --zookeeper 10.10.10.19:2181 --topic topic_name |
启动生产者 | kafka-console-producer.sh --broker-list 10.10.10.19:9092 --topic topic_name |
指定消费者从头消费 | --from-beginning |
踩坑
删除topic时报错
Note: This will have no impact if delete.topic.enable is not set to true.
解决方案:修改配置
# vim /opt/kafka2.11/config/server.properties
delete.topic.enble=true