Я проверяю производительность Кассандры в чтении. На этапе тестовой настройки я создал кластер с 1/2/4 экземплярами ec2 и узлами данных. Я написал 1 таблицу со 100 миллионами записей (CSV-файл ~ 3 ГБ). Затем я запускаю приложение Spark, которое считывает данные в RDD с помощью коннектора spark-cassandra.
Однако я подумал, что поведение должно быть следующим: чем больше экземпляров использует Cassandra (такое же количество экземпляров в Spark), тем быстрее чтение! С записью вроде все правильно (~в 2 раза быстрее, если кластер в 2 раза больше).
Но: в моем тесте чтение всегда быстрее с кластером с 1 экземпляром, чем с кластером с 2 или 4 экземплярами!!!
Мои результаты тестов:
Размер кластера 4: запись: 1750 секунд / чтение: 360 секунд
Размер кластера 2: запись: 3446 секунд / чтение: 420 секунд
Размер кластера 1: запись: 7595 секунд / чтение: 284 секунды
ДОПОЛНИТЕЛЬНАЯ ПОПРОБУЙТЕ С ИНСТРУМЕНТОМ CASSANDRA-STRESS
Я запустил инструмент «cassandra-stress» на кластере Cassandra (размер узла 1/2/3/4) со следующими результатами:
Clustersize Threads Ops/sek Time
1 4 10146 30,1
8 15612 30,1
16 20037 30,2
24 24483 30,2
121 43403 30,5
913 50933 31,7
2 4 8588 30,1
8 15849 30,1
16 24221 30,2
24 29031 30,2
121 59151 30,5
913 73342 31,8
3 4 7984 30,1
8 15263 30,1
16 25649 30,2
24 31110 30,2
121 58739 30,6
913 75867 31,8
4 4 7463 30,1
8 14515 30,1
16 25783 30,3
24 31128 31,1
121 62663 30,9
913 80656 32,4
Результаты: с 4 или 8 потоками кластер с одним узлом работает так же или даже быстрее, чем более крупные кластеры!!!
Результаты в виде диаграммы:
Наборы данных — это размеры кластера (1/2/3/4), по оси X — потоки, а по оси Y — операции в секунду.
--> Вопрос здесь: являются ли эти результаты результатами для всего кластера или это тест для локального узла (и, следовательно, результат только одного экземпляра кольца)???
Может кто-нибудь дать объяснение? Спасибо!