我在本地kafka群集中创建了一个包含3个服务器/代理的主题 通过从我的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” 在我尝试列出时不再存在?
答案 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)
这并不意味着如果你有临时的代理目录,你有数据,经纪人往往会创建这些目录,如果它们不存在。
/tmp
目录?/tmp
以外的其他内容?