Ho un cluster Kafka in esecuzione con 2 partizioni. Stavo cercando un modo per aumentare il conteggio delle partizioni a 3. Tuttavia, non voglio perdere i messaggi esistenti nell'argomento. Ho provato a fermare Kafka, modificando il file server.properties
per aumentare il numero di partizioni su 3 e riavviare Kafka. Tuttavia, questo non sembra cambiare nulla. Usando Kafka ConsumerOffsetChecker
, continuo a vedere che sta usando solo 2 partizioni. La versione di Kafka che sto usando è 0.8.2.2. Nella versione 0.8.1, c'era uno script chiamato kafka-add-partitions.sh
, che immagino potrebbe fare il trucco. Tuttavia, non vedo nessuno di questi script in 0.8.2. C'è un modo per realizzare questo? Ho fatto esperimenti con la creazione di un argomento completamente nuovo e per quello sembra utilizzare 3 partizioni in base alla modifica nel file server.properties
. Tuttavia, per gli argomenti esistenti, non sembra preoccuparsene.È possibile aggiungere partizioni a un argomento esistente in Kafka 0.8.2
risposta
Sembra che è possibile utilizzare this script anziché:
bin/kafka-topics.sh --zookeeper zk_host:port/chroot --alter --topic my_topic_name
--partitions 40
Nel codice sembra che fanno stessa cosa:
AdminUtils.createOrUpdateTopicPartitionAssignmentPathInZK(topic, partitionReplicaList, zkClient, true)
kafka-topics.sh
esegue this pezzo di codice, così come AddPartitionsCommand usato da script kafka-add-partition.
Tuttavia è necessario essere consapevoli di ri-partizionamento quando usando la chiave:
Essere consapevoli del fatto che un caso d'uso per le partizioni è semanticamente partizione dati e partizioni aggiungendo non cambia la compartimentazione dei dati esistenti quindi questo può disturbare i consumatori se si affidano a quella partizione . Cioè se i dati sono partizionati da
hash(key) % number_of_partitions
allora questo partizionamento sarà potenzialmente mischiato aggiungendo le partizioni, ma Kafka non tenterà di ridistribuire automaticamente i dati in alcun modo a .
Grazie. Lo proverò –
Se i dati devono essere ripartizionati, esiste un modo solo per spostare i messaggi che non sono stati letti e ignorare i messaggi che sono stati letti? – Glide
in linea con la filosofia "append-only", immagino che dovresti fare di tutto per riuscirci. Direi che il più semplice è fermare il consumo su quell'argomento, creare un nuovo argomento con la quantità di partizioni che desideri, ripubblicare i messaggi non letti sul nuovo argomento e poi continuare a consumare il nuovo argomento. – CmdrDats
Si prega di notare che nel mio caso il valore zk_host: port/chroot per il parametro --zookeeper ha gettato la seguente eccezione:
ERRORE java.lang.IllegalArgumentException: Argomento my_topic_name non esiste sul ZK percorso zk_host: porto/chroot.
Così, ho provato quanto segue e ha funzionato:
bin/kafka-topics.sh --alter --zookeeper zk_host:port --topic my_topic_name --partitions 10
'chroot' è un'impostazione di configurazione * opzionale *, non pensata per essere presa alla lettera –
- 1. È possibile creare un argomento kafka con il conteggio delle partizioni dinamico?
- 2. kafka ottiene il conteggio delle partizioni per un argomento
- 3. Come utilizzare l'API consumer di Kafka 0.8.2?
- 4. argomento Kafka vs partizione
- 5. Kafka 0.8, è possibile creare un argomento con partizione e replica usando il codice java?
- 6. Replica di messaggi da un argomento di Kafka a un altro argomento di kafka
- 7. Apache Kafka - KafkaStream su argomento/partizione
- 8. Come eliminare un argomento in apache kafka
- 9. È possibile aggiungere alla prima riga di un file esistente?
- 10. Come creare argomenti in apache kafka?
- 11. Esiste un modo per mantenere l'ordine dei messaggi tra le partizioni di un argomento di kafka con un singolo consumatore?
- 12. Temi, partizioni e chiavi
- 13. Kafka: Zookeeper è un must?
- 14. Riequilibrio delle partizioni sui broker di Kafka 0.8
- 15. Come aggiungere un progetto esistente a Geany
- 16. Come è possibile aggiungere una nuova colonna a Dataframe esistente in Spark SQL
- 17. Query argomento Kafka per record specifici
- 18. Che cosa è esattamente Kafka Rebalancing?
- 19. Come posso ottenere l'ULTIMO offset di un argomento di kafka?
- 20. Kafka fallimento singolo utente in un gruppo
- 21. Come aggiungere a un hash esistente in Ruby
- 22. Non è possibile aggiungere JTextField a JFrame
- 23. Kafka 0.9 - Come creare un argomento tramite java api
- 24. È possibile creare un argomento esteso alla WAN in Hazelcast?
- 25. come caricare un argomento di Kafka su HDFS?
- 26. È possibile aggiungere Bootstrap a un'app Ionic?
- 27. Come aggiungere Maven a un progetto Android IntelliJ esistente
- 28. Non è possibile aggiungere un componente Swing a più contenitori?
- 29. È possibile aggiungere una classe a un pulsante tinyMCE personalizzato?
- 30. È possibile aggiungere un'etichetta descrittiva a un ramo Git?
L'ultima versione di Apache Kafka è 0.8.2.2, dubito che si sta utilizzando "2.10". Potresti voler controllare di nuovo le versioni. – C4stor
@ C4stor In realtà intendevo Kafka basato su Scala 2.10, che è esattamente la versione di cui hai parlato 0.8.2.2. Dispiace per la confusione. Modificherò la mia domanda. –