почему некоторые узлы моего кластера кассандры постоянно увеличиваются в размерах? - PullRequest
0 голосов
/ 01 мая 2019

У меня кластер из 48 узлов C * (3.11.4), распределенный по 4 регионам AWS с RF = 3.Несколько месяцев назад я начал замечать, что использование дисков на некоторых узлах постоянно увеличивается.Сначала я решил проблему, уничтожив узлы и восстановив их, но проблема возвращается.

Недавно я провел еще несколько исследований, и вот что я нашел:
- Я сузил проблему доCF, который использует TWCS (и все записанные строки имеют ttl), просто глядя на использование дискового пространства
- в каждом регионе, 3 узла имеют эту проблему увеличения дискового пространства (соответствует коэффициенту репликации)
- на каждом узлеЯ отследил проблему до конкретного SSTable, используя sstableexpiredblockers.Этот SSTable блокирует очистку всех других SSTable
- в SSTable, используя sstabledump, я нашел строку, которая не имеет ttl, как другие строки, и, кажется, принадлежит кому-то другомукоманда проверяет что-то и забывает включить ttl
- все остальные строки показывают «expired: true», кроме этой, поэтому я подозреваю
- когда я запрашиваю этот конкретный ключ раздела, я не получаю результатов
- Я попытался удалить строку в любом случае, но это, похоже, ничего не изменило
- Я также попытался nodetool scrub, но это тоже не помогло

Будет ли эта мошенническая строка без ttl объяснитьпроблема?Если так, то почему?Если нет, у кого-нибудь есть другие идеи?Почему строка отображается в sstabledump, а не при запросе?

Я ценю любую помощь или предложения!

Ответы [ 2 ]

1 голос
/ 01 мая 2019

Одной из возможных причин является определение вашей схемы, а точнее - ключа раздела, поскольку у вас может быть большая часть записей, которые назначены нескольким токенам, это условие известно как «горячие точки».

Например, давайте представим, что в вашей таблице есть информация об автомобилях, а токен вашего раздела - это страна, в которой он расположен, узлы, которые назначены для хранения данных об автомобилях из США или Германии, будут иметь больший объем данных. по сравнению с теми, которые имеют токены для автомобилей в Бангладеш или Пакистане

Возможно, вы захотите использовать составной ключ разделения, стремясь к равномерному распределению фрагментов ваших данных.

0 голосов
/ 03 мая 2019

Мне удалось решить проблему, выполнив серьезное уплотнение CF.

Вот мое понимание того, почему это сработало:

  • TWCS хранит данные во временных окнах, и когда срок действия всех данных истекает в sstable, он удаляет весь файл. TWCS не будет компактировать sstables в разных временных окнах

  • запись данных без ttl означает, что вы не можете удалить sstable, потому что у него есть некоторые данные, срок действия которых не истек. даже удаления этого недостаточно, потому что удаление строки создает надгробие только в другом sstable

  • Кассандра будет автоматически выполнять незначительные сжатия только из соображений производительности, поэтому в этом случае она никогда не сможет сжимать мертвые данные

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