У меня есть кластер 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?
Заранее спасибо!