Red de conocimiento informático - Aprendizaje de código fuente - Desafío de actualización diaria para resolver el problema de compensación fuera de límites de Kafka (sin terminar)

Desafío de actualización diaria para resolver el problema de compensación fuera de límites de Kafka (sin terminar)

Recientemente, mientras trabajaba en la plataforma de big data de la empresa, me encontré con un consumidor de Kafka que no podía comenzar a consumir normalmente y reportó un error afka.common.OffsetOutOfRangeException. Comúnmente conocido como matriz de Offset fuera de límites.

De hecho, en el momento de escribir este artículo, el problema aún no se ha resuelto, así que primero solucionemos las ideas anteriores.

Según el tutorial en línea, primero verifique cuántas particiones tiene nuestro tema actualmente. El comando específico es el siguiente

Se encuentra que actualmente hay 6 particiones (0-5). . Al mismo tiempo, dado que Kafka tiene cuatro intermediarios, encontrará que cada partición tiene dos intermediarios que transportan datos, uno de los cuales es el líder.

En segundo lugar, observe el desplazamiento de compensación correspondiente en zookeeper. Lo extraño aquí es que solo puedo encontrar compensación en /brokers/topics/TEST_TOPIC/partitions/0 (0 se puede reemplazar con 1-5). En lugar de seguir el camino consumidor/grupo de consumidores como se dice en línea. También en la ruta anterior, veo que el valor es nulo, así que intente encontrar el desplazamiento correcto y reinícielo.

En este momento, hay dos formas de encontrarlo. La primera es mirar el directorio. Busque log.dirs en la configuración de Kafka y luego vaya a cada corredor para encontrar el directorio especificado por este parámetro. Tenga en cuenta que no todos los corredores tienen todos los datos de partición. Un corredor aquí básicamente tiene 3 particiones, ya sea como líder o como réplica. .

En realidad, es imposible saber cuál es el primero y cuál el último. En particular, no es coherente con el segundo método.

La segunda forma es utilizar comandos. A través del comando kafka-run-class, puede ejecutar algunas clases proporcionadas por Kafka para su administración.

Donde -2 es el valor mínimo y -1 es el valor máximo.

Algunos de los resultados de esta operación no son consistentes con el primer método.

Utilicé el segundo método para establecer el desplazamiento en zk, pero después de reiniciar el trabajo de hilo original, el problema aún no se resolvió.

(¡En cuanto se solucione lo actualizaremos lo antes posible o lo compartiremos en otro artículo!)