Кассандра: Ошибка потоковой передачи - несоответствие сжатых длин - PullRequest
0 голосов
/ 14 марта 2020

Я восстанавливаю снимок в Кассандре, используя sstableloader. Процесс загрузки sstable завершается с ошибкой для некоторых узлов кластера с ошибкой

Ошибка команды sstableloader:

Streaming to the following hosts failed:
[/10.x.x.x, /10.x.x.x, /10.x.x.x]
java.util.concurrent.ExecutionException: org.apache.cassandra.streaming.StreamException: Stream failed
        at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299)
        at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286)
        at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
        at org.apache.cassandra.tools.BulkLoader.load(BulkLoader.java:98)
        at org.apache.cassandra.tools.BulkLoader.main(BulkLoader.java:48)
Caused by: org.apache.cassandra.streaming.StreamException: Stream failed

Ошибка в журналах для одного неисправного узла:

 [Stream #bac90a-32] Streaming error occurred on session with peer 10.x.x.x
java.io.IOException: Compressed lengths mismatch
        at org.apache.cassandra.io.compress.LZ4Compressor.uncompress(LZ4Compressor.java:147) ~[apache-cassandra-3.11.4.jar:3.11.4]
        at org.apache.cassandra.streaming.compress.CompressedInputStream.decompress(CompressedInputStream.java:163) ~[apache-cassandra-3.11.4.jar:3.11.4]
        at org.apache.cassandra.streaming.compress.CompressedInputStream.decompressNextChunk(CompressedInputStream.java:109) ~[apache-cassandra-3.11.4.jar:3.11.4]
        at org.apache.cassandra.streaming.compress.CompressedInputStream.read(CompressedInputStream.java:121) ~[apache-cassandra-3.11.4.jar:3.11.4]

Что может быть причиной несоответствия длины?

1 Ответ

0 голосов
/ 23 марта 2020

Обычно это означает, что sstable, который был передан на узел, был поврежден. Вы можете попробовать запустить nodetool scrub на исходном узле и посмотреть, обнаружено ли какое-либо повреждение, просмотрев вывод scrub в system.log. После исправления повреждения исходного кода вы можете попытаться сделать снимок и загрузить его снова с помощью sstableloader.

Вы также можете попытаться определить, какой sstable из снимка поврежден, попытавшись запустить sstabledump для каждой таблицы. , Если вы получаете ту же ошибку при запуске sstabledump, вы знаете, что нашли поврежденный файл. Вы можете удалить этот файл и попробовать загрузить остальные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...