Назад | Перейти на главную страницу

настройка cassandra - неравномерная нагрузка - что я сделал не так?

Для понимания я установил кластер из 4 узлов, используя последнюю / лучшую (выпущенную) версию Cassandra. Четыре узла были запущены последовательно с использованием почти полностью стандартных настроек и, похоже, обмениваются данными правильно.

Затем я создал следующую схему:

CREATE KEYSPACE first WITH replication = {
  'class': 'SimpleStrategy',
  'replication_factor': '1'
};

Создайте простую таблицу с 5 столбцами и добавьте ~ 100 тыс. Строк данных. Все хорошо. Данные доступны от каждого клиента, поэтому я думаю, что они распределены равномерно.

Итак, я изучаю стратегию резервного копирования и начинаю возиться со снимками и так далее. После запуска nodetool snapshot на каждой машине я хочу знать, что она создала. Я подхожу к первой машине и смотрю / var / lib / cassandra / data / первый и увидите, что там пусто. Хм .. вторая машина .. то же самое .. третья .. наконец, на 4-й машине я вижу файлы в папке данных и каталог моментальных снимков.

Бег nodetool ring показывает, что каждая система владеет примерно 25%, но грузить сильно предвзято относится к одной системе, которая (кажется) получила все данные.

Все ли данные действительно на этой машине? Какой шаг я пропустил в настройке?

Кассандра назначает диапазон токенов каждому узлу в кластере.

Поскольку в вашей конфигурации 4 узла, каждому узлу назначается 25% токенов.

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

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

Подробнее смотрите веб-сайт datastax, объясняющий разделение.