Cassandra 1.2: как получить реальную нагрузку на каждую виртуальную ноду

У меня есть кластер Cassandra 1.2, и я использую виртуальные узлы и ByteOrderedPartitioner. Я знаю, что это не рекомендуется, потому что мне нужно убедиться, что ключи данных равномерно распределены по пространству ключей, чтобы нагрузка на каждый физический узел была правильно распределена. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу найти способ увидеть фактическую нагрузку на каждый виртуальный узел. Если я использую nodetool следующим образом:

nodetool status

Я получаю вывод, подобный этому:

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address        Load       Tokens  Owns   Host ID                               Rack
UN  XXX.XXX.XXX.XXX 14.73 GB   256     11.3%  a4d365ca-f21b-4418-ab0e-656520d931b5  rack1
UN  XXX.XXX.XXX.XXX  8.51 GB   256     10.6%  f587fe0b-e765-4c02-bd50-cef9758e9a6b  rack1
UN  XXX.XXX.XXX.XXX 10.92 GB   256     10.3%  6160ca91-1e07-47ec-8fa9-ef886c140e91  rack1
UN  XXX.XXX.XXX.XXX  9.62 GB   256     10.0%  9c4a8476-1de2-455b-956a-c4cea31675bf  rack1
UN  XXX.XXX.XXX.XXX 11.11 GB   256     11.2%  61639d9c-ad49-4f38-86b3-cd48e0c90c49  rack1
UN  XXX.XXX.XXX.XXX  7.86 GB   256     35.1%  195b6f79-7d68-4a98-8a9b-55bd0dd699e2  rack1
UN  XXX.XXX.XXX.XXX 11.29 GB   256     11.4%  0ac03b6a-0a0e-4f83-8b9e-2f16d4db47ab  rack1

Это означает, что дистрибутив не так хорош, но я хочу увидеть фактический дистрибутив на виртуальных узлах, проблема, с которой я столкнулся, заключается в том, что работает:

nodetool ring

Дает мне много записей, по одной на каждый виртуальный узел (всего 256) в узле, на котором я запускаю команду, но информация почти бесполезна, потому что нагрузка выглядит одинаково для каждого виртуального узла (и фактический размер нереален по сравнению с общая информация о физическом узле)

XXX.XXX.XXX.XXX  rack1       Up     Normal  11.29 GB        11.45%              Token(bytes[2daad5a3e325e152d7be5bc2d5f87fef])
XXX.XXX.XXX.XXX  rack1       Up     Normal  11.29 GB        11.45%              Token(bytes[2ffef9060e59c1c922a1ecf8e2643794])
XXX.XXX.XXX.XXX  rack1       Up     Normal  11.29 GB        11.45%              Token(bytes[31041cc591d63d91a67a21ecf44a57c2])
XXX.XXX.XXX.XXX  rack1       Up     Normal  11.29 GB        11.45%              Token(bytes[31bbcaafcdcb2ecc3a4ef3fb3af4b82b])
XXX.XXX.XXX.XXX  rack1       Up     Normal  11.29 GB        11.45%              Token(bytes[324e972b43b63d63df4255e459fed524])
XXX.XXX.XXX.XXX  rack1       Up     Normal  11.29 GB        11.45%              Token(bytes[3353224ae20e902e5b2b243c8fc5ff97])
XXX.XXX.XXX.XXX  rack1       Up     Normal  11.29 GB        11.45%              Token(bytes[350ed29fa9a1a377b8014beef1d160f0])
XXX.XXX.XXX.XXX  rack1       Up     Normal  11.29 GB        11.45%              Token(bytes[3553ad83beaf91d98a692e22718e321d])
XXX.XXX.XXX.XXX  rack1       Up     Normal  11.29 GB        11.45%              Token(bytes[35893a82c84982c467251115a7406f00])
XXX.XXX.XXX.XXX  rack1       Up     Normal  11.29 GB        11.45%              Token(bytes[37fad1c7dbd8d66d75747699ce4d6d2e])
XXX.XXX.XXX.XXX  rack1       Up     Normal  11.29 GB        11.45%              Token(bytes[388bcf470bd5c97e1f3cb45c01bd1f2c])
XXX.XXX.XXX.XXX  rack1       Up     Normal  11.29 GB        11.45%              Token(bytes[38a0cdc654a9934e5a16e5242c26fc5f])
XXX.XXX.XXX.XXX  rack1       Up     Normal  11.29 GB        11.45%              Token(bytes[393b8185b527f036cd44f5f6791484b9])
XXX.XXX.XXX.XXX  rack1       Up     Normal  11.29 GB        11.45%              Token(bytes[39ae4356a22bbb5ea20d5c6fc83cd2de])
XXX.XXX.XXX.XXX  rack1       Up     Normal  11.29 GB        11.45%              Token(bytes[39dd01bb66beeeb46627f0303671c30d])
XXX.XXX.XXX.XXX  rack1       Up     Normal  11.29 GB        11.45%              Token(bytes[3a49f707a7cea045935524900094c4e4])
XXX.XXX.XXX.XXX  rack1       Up     Normal  11.29 GB        11.45%              Token(bytes[3a58eba6a5730a75fd899cf77c93d6cb])

Мой вопрос: есть ли другой инструмент/способ получения реальной нагрузки на каждый виртуальный узел в кластере Cassandra?

Заранее спасибо!


person Sergio Ayestarán    schedule 07.06.2013    source источник
comment
Похоже, вы хотите использовать RandomPartitioner. Это дает вам даже распределение ключей. Вы выбрали токены вручную? Выбор случайных токенов, который используется по умолчанию для виртуальных узлов, в целом не дает хорошего распределения для ByteOrderedPartitioner.   -  person Richard    schedule 08.06.2013


Ответы (2)


Когда вы запускаете nodetool ring без пространства ключей, он проверяет нагрузку на основе SimpleStrategy для репликации. Если ваши токены правильно распределены для NetworkTopologyStrategy, это будет выглядеть «отключено».

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

Если вы используете NetworkTopologyStrategy, nodetool ring <keyspace> будет учитывать расположение центра обработки данных и стойки, чтобы определить распределение токенов и предоставить вам точное значение нагрузки.

person David Webb    schedule 23.05.2014

Вы пробовали с Cassandra OpsCenter? http://www.datastax.com/what-we-offer/products-services/datastax-opscenter

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

person user2399923    schedule 17.09.2013