Есть ли какая-либо команда или какой-либо способ узнать, какие данные хранятся на каких узлах Кассандры?Какой узел хранит данные Cassandra?
Im довольно новый для Кассандры, и у меня не было много удачи в этом вопросе.
Спасибо!
Есть ли какая-либо команда или какой-либо способ узнать, какие данные хранятся на каких узлах Кассандры?Какой узел хранит данные Cassandra?
Im довольно новый для Кассандры, и у меня не было много удачи в этом вопросе.
Спасибо!
Вы можете получить Cassandra, чтобы сказать вам, какой узел (s) конкретный ключ на с nodetool getendpoints ,
$ nodetool getendpoints mykeyspace tbl '8546200'
192.168.73.188
192.168.73.190
Я не знаю, если это то, что вы ищете или нет. AFAIK не существует способа вывести запрос на ответственные узлы для всех строк в таблице или в пространстве ключей. Но, как заметил Блейк, ваше приложение действительно не должно беспокоиться об этом.
Если вы действительно хотите узнать, вы можете запросить свою таблицу с помощью функции token
на вашем ключе ключа. Вот пример использования схемы Блейка:
SELECT token(partition_key),partition_key FROM tbl;
Это будет список хеш-маркеров с вашими ключами разделов. Затем вы можете запустить nodetool ring
, чтобы перечислять диапазоны токенов для каждого узла и видеть, какие узлы несут ответственность за этот диапазон. Обратите внимание: если вы используете vNodes, ваш вывод будет довольно большим (по умолчанию 256 строк для каждого).
Кассандра использует последовательное хеширование ключа раздела раздела, чтобы определить, где хранятся данные. Токены назначаются узлам, а согласованный хэш ключа раздела определяет, какие узлы (ы) будут хранить строку.
ключ Partition является первой частью первичного ключа в вашем определении таблицы или вложенных скобок
CREATE TABLE tbl (
partition_key INT,
clus_key TEXT,
...,
PRIMARY KEY((partition_key), clus_key);
Некоторое чтение here на кольце и последовательного хеширования. Вероятно, вы используете vNodes, поэтому я тоже немного читал здесь.
Во время запроса вам не нужно беспокоиться о том, что у узла есть что. Ваш драйвер C * выберет узел координатора из списка, который найдет строки на основе вашего запроса.
Если вы хотите, чтобы увидеть подробности о том, что запрос делает в CQLSH, попробуйте включить трассировку:
> TRACING ON;
> SELECT * FROM table;
> Tracing session: 1f6b4440-050f-11e5-ba41-672ef88f159d
> ....
> <Details about the query>
> ....
Спасибо за быстрый ответ! Кольцо и последовательное хеширование имеют смысл, но есть способ увидеть все это за сценой. В частности, есть ли способ узнать, какие хеш-диапазоны назначаются каждому узлу, и что hashvalue получается из ключа раздела (чтобы узнать, какие данные хранятся на каком узле)? – user3376961
Ответ на этот вопрос Брайза: nodetool getendpoints
Спасибо! Это именно то, что я искал – user3376961