【问题标题】:Kakfa fails to start with Fatal error "Duplicate log directories found"Kafka 启动失败,出现致命错误“找到重复的日志目录”
【发布时间】:2021-03-08 13:38:56
【问题描述】:

Kafka 无法启动并出现以下错误:

Fatal error during KafkaServer startup. Prepare to shutdown
java.lang.IllegalArgumentException: Duplicate log directories found: /node5/kafka/data/logs-47, /node7/kafka/data/logs-47!
    at kafka.log.LogManager$$anonfun$loadLogs$2$$anonfun$3$$anonfun$apply$10$$anonfun$apply$1.apply$mcV$sp(LogManager.scala:155)
    at kafka.utils.CoreUtils$$anon$1.run(CoreUtils.scala:56)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

Kafka 0.9.0.1 作为 Cloudera 的一部分进行部署。

问题是什么意思?

是否有解决此问题的方法或解决方案?没找到。

在某些主题分区中存在复制不足的分区问题后重新启动代理后,我遇到了此错误。

重启前代理日志中出现以下错误

    java.lang.IllegalStateException: Compaction for partition [logs,47] cannot be aborted and paused since it is in LogCleaningPaused state.
        at kafka.log.LogCleanerManager$$anonfun$abortAndPauseCleaning$1.apply$mcV$sp(LogCleanerManager.scala:149)
        at kafka.log.LogCleanerManager$$anonfun$abortAndPauseCleaning$1.apply(LogCleanerManager.scala:140)
        at kafka.log.LogCleanerManager$$anonfun$abortAndPauseCleaning$1.apply(LogCleanerManager.scala:140)
        at kafka.utils.CoreUtils$.inLock(CoreUtils.scala:231)
...

Cloudera 数据目录配置:

/node/kafka/data
/node2/kafka/data
...
/node8/kafka/data

更新

我检查了重复的目录内容,发现最新的目录似乎有空的日志段:

ls -l /node5/kafka/data/logs-47

-rw-r--r-- 1 kafka kafka 10485760 Mar  9 05:35 00000000000000000000.index
-rw-r--r-- 1 kafka kafka        0 Mar  8 13:12 00000000000000000000.log

虽然旧文件夹不是:

ls /node7/kafka/data/logs-47

-rw-r--r-- 1 kafka kafka 10485760 Mar  9 05:35 00000000000000366115.index
-rw-r--r-- 1 kafka kafka        0 Nov 25 10:13 00000000000000366115.log

【问题讨论】:

  • 那么,该代理上的 Kafka 主题数据有哪些目录?
  • @OneCricketeer 对不起,你是什么意思?
  • Kafka 将数据存储在磁盘上。请显示该数据的目录列表
  • @OneCricketeer 添加了来自 Cloudera 的配置。希望是你的意思。

标签: apache-kafka cloudera


【解决方案1】:

您的错误是说您在单个代理上有多个目录,其中包含来自名为 logs 的主题的数据,至少有 47 个分区。

LogCleaner 在知道哪个是正确目录之前无法继续删除该数据

如果您对主题中应该包含的内容有所了解,可以转储日志段并检查消息

如果你不知道应该有什么数据,并且分区被复制到其他健康的代理,那么删除所有有故障的分区目录并重新启动代理,让复制修复丢失的数据

【讨论】:

  • 谢谢,我已在问题中添加了更多信息。也许我可以只删除包含空日志段的文件夹?
  • 要修复错误,您必须删除其中一个目录,而不仅仅是文件。日志段为空的事实似乎是一个单独的问题
猜你喜欢
  • 2015-07-07
  • 2018-04-20
  • 2016-03-05
  • 1970-01-01
  • 2013-09-29
  • 2017-02-11
  • 2015-07-08
  • 2020-07-30
  • 1970-01-01
相关资源
最近更新 更多