重启后卡夫卡主题不再存在

时间:2015-12-01 13:37:10

标签: apache-kafka apache-zookeeper

我在本地kafka群集中创建了一个包含3个服务器/代理的主题 通过从我的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” 在我尝试列出时不再存在?

3 个答案:

答案 0 :(得分:3)

kafka-topics.sh实际上使用引擎盖下的zookeeper数据来回答查询。理由是单个经纪人通常无法获得足够的信息来完全描述主题。

如果您在重启过程中丢失了(我怀疑你做了,因为你提到了一个新的zookeeper启动)zookeeper数据,kafka-topics现在完全失明,无法看到以前的kafka数据。

检查正在发生的事情的最好方法是在查询时实际执行kafka正在做的事情!启动你的zookeeper客户端(就像执行./zkCli.sh一样简单,然后输入ls /brokers/topics。如果它是空的,你的ZK数据就会丢失。

答案 1 :(得分:1)

我认为,当您的计算机重新启动时,您遇到了正在清理/ tmp目录的问题。您需要更改存储Kafka日志的目录,或更改$TMPTIME中的/etc/default/rcS环境变量,该变量控制tmp文件的保存时间(以天为单位) 。

https://askubuntu.com/questions/20783/how-is-the-tmp-directory-cleaned-up

答案 2 :(得分:1)

这并不意味着如果你有临时的代理目录,你有数据,经纪人往往会创建这些目录,如果它们不存在。

  • 您是否可以尝试重新创建主题,重新启动计算机,然后在启动Kafka之前查看/tmp目录?
  • 您是否可以尝试将数据目录更改为/tmp以外的其他内容?