2015-07-06 2 views
1

Мы смоделировали наши данные в таблице cassandra с ключом раздела, скажем, «pk». У нас есть 100 уникальных значений для pk, а размер нашего кластера - 160. Мы используем случайный разделитель. Когда мы добавляем данные в Cassandra (с коэффициентом репликации 3) для всех 100 разделов, я заметил, что эти 100 разделов распределены равномерно. Один узел имеет до 7 разделов, а множество узлов имеет только 1 или никакой раздел. Учитывая, что мы используем случайный разделитель, я ожидал, что распределение будет достаточно четным. Поскольку 7 разделов находятся в одном узле, это создает для нас горячий раздел. Есть ли лучший способ распределить разделы поровну?Как добиться равномерного распределения ключей разделов в Cassandra

Любой ввод оценивается.

Благодаря

ответ

2

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

Если у вас 160 узлов, то только 100 возможных значений для вашего ключа разделов означают, что вы не используете все 160 узлов эффективно. Четное распределение данных происходит от ввода большого количества данных с помощью ключа раздела с большой мощностью.

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

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

+1

Спасибо Джим за ваши комментарии. Таким образом, мы разработали ключ раздела для причины транзакций. Все записи для строк в данном разделе должны быть транзакционными. Даже я думал, что это может быть из-за низкой мощности, но не ожидал, что это будет настолько неравномерно. У меня есть 100 pk, но 3 фактора репликации, поэтому в общей сложности 300 экземпляров и только 110 узлов имеют данные. Я в порядке, даже если данные не распределяются равномерно, но моя главная проблема - узлы со слишком большим количеством разделов. Даже если есть способ ограничить количество разделов на узел, что бы решить нашу проблему. – ppeddi

Смежные вопросы