2015-05-28 16 views
5

Ich benutze kafka 0.8.2 & einer meiner Kafka-Server gestorben (keine Möglichkeit, die Daten auf den Datenträgern wiederherzustellen). Es gibt ein Thema mit der Replikation von 1 mit einer der Partitionen auf dem toten Server. Ich dachte, eine Neuzuweisung würde die Metadaten für diese Partition auf einen neuen Server verschieben, ohne die Daten zu benötigen, aber die Neuzuweisung bleibt bei in progress.Abbrechen kafka Partition Aktion zuweisen

Ich lief:

$ /opt/kafka/kafka/bin/kafka-reassign-partitions.sh --zookeeper myzookeeper.my.com --reassignment-json-file new_assignment.json --verify 
Status of partition reassignment: 
Reassignment of partition [topicX,1] is still in progress 

Das wird nie gelingen, da die toten Server nie wieder kommt.

In dem neuen Protokoll des Servers, ich sah:

[2015-05-28 06:25:15,401] INFO Completed load of log topicX-1 with log end offset 0 (kafka.log.Log) 
[2015-05-28 06:25:15,402] INFO Created log for partition [topicX,1] in /mnt2/data/kafka with properties {segment.index.bytes -> 10485760, file.delete.delay.ms -> 60000, segment.bytes -> 536870912, flush.ms -> 9223372036854775807, delete.retention.ms -> 86400000, index.interval.bytes -> 4096, retention.bytes -> -1, min.insync.replicas -> 1, cleanup.policy -> delete, unclean.leader.election.enable -> true, segment.ms -> 604800000, max.message.bytes -> 1000012, flush.messages -> 9223372036854775807, min.cleanable.dirty.ratio -> 0.5, retention.ms -> 259200000, segment.jitter.ms -> 0}. (kafka.log.LogManager) 
[2015-05-28 06:25:15,403] WARN Partition [topicX,1] on broker 4151132: No checkpointed highwatermark is found for partition [topicX,1] (kafka.cluster.Partition) 
[2015-05-28 06:25:15,405] INFO [ReplicaFetcherManager on broker 4151132] Removed fetcher for partitions (kafka.server.ReplicaFetcherManager) 
[2015-05-28 06:25:15,408] INFO [ReplicaFetcherManager on broker 4151132] Added fetcher for partitions List() (kafka.server.ReplicaFetcherManager) 
[2015-05-28 06:25:15,411] INFO [ReplicaFetcherManager on broker 4151132] Removed fetcher for partitions (kafka.server.ReplicaFetcherManager) 
[2015-05-28 06:25:15,413] INFO [ReplicaFetcherManager on broker 4151132] Added fetcher for partitions List() (kafka.server.ReplicaFetcherManager) 

Gibt es einen Weg, um es zu zwingen, um die Neuzuweisung Aktion abzuschließen oder abbrechen?

Antwort

2

Sie können die Zuweisung abbrechen, indem Sie den zk-Knoten "/ admin/reassign_partitions" auf Ihrem zookeeper-Cluster löschen und die dem toten Broker zugewiesenen Partitionen auf neue Knoten verschieben.

+4

Ich endete mit dem Booten einer anderen Maschine mit der gleichen Broker-ID, um die Neuzuweisung der Partition zu beenden –

+0

das funktioniert ganz gut. Es tut nicht weh, die Broker danach neu zu starten. – k1th

1

Mit kafka 0.8.2.2, nur um Foo L's Antwort zu bestätigen, Neustart einer anderen Maschine mit der gleichen Broker-ID löste das Problem.

Während wir mit dem gleichen Broker-ID nicht über diese neuen Broker haben, wird die Migration angehalten, und die verify Befehl geben immer die gleiche Antwort

./bin/kafka-reassign-partitions.sh --zookeeper "$ZK_SERVERS" --broker-list "$BROKERS_ID" --reassignment-json-file reassignment.json --verify

Ergebnis:

Reassignment of partition [topicName,partitionId] is still in progress

Verwandte Themen