Kafka主题重启后不再存在
Kafka topic no longer exists after restart
我在我的本地 kafka 集群中创建了一个主题,其中包含 3 个服务器/代理
by 运行 以下来自我的 kafka 安装目录
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 2 --topic user-activity-tracking-pipeline
一切正常,因为我能够从我的主题中生成和使用消息。重启机器后,我在终端
中通过运行以下命令从kafka安装目录启动了捆绑的zookeeper
bin/zookeeper-server-start.sh config/zookeeper.properties
通过在终端中从kafka安装目录执行以下命令,启动了属于集群的3台服务器
env JMX_PORT=10001 bin/kafka-server-start.sh config/server1.properties
env JMX_PORT=10002 bin/kafka-server-start.sh config/server2.properties
env JMX_PORT=10003 bin/kafka-server-start.sh config/server3.properties
现在,当我在终端中从 kafka 安装目录中 运行 列出可用主题时,
bin/kafka-topics.sh --zookeeper localhost:2181 --list
结果为空!
这是相关的服务器 1 配置条目。服务器 2 和服务器 3 的值非常相似
broker.id=1
listeners=PLAINTEXT://:9093
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs-broker-1
num.partitions=2
num.recovery.threads.per.data.dir=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
log.cleaner.enable=false
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=6000
重启后我确实注意到日志文件,所以没有清理任何东西
/tmp/kafka-logs-broker-1
/tmp/kafka-logs-broker-2
/tmp/kafka-logs-broker-3
我想知道为什么之前创建的主题"user-activity-tracking-pipeline"在我尝试列出它时不再存在?
我认为您已经 运行 遇到计算机重新启动时 /tmp 目录被清除的问题。您要么需要更改存储 Kafka 日志的目录,要么更改 /etc/default/rcS
中的 $TMPTIME
环境变量,它控制 tmp 文件保存的时间(以天为单位)。
https://askubuntu.com/questions/20783/how-is-the-tmp-directory-cleaned-up
这并不意味着如果您在临时目录上有您的数据,代理往往会创建这些目录(如果它们不存在)。
- 您能否尝试重新创建主题,重新启动机器然后在启动 Kafka 之前查看
/tmp
目录?
- 您可以尝试通过将数据目录更改为
/tmp
以外的目录来重现吗?
kafka-topics.sh 实际上在后台使用 zookeeper 数据来回答查询。理由是单个经纪人通常无法通过自身获得足够的信息来完整描述主题。
如果你在重启过程中丢失了(我怀疑你确实丢失了,因为你提到了一个新的 zookeeper 启动)zookeeper 数据,kafka-topics 现在完全失明并且看不到以前的 kafka 数据。
检查发生了什么的最好方法是在查询时实际执行 kafka 正在执行的操作!启动你的 zookeeper 客户端(就像做 ./zkCli.sh
一样简单,然后输入 ls /brokers/topics
。如果它是空的,你的 ZK 数据就会丢失。
我在我的本地 kafka 集群中创建了一个主题,其中包含 3 个服务器/代理 by 运行 以下来自我的 kafka 安装目录
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 2 --topic user-activity-tracking-pipeline
一切正常,因为我能够从我的主题中生成和使用消息。重启机器后,我在终端
中通过运行以下命令从kafka安装目录启动了捆绑的zookeeperbin/zookeeper-server-start.sh config/zookeeper.properties
通过在终端中从kafka安装目录执行以下命令,启动了属于集群的3台服务器
env JMX_PORT=10001 bin/kafka-server-start.sh config/server1.properties
env JMX_PORT=10002 bin/kafka-server-start.sh config/server2.properties
env JMX_PORT=10003 bin/kafka-server-start.sh config/server3.properties
现在,当我在终端中从 kafka 安装目录中 运行 列出可用主题时,
bin/kafka-topics.sh --zookeeper localhost:2181 --list
结果为空!
这是相关的服务器 1 配置条目。服务器 2 和服务器 3 的值非常相似
broker.id=1
listeners=PLAINTEXT://:9093
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs-broker-1
num.partitions=2
num.recovery.threads.per.data.dir=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
log.cleaner.enable=false
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=6000
重启后我确实注意到日志文件,所以没有清理任何东西
/tmp/kafka-logs-broker-1
/tmp/kafka-logs-broker-2
/tmp/kafka-logs-broker-3
我想知道为什么之前创建的主题"user-activity-tracking-pipeline"在我尝试列出它时不再存在?
我认为您已经 运行 遇到计算机重新启动时 /tmp 目录被清除的问题。您要么需要更改存储 Kafka 日志的目录,要么更改 /etc/default/rcS
中的 $TMPTIME
环境变量,它控制 tmp 文件保存的时间(以天为单位)。
https://askubuntu.com/questions/20783/how-is-the-tmp-directory-cleaned-up
这并不意味着如果您在临时目录上有您的数据,代理往往会创建这些目录(如果它们不存在)。
- 您能否尝试重新创建主题,重新启动机器然后在启动 Kafka 之前查看
/tmp
目录? - 您可以尝试通过将数据目录更改为
/tmp
以外的目录来重现吗?
kafka-topics.sh 实际上在后台使用 zookeeper 数据来回答查询。理由是单个经纪人通常无法通过自身获得足够的信息来完整描述主题。
如果你在重启过程中丢失了(我怀疑你确实丢失了,因为你提到了一个新的 zookeeper 启动)zookeeper 数据,kafka-topics 现在完全失明并且看不到以前的 kafka 数据。
检查发生了什么的最好方法是在查询时实际执行 kafka 正在执行的操作!启动你的 zookeeper 客户端(就像做 ./zkCli.sh
一样简单,然后输入 ls /brokers/topics
。如果它是空的,你的 ZK 数据就会丢失。