Skip to content

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