首页 > 解决方案 > Kafka - 更改分区领导时的 AccessDeniedException

问题描述

在 2 台 Windows 机器上运行 Kafka 集群(Kafka v 2.11-1.1.0)时,当我尝试更改特定主题分区的领导者时,似乎抛出了 AccessDeniedException。这会导致代理(当前领导者)崩溃。这可能与以下未解决的问题有关:https ://issues.apache.org/jira/browse/KAFKA-1194 。对此我有什么可以做的,或者您现在可以不更改 Windows 上的主题负责人而无需重新启动代理吗?

重现步骤:

  1. 在 Windows 10 机器上启动 zookeeper 服务。
  2. 在同一台机器上启动一个 kafka 代理。
  3. 在第二台 Windows 10 机器上启动第二个 kafka broker,与第一个机器连接到同一个 zookeeper,从而形成一个 Kafka 集群。
  4. 创建一个具有 1 个分区的主题并观察该分区的结果领导者。
  5. 使用 kafka-reassign-partitions 命令(根据https://cwiki.apache.org/confluence/display/KAFKA/Replication+tools)更改该主题分区的领导者。使用类似于下面显示的 json 文件,其中“topicName”替换为步骤 4 中创建的主题的名称,“1”替换为当前不是此分区领导者的 Kafka 代理的 BrokerId:

    { "version":1, "partitions":[ {"topic":"topicName","partition":0,"replicas":[1]} ] }

执行上述步骤后,我在旧主题分区领导者的日志中看到以下内容:

Error while renaming dir for testTopic in log dir C:\Users\Public\Documents\Kafka\logs\ (kafka.server.LogDirFailureChannel) java.nio.file.AccessDeniedException

标签: windowsapache-kafkaaccess-denied

解决方案


推荐阅读