cassandra nodetool / cqlsh описывает кластер

Я тестирую Cassandra в кластере из 3 узлов в облаке Google и пытаюсь увидеть распределение владения диапазонами между узлами (у меня RF = 3 для тестового пространства ключей). Я пробовал как CQL описать кластер, так и Nodetool describecluster, но ни один из них не показывает также диапазоны (только версии snitch, partitioner и schema). Запуск cqlsh 5.0.1 | Cassandra 3.9 | Спецификация CQL 3.4.2. Есть идеи, как мне найти эту информацию или почему эти команды не отображают их? Может быть, из-за настройки кластера? Спасибо.


person Vcrisan    schedule 06.12.2016    source источник


Ответы (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
comment
Спасибо, Аарон, есть ли шанс увидеть распределение диапазонов по семействам столбцов? - person Vcrisan; 07.12.2016
comment
@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