cassandra - La mutación de 17076203 bytes es demasiado grande para el tamaño máximo de 16777216
datastax kairosdb (2)
Estás viendo el parámetro correcto en tu .yaml. El tamaño de escritura máximo que C * permitirá es la mitad de commit_log_segment_size_in_mb, el valor predeterminado es 32mb, por lo que el tamaño máximo predeterminado será de 16mb.
Fondo
commit_log_segment_size_in_mb representa el tamaño de bloque para el archivo de registro de confirmación o la copia de seguridad puntual. Estos solo están activos si ha configurado archive_command o restore_command en su archivo commitlog_archiving.properties.
Tengo "commitlog_segment_size_in_mb: 32" en la configuración de cassandra pero el siguiente error indica que el tamaño máximo es 16777216, que es aproximadamente 16mb. ¿Estoy buscando la configuración correcta para corregir el error a continuación?
Me refiero a esta configuración basada en la sugerencia proporcionada en http://mail-archives.apache.org/mod_mbox/cassandra-user/201406.mbox/%[email protected]%3E
Estoy usando 2.1.0-2 para Cassandra.
Estoy usando Kairosdb, y el tamaño máximo del buffer de escritura es 0.5Mb.
WARN [SharedPool-Worker-1] 2014-10-22 17:31:03,163 AbstractTracingAwareExecutorService.java:167 - Uncaught exception on thread Thread[SharedPool-Worker-1,5,main]: {}
java.lang.IllegalArgumentException: Mutation of 17076203 bytes is too large for the maxiumum size of 16777216
at org.apache.cassandra.db.commitlog.CommitLog.add(CommitLog.java:216) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.db.commitlog.CommitLog.add(CommitLog.java:203) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:371) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:351) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.db.Mutation.apply(Mutation.java:214) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.db.MutationVerbHandler.doVerb(MutationVerbHandler.java:54) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:62) ~[apache-cassandra-2.1.0.jar:2.1.0]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) ~[na:1.7.0_67]
at org.apache.cassandra.concurrent.AbstractTracingAwareExecutorService$FutureTask.run(AbstractTracingAwareExecutorService.java:163) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:103) [apache-cassandra-2.1.0.jar:2.1.0]
at java.lang.Thread.run(Thread.java:745) [na:1.7.0_67]
Es la configuración correcta. Esto significa que Cassandra descartará esta escritura ya que excede el 50% del tamaño del segmento de registro de confirmación configurado. Así que establezca el parámetro commitlog_segment_size_in_mb: 64 en Cassandra.yaml de cada nodo en el clúster y reinicie cada nodo para que tengan efecto los cambios.
Causa: por intención de diseño, el tamaño de segmento máximo permitido es 50% del commit_log_segment_size_in_mb configurado. Esto es así, Cassandra evita escribir segmentos con grandes cantidades de espacio vacío.
Elaborar; hasta dos segmentos de 32MB se ajustarán a 64MB, sin embargo, 40MB solo se ajustarán una vez dejando una mayor cantidad de espacio no utilizado.
enlace de referencia de datastax: