tutorial quickstart que kafka applications java apache-kafka distributed-computing

java - quickstart - ¿Es posible agregar particiones a un tema existente en Kafka 0.8.2?



kafka vs rabbitmq (2)

En mi caso, el valor zk_host:port/chroot para el parámetro --zookeeper lanzó la siguiente excepción:

ERROR java.lang.IllegalArgumentException: el tema my_topic_name no existe en la ruta ZK zk_host: puerto / chroot.

Entonces, probé lo siguiente y funcionó:

bin/kafka-topics.sh --alter --zookeeper zk_host:port --topic my_topic_name --partitions 10

Tengo un clúster Kafka que se ejecuta con 2 particiones. Estaba buscando una manera de aumentar el número de particiones a 3. Sin embargo, no quiero perder los mensajes existentes en el tema. Intenté detener Kafka, modificando el archivo server.properties para aumentar el número de particiones a 3 y reiniciar Kafka. Sin embargo, eso no parece cambiar nada. Al usar Kafka ConsumerOffsetChecker , todavía veo que está usando solo 2 particiones. La versión de Kafka que estoy usando es 0.8.2.2. En la versión 0.8.1, solía haber un script llamado kafka-add-partitions.sh , que supongo que podría hacer el truco. Sin embargo, no veo tal script en 0.8.2. ¿Hay alguna manera de lograr esto? Experimenté con la creación de un tema completamente nuevo y para eso parece que utiliza 3 particiones según el cambio en el archivo server.properties . Sin embargo, para los temas existentes, no parece importarle.


Parece que puedes usar this script en su lugar:

bin/kafka-topics.sh --zookeeper zk_host:port/chroot --alter --topic my_topic_name --partitions 40

En el código parece que hacen lo mismo:

AdminUtils.createOrUpdateTopicPartitionAssignmentPathInZK(topic, partitionReplicaList, zkClient, true)

kafka-topics.sh ejecuta this fragmento de código, así como también AddPartitionsCommand utilizado por el AddPartitionsCommand kafka-add-partition.

Sin embargo, debe tener en cuenta la re-partición cuando use la clave:

Tenga en cuenta que un caso de uso para las particiones es la partición semántica de los datos, y la adición de particiones no modifica la partición de los datos existentes, por lo que esto puede molestar a los consumidores si se basan en esa partición. Esto es, si los datos se particionan con hash(key) % number_of_partitions entonces esta partición se barajará potencialmente agregando particiones, pero Kafka no intentará redistribuir automáticamente los datos de ninguna manera.