java - La descarga programática de datos a cassandra cada vez que se cierre la cassandra
hector (4)
Estoy usando incrustado Cassandra. Cuando apago y reinicio mis datos de servicio Cassandra se pierden. Pienso que los datos decentes no se han introducido correctamente en el disco. Así que intenté usar nodetool para vaciar los datos manualmente y comprobar si los datos están disponibles. Pero nodetool no parece funcionar correctamente para el servicio Cassandra integrado. Obtuve el siguiente error:
c:/vijay/cassandra/bin>nodetool -host 192.168.2.86 -p 7199 drain
Starting NodeTool
Failed to connect to ''192.168.2.86:7199'': Connection refused: connect
Intenté establecer las propiedades jmx todavía estoy recibiendo un error. Agregué las siguientes líneas a mi código:
System.setProperty("com.sun.management.jmxremote", "true");
System.setProperty("com.sun.management.jmxremote.port", "7197");
System.setProperty("com.sun.management.jmxremote.authenticate", "false");
System.setProperty("com.sun.management.jmxremote.ssl", "false");
System.setProperty("java.rmi.server.hostname", "my ip");
Entonces, ¿hay alguna forma de vaciar manualmente los datos a Cassandra sin usar nodetool?
Edición 1:
Después de horas de intentarlo, ahora puedo ejecutar nodetool (en lugar de agregar configuraciones jmx al código que agregué a las configuraciones de depuración de Eclipse y funcionó). Ejecuté el comando de drenaje ahora que los datos se han vaciado correctamente en el disco. Así que ahora mi pregunta es: ¿por qué los datos no se eliminan correctamente? Cada vez que reinicio el servicio de Cassandra, los cambios recientes desaparecen.
¿Cómo estás deteniendo e iniciando el servidor Cassandra? La llamada a stopServer en el daemon de Cassandra debe vaciar cualquier escritura pendiente en el registro de confirmación. El subproceso continuará procesando incluso después de que se devuelva el método, por lo que si está eliminando la JVM después de detener Servidor (), es posible que esté evitando que se escriban los datos.
Lo más probable es que debido a su configuración de commitlog. Si está utilizando el modo periódico, intente reducir la ventana de sincronización o su lote de uso. Lote hará escrituras un poco más lentas.
https://github.com/apache/cassandra/blob/trunk/conf/cassandra.yaml#L231
Los commitlogs no se eliminan correctamente en las versiones 1.0.0 a 1.1.4 de cassandra. Este es un problema abierto. Por favor, consulte el siguiente boleto de jira.
Puede ser que se emita un color, pero está fallando. El lavado debe registrarse en los registros. Verifique que no esté enjuagando. Si está enjuagando y está fallando, debería haber alguna indicación de por qué falló el enjuague.