Кассандра многоцелевой производительности - PullRequest
3 голосов
/ 21 апреля 2011

У меня есть кластер кассандры с довольно небольшим количеством рядов (около 2 миллионов, что, я надеюсь, «мало» для кассандры). Каждая строка имеет уникальный UUID, и каждая строка имеет около 200 столбцов (несколько или несколько). В целом это довольно маленькие строки, без двоичных данных или большого количества текста. Просто короткие строки.

Я только что закончил начальный импорт в кластер кассандры из нашей старой базы данных. Я чертовски настроил Кассандру на каждой машине. Были сотни миллионов записей, но не чтения. Теперь, когда пришло время ИСПОЛЬЗОВАТЬ эту вещь, я обнаружил, что скорость чтения абсолютно мрачна. Я делаю multiget, используя pycassa в любом месте от 500 до 10000 строк одновременно. Даже при 500 строках производительность ужасная, иногда занимает более 30 секунд.

Что может вызвать такой тип поведения? Какие вещи вы бы порекомендовали после такого большого импорта? Спасибо.

Ответы [ 2 ]

6 голосов
/ 22 апреля 2011

Звучит так, словно у тебя узкое место.Кассандра делает около 4000 операций чтения / с на ядро, ЕСЛИ ваши данные помещаются в оперативную память.В противном случае вы будете привязаны к поиску, как и все остальное.

Я отмечаю, что обычно "настройка ада" из системы зарезервирована для ПОСЛЕ того, как вы начнете загружать ее.:)

См .:

2 голосов
/ 22 апреля 2011

Есть ли возможность разделить мультиблок на более мелкие куски? Сделав это, вы сможете распределить ваши результаты по нескольким узлам и потенциально увеличить свою производительность, как за счет распределения нагрузки между узлами, так и меньших пакетов для десериализации.

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

...