Кассандра 3 Ремонт никогда не заканчивается
У нас есть кластер с 6 узлами в центрах обработки данных (по 3 узла в каждом). Мы начинаем ремонт на одном узле, и вскоре после этого мы можем найти что-то подобное в журналах:
ERROR [Repair#1:1] 2016-05-31 01:33:28,075 CassandraDaemon.java:195 - Exception in thread Thread[Repair#1:1,5,RMI Runtime]
com.google.common.util.concurrent.UncheckedExecutionException: org.apache.cassandra.exceptions.RepairException: [repair #e8e21070-26be-11e6-aae8-77b20cefeee5 on ..... Validation failed in /xx.xxx.xx.xx
at com.google.common.util.concurrent.Futures.wrapAndThrowUnchecked(Futures.java:1525) ~[guava-18.0.jar:na]
at com.google.common.util.concurrent.Futures.getUnchecked(Futures.java:1511) ~[guava-18.0.jar:na]
at org.apache.cassandra.repair.RepairJob.run(RepairJob.java:162) ~[apache-cassandra-3.0.4.jar:3.0.4]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_77]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_77]
at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_77]
После слов ничего не происходит больше. Мы не прерывали ремонт на несколько дней, но все равно ничего не происходит. Мы также попробовали это на двух разных кластерах с одинаковым результатом.
После поиска в Интернете мы наткнулись на https://support.datastax.com/hc/en-us/articles/205256895--Validation-failed-when-running-a-nodetool-repair. Это говорит о том, что мы должны запустить "nodetool scrub", и если это не поможет "sstablescrub".
Мы попробовали очистку nodetool, но восстановление все равно не работает. Теперь мы запустили sstablescrub, но, похоже, это займет вечность. Он использует только один процессор на 100%, и файл данных и индексов растет, но теперь он работает более суток, а размер файла теперь составляет всего 1,2 ГБ.
Это нормально, что "sstablescrub" такой медленный?
Кластер уже работает в течение некоторого времени, и мы пропустили GCGraceSeconds для ремонта. Может ли это привести к неработающему ремонту?
В настоящее время мы не знаем, как запустить ремонт в надежде, что кто-то может помочь.
1 ответ
Что указывает исключение, так это то, что узел не смог получить результаты вычислений дерева меркла, которые должны были произойти на /xx.xxx.xx.xx
, Пожалуйста, проверьте журналы для этого узла. Узел, с которого вы запустили процесс восстановления, работает нормально и не требует sstable scrubbing.