当前位置: 首页 > 知识库问答 >
问题:

如何移动一个分区与领导-1到另一个代理?

尉迟雅昶
2023-03-14

假设所有具有分区的前导和副本的节点都崩溃,并且节点不可恢复。

如何选举另一位Kafka经纪人作为该分区的领导人?(我对数据丢失感到满意)

我尝试了“kafka preferred replica election.sh”和“kafka reassign partitions.sh”,但没有成功。

设置:

  • 两个节点kafka集群,代理ID为10和11。
  • 具有副本因子1和分区1的主题测试。Broker 11是主题测试分区0的领导者
  • 11号经纪人倒下了
  • Kafka版本-kafka_2.11-0.10.1.0

主题描述

Topic:test  PartitionCount:1    ReplicationFactor:1 Configs:
Topic: test Partition: 0    Leader: -1  Replicas: 11    Isr:

kafka-reassign-partitions.sh输出:

bin/kafka-reassign-partitions.sh --zookeeper myvm:2181 --reassignment-json-file manual-assignment.json --execute
Partitions reassignment failed due to The proposed assignment contains non-existent partitions: List([test,10])
kafka.common.AdminCommandFailedException: The proposed assignment contains non-existent partitions: List([test,10])
    at kafka.admin.ReassignPartitionsCommand$.parseAndValidate(ReassignPartitionsCommand.scala:201)
    at kafka.admin.ReassignPartitionsCommand$.executeAssignment(ReassignPartitionsCommand.scala:153)
    at kafka.admin.ReassignPartitionsCommand$.executeAssignment(ReassignPartitionsCommand.scala:149)
    at kafka.admin.ReassignPartitionsCommand$.main(ReassignPartitionsCommand.scala:46)
    at kafka.admin.ReassignPartitionsCommand.main(ReassignPartitionsCommand.scala)

cat manual-assignment.json
{
 "partitions":
  [
    {"topic": "test", "partition": 10, "replicas": [10]}
  ],
  "version":1
}

Kafka更喜欢复制品选举。嘘

bin/kafka-preferred-replica-election.sh --zookeeper myvm:2181 --path-to-json-file topicPartitionList.json
[2016-11-08 03:27:01,993] ERROR Skipping preferred replica leader election for partition [test,10] since it doesn't exist (kafka.admin.PreferredReplicaLeaderElectionCommand)
Successfully started preferred replica election for partitions Set([test,10])

cat topicPartitionList.json
{
 "partitions":
  [
    {"topic": "test", "partition": 10}
  ]
}

共有1个答案

羊冠玉
2023-03-14

Kafka仅从ISR和指定副本中选举领导人(启用不干净领导人选举时)。对于您的情况,当复制因子设置为1时,在leader broker崩溃后,ISR中没有任何代理。没有候选人可以当选为新的领导人,所以这是设计。

 类似资料:
  • 在我的AnyLogic模型中,容器代理在主代理中移动到不同的位置。 Main包含位于特定位置的多个块代理实例。Block包含一台多桥桥式起重机,该起重机应能捡起集装箱并将其运至当地仓库。 当容器被放置在块的起重机范围内的吸引器处时,块内的一个进程被调用。此进程包含入口、移动起重机和出口块。在移动起重机块中,在抓取步骤中,AnyLogic给我以下错误: 所有块代理都位于main中的不同坐标处。它们各

  • 问题内容: 我想将一个DIV元素移到另一个元素中。例如,我要移动此对象(包括所有子对象): 到这个: 这样我有: 问题答案: 曾经尝试过普通的JavaScript … 吗?

  • 问题内容: 我想将一个DIV元素移到另一个元素中。例如,我要移动此对象(包括所有子对象): 到这个: 这样我有: 问题答案: 曾经尝试过普通的JavaScript … 吗?

  • 我一直在设计一个基于Swing的桌面RPG程序,以促进带有GUI控制元素的基于文本的角色扮演。 为了促进这一点,每个正在运行的客户端都会获得一个带有所有重要JFrames的主桌面(托管客户端上的“GM Desktop”和远程客户端上的“Player Desktop”)。此外,GM和Players都可以为角色打开“透视桌面”,为他们提供一个单独的JDesktopPane,其中包含提供该角色视角的“角

  • 问题内容: 我有一个属于表空间 报告 的分区表。我想将其移至表空间 记录 。 一种可能性是删除表并在新表空间中重新创建它,但这对我来说不是一个选择,因为表中有数据需要在移动后幸存。 我首先使用以下命令检查分区是否真正属于表空间报告: 然后我只是尝试: 但这给了我错误ORA-145111``无法对已分区的对象执行操作’‘。 然后我发现我可以使用以下方法移动单个分区: 但是由于该表有60个分区(基于日