架构师_程序员_码农网

N Recuperar contraseña
Registrarse

QQ登录

Sólo un paso para empezar

Buscar en
Vista:7649|Repuesta: 1
打印 上一主题 下一主题

Kafka sistema Windows funcionando durante un periodo de tiempo se cuelga solución

[ copiar enlace]
A 跳转到指定楼层
propietario
发表于 2021-7-12 10:57:01|只看该作者回帖奖励|Navegar hacia atrás |Modo de lectura
1: Antecedentes

Antes de la utilización de kafka se encuentran en el entorno Linux, no hay ningún problema con kafka en sí. Sin embargo, un proyecto en el que estamos trabajando actualmente necesita ser compatible con Window y Linux, y cuando usamos Kafka en entorno Window, encontramos que el propio kafka no es tan compatible con Window como lo es con Linux.

2: Problemas

Al probar kafka bajo Window, encontré que kafka tenía un error después de haber estado en línea durante un tiempo:

Otro programa está utilizando el archivo y el proceso no puede acceder a él.
Las siguientes soluciones no resuelven completamente el problema y no son recomendables

Windows Kafka ERROR Failed to clean up log for __consumer_offsets
h ttps:// www.itsvse.com/thread-9980-1-1.html




[2021-07-06 09:06:10,800] ERROR No se ha podido limpiar el registro de __consumer_offsets-42 en el directorio C:\tmp\kafka-logs debido a una IOException (kafka.server. LogDirFailureChannel)
java.nio.file.FileSystemException: C:\tmp\kafka-logs\__consumer_offsets-42\000000000000000000000000.timeindex.cleaned ->
C:\tmp\kafka-logs\__consumer_offsets-42\000000000000000000000000.timeindex.swap: Este archivo está siendo utilizado por otra aplicación y es inaccesible para el proceso.

at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
at sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:387)
at sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:287)
at java.nio.file.Files.move(Files.java:1395)
at org.apache.kafka.common.utils.Utils.atomicMoveWithFallback(Utils.java:904)
at kafka.log.AbstractIndex.renameTo(AbstractIndex.scala:210)
at kafka.log.LazyIndex$IndexValue.renameTo(LazyIndex.scala:155)
at kafka.log.LazyIndex.$anonfun$renameTo$1(LazyIndex.scala:79)
at kafka.log.LazyIndex.renameTo(LazyIndex.scala:79)
at kafka.log.LogSegment.changeFileSuffixes(LogSegment.scala:496)
at kafka.log.Log.$anonfun$replaceSegments$4(Log.scala:2402)
at kafka.log.Log.$anonfun$replaceSegments$4$adapted(Log.scala:2402)
at scala.collection.immutable.List.foreach(List.scala:333)
at kafka.log.Log.replaceSegments(Log.scala:2402)
at kafka.log.Cleaner.cleanSegments(LogCleaner.scala:613)
at kafka.log.Cleaner.$anonfun$doClean$6(LogCleaner.scala:538)
at kafka.log.Cleaner.$anonfun$doClean$6$adapted(LogCleaner.scala:537)
at scala.collection.immutable.List.foreach(List.scala:333)
at kafka.log.Cleaner.doClean(LogCleaner.scala:537)
at kafka.log.Cleaner.clean(LogCleaner.scala:511)
at kafka.log.LogCleaner$CleanerThread.cleanLog(LogCleaner.scala:380)
at kafka.log.LogCleaner$CleanerThread.cleanFilthiestLog(LogCleaner.scala:352)
at kafka.log.LogCleaner$CleanerThread.tryCleanFilthiestLog(LogCleaner.scala:332)
at kafka.log.LogCleaner$CleanerThread.doWork(LogCleaner.scala:321)
at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:96)
Suprimido: java.nio.file.FileSystemException: C:\tmp\kafka-logs\__consumer_offsets-42\ 00000000000000000000.timeindex.cleaned -> C:\tmp\kafka-logs\__consumer_offsets-42\000000000000000000000000000000.timeindex.swap: Another process is using this El archivo está siendo utilizado por otro programa y el proceso no puede acceder a él.

at sun.nio.fs.WindowsException.translateToIOException(WindowsException. java:86)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException. java:97)
at sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:301)
at sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider. java:287)
at java.nio.file.Files.move(Files.java:1395)
at org.apache.kafka.common.utils.Utils.atomicMoveWithFallback(Utils. java:901)
... 20 más

3: Causa.

La política de limpieza de logs de kafka está provocada porque en un entorno de ventanas no se permite renombrar el fichero mientras se abre el log a limpiar (sí se permite en un entorno linux), lo que provoca caídas de kafka.

La solución más común en Internet es "vaciar el archivo de registro de kafka y luego reiniciar kafka", lo que obviamente no es realista en el entorno de producción. Así que al principio se me ocurrieron las siguientes dos soluciones para la situación:

Opción 1: Modificar la estrategia de limpieza de logs, modificar el tiempo de limpieza de logs a infinito (-1), para que los logs de datos de kafka se almacenen permanentemente.
Inconvenientes: (1) el espacio en disco seguirá aumentando
Opción 2: construir una máquina virtual en la ventana (Docker es el mismo, y más problemas), y luego desplegado en la máquina virtual kafka
Desventajas: (1) el personal de operación y mantenimiento necesita saber un poco de linux conocimientos de operación y mantenimiento (2) aumentar el consumo de memoria

Obviamente, los inconvenientes de ambas opciones eran demasiado para mí, así que dirigí mi atención a la comunidad kafka en busca de ayuda.

Haz clic aquí para adorar a los dioses de la exploración: https: //github.com/apache/kafka/pull/6329

Por lo que he podido ver, resulta que este problema con kafka bajo ventana no es tan fácil como uno podría pensar, y no hay ninguna solución oficial hasta el momento. En otras palabras (¡no usen kafka bajo window!)

Opción 3: Sin embargo, aún así, la demanda de utilizar kafka bajo ventana sigue existiendo, por lo que todavía hay un montón de dioses que se preocupan y proponen algunas soluciones. Hay un dios para este problema de kafka código fuente para el desarrollo secundario. Después de las pruebas, su solución bajo la ventana resuelve el problema, haciendo kafka se puede utilizar bajo la ventana. Pero para esta solución, kafka colaborador dijo que puede no ser demasiado seguro (es decir, no puede integrar el parche en el oficial).

4: solución (la cola ha proporcionado compilado paquete kafka enlace de descarga)
Aunque kafka oficial dijo que el parche no es muy seguro, pero el funcionario hasta el momento y no hizo nada. La necesidad es real, así que después de algunas consideraciones, voy a ir con la opción 3 y resolver el problema de una vez por todas, por lo que a continuación vamos a parchear en el parche y volver a compilar kafka.

4.1: Descargar la versión del parche de kafka

Descarga la versión del parche de kafka desde este autor

h ttps:// github.com/apache/kafka/tree/0baf9c158b5681a55df4de3a0e6193d32b1433ff

4.2: Compilar la versión del parche de kafka
Dado que la compilación de kafka se realiza a través de gradle, es necesario configurar gradle primero.

Sobre cómo configurar gradle puedes consultar este artículo (reproducido, infracción que se suprime) en Instalación y configuración de gradle en Windows: https: //blog.csdn.net/zhaokai0130/article/details/81008719

Sobre cómo compilar kafka, puede referirse a github ------ cómo utilizar gradle compilar kafka: https: //github.com/apache/kafka/tree/0baf9c158b5681a55df4de3a0e6193d32b1433ff

Después de compilar, puedes obtener un paquete kafka que puede ser usado bajo window.

En el espíritu del concepto "copiar-pegar" (después de todo, compilar el código fuente sigue consumiendo bastante tiempo), aquí tienes un enlace de descarga del paquete kafka compilado, descárgalo y úsalo directamente.

kafka_2.12-2.3.0_window downtime version dirección de descarga:

h ttps:// down.itsvse.com/item/nzraqz.html

Enlace original: https: //blog.csdn.net/chengtanyong4777/article/details/102542326







Previous:MySQL comentarios de tabla de base de datos de consulta.
Next :[Informe]Resumen de servidor sql en tablas particionadas.
La primera vez que vi esto, pude tener una buena idea de lo que me estaba metiendo, y pude tener una buena idea de lo que me estaba metiendo.
gaomanxiang,gaomanxiang
发表于 2021-7-12 21:16:33|只看该作者
no han jugado el jefe del foro tan profundo culto
El código agricultor red, sólo se publica en el proceso de la práctica, se encontró con dificultades técnicas, no engañar a los demás.
Tienes que iniciar sesión antes de poder volver a publicar Iniciar sesión | Registrarse

E sta versión de las normas integrales


DESCARGO DE RESPONSABILIDAD: Todo el software, materiales de programación o artículos publicados por Code Farmer se limitan a ser utilizados únicamente para fines de aprendizaje e investigación; los contenidos anteriores no podrán ser utilizados con fines comerciales o ilegales, de lo contrario, todas las consecuencias serán asumidas por los propios usuarios. Esta información del sitio de la red, disputa de derechos de autor no tiene nada que ver con este sitio. Debe eliminar completamente el contenido anterior de su ordenador en las 24 horas siguientes a la descarga. Si le gusta el programa, por favor apoye el software genuino, compre el registro y obtenga un mejor servicio genuino. Si se produce alguna infracción, póngase en contacto con nosotros por correo electrónico para solucionarla.

Correo To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Sitemap

GMT+8, 2024-9-19 02:00

Respuesta rápidaVolver arribaVolver a la lista