Я тестирую Cassandra в кластере из 3 узлов в облаке Google и пытаюсь увидеть распределение владения диапазонами между узлами (у меня RF = 3 для тестового пространства ключей). Я пробовал как CQL описать кластер, так и Nodetool describecluster, но ни один из них не показывает также диапазоны (только версии snitch, partitioner и schema). Запуск cqlsh 5.0.1 | Cassandra 3.9 | Спецификация CQL 3.4.2. Есть идеи, как мне найти эту информацию или почему эти команды не отображают их? Может быть, из-за настройки кластера? Спасибо.
cassandra nodetool / cqlsh описывает кластер
Ответы (2)
Из CQL вы можете запросить system.local
таблицу. Эта таблица существует на каждом узле, содержит только одну строку и содержит данные, относящиеся к самому узлу. Столбец tokens
содержит те же данные, что и возвращаемые командой nodetool ring
:
> SELECT tokens FROM system.local ;
tokens
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
{'-1221474524472000659', '-2679404716758606376', '-9167452864191410895', '-9208108764127114640', '1685199701625160019', '1767371464207122869', '5004977198676178684', '5337137237744686089', '6630117681615088706', '7106607077939671384', '7512974951531203644', '8229478807809310370'}
(1 rows)
Обратите внимание, что запрос tokens
через system.local
возвращает только диапазоны токенов для текущего узла. Чтобы увидеть их для другого узла в кластере, вы можете запросить столбец tokens
в таблице system.peers
, где они привязаны к IP-адресу (peer
).
> SELECT tokens FROM system.peers WHERE peer='192.168.6.114';
tokens
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
{'-4094626707569673185', '-5633637686310353556', '-6167080457205238021', '-6475599470116582717', '-6726897113409283403', '-7185540759553541576', '-7282762652579832116', '-7740824590733013501', '-8045274855112430621', '2064433256459654945', '667061811731435593', '7079292008020861651'}
(1 rows)
person
Aaron
schedule
06.12.2016
Спасибо, Аарон, есть ли шанс увидеть распределение диапазонов по семействам столбцов?
- person Vcrisan; 07.12.2016
@Vcrisan Диапазоны устанавливаются узлом и будут одинаковыми для всех таблиц (семейств столбцов) с данными на этом узле. Вот почему такие вещи, как зарегистрированные атомные пакеты, работают в разных таблицах, потому что ключи разделов хешируются одинаково, независимо от того, в какой таблице они находятся.
- person Aaron; 07.12.2016
можешь попробовать nodetool ring
Столбец токенов показывает конец диапазона токенов до указанного значения включительно.
Прочтите здесь https://docs.datastax.com/en/cassandra/2.1/cassandra/tools/toolsRing.html
person
root
schedule
06.12.2016