secon.Посиделки #16: cassandra (презентация)
TRANSCRIPT
![Page 1: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/1.jpg)
Cassandra архитектура кластера и особенности использования
@dmitry_desu @clslrns
![Page 2: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/2.jpg)
![Page 3: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/3.jpg)
![Page 4: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/4.jpg)
• За время добавления новой ноды данные
журнала частично перезаписываются. В итоге
новая нода так и не включается в работу
!
!
!
!
!
• Удаление данных не освобождает пространство (уже освобождает -
usePowerOf2Sizes) !
• Избыточность
![Page 5: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/5.jpg)
Cassandra @ iFunny2 кластера
24 ноды x16 Cores
x30GB RAM x320GB SSD x1Gbit LAN
!
!
Write Latency 1.5мс Read Latency 3.5мс
![Page 6: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/6.jpg)
![Page 7: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/7.jpg)
HBase, Cassandra, Riak, Redis, DynamoDB, Voldemort
![Page 8: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/8.jpg)
• Доступность
• Линейная масштабируемость
• Нет единой точки отказа
• Настраиваемая целостность данных
• Поддержка и большое сообщество
Cassandra is a massively scalable open source
NoSQL database.
![Page 9: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/9.jpg)
![Page 10: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/10.jpg)
Кластер cassandra
![Page 11: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/11.jpg)
Если записать ключ ‘foo’ c RF=3
Node3
Node4
Node5
Node6
Node2: fooNode1
Node7Node8Node9:foo
Node15: foo
Node14
Node13
Node12
Node11
Node10
![Page 12: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/12.jpg)
Хранение данныхSSTable (Sorted String Table) – простой формат для
эффективного хранения большого числа пар типа “key-
value”, оптимизирован для обеспечения высокой
пропускной способности при выполнении операций
последовательного чтения и записи данных.
![Page 13: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/13.jpg)
• Объединеняет sstables для улучшения производительности !
• Очищает sstables от удаленных данных !
• Перестраивает индексы
Compaction - периодический фоновый
процесс обслуживания хранимых данных
![Page 14: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/14.jpg)
Compaction:
Size-tiered vs leveled
![Page 15: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/15.jpg)
Size-tiered Compaction
Объединение 4-х sstable’ов одинакового размера
![Page 16: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/16.jpg)
Size-tiered Compaction
Как выглядят sstables при большом количестве инсертов
![Page 17: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/17.jpg)
Size-tiered Compaction
Проблемы
Данные могут оказаться на любом количестве
sstables. В худшем случае чтение будет происходить из всех имеющихся
!
Требуется слишком много дискового пространства
при компактинге и большом количестве deletes
![Page 18: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/18.jpg)
Leveled
Основан на Google LevelDB. Sstables создаются
фиксированного размера и группируются по уровням.
Каждый новый уровень в 10 раз больше чем
предыдущий.
![Page 19: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/19.jpg)
Преимущества Leveled • Leveled компактинг гарантирует, что 90% всех
чтений будут из одной sstable. В худшем случае
это будет чтение из 7ми sstables, что
соответствует 10TB хранимых данных.
Leveled
Size-tiered
![Page 20: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/20.jpg)
Преимущества Leveled!
!
• Для компактинга необходимо 10xSstable_size
свободного пространства
!
• Только 10% занятого пространства будут заняты
устаревшими строками
![Page 21: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/21.jpg)
Когда лучше использовать Leveled
• Read Latency очень важен
• Чтений больше чем записей
• Частые апдейты строк
• Много удалений
![Page 22: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/22.jpg)
Когда лучше НЕ использовать Leveled
• Если leveled слишком сильно
нагружает дисковую подсистему
• Много записей в cassandra
• Строки не обновляются или
обновляются очень редко
![Page 23: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/23.jpg)
Базовая конфигурацияcluster_name: 'Cluster1’ !
num_tokens: 256 !
authenticator: {AllowAllAuthenticator, PasswordAuthenticator} !
permissions_validity_in_ms: 2000 !
data_file_directories: - /cassandra/hdd1/data !
commitlog_directory: /cassandra/hdd2/commitlog !
disk_failure_policy: stop | ignore | best_effort
![Page 24: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/24.jpg)
key_cache_size_in_mb: 500 row_cache_size_in_mb: 0 - seeds: “10.0.1.100, 10.0.2.100, 10.0.3.100” concurrent_reads: 32 = (16 * number_of_drives) concurrent_writes: 128 = (8*cores) listen_address: <%= ipaddress %> in_memory_compaction_limit_in_mb: 256 concurrent_compactors: 4 multithreaded_compaction: false compaction_throughput_mb_per_sec: 128
![Page 25: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/25.jpg)
Обслуживание и мониторинг: статус
кластера> nodetool status
![Page 26: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/26.jpg)
> nodetool cfstats
Keyspace: KeySpace1 Read Count: 4450035318
Read Latency: 1.118505269366269 ms. Write Count: 3022969733
Write Latency: 0.02623819108644711 ms. Pending Tasks: 0 Table: user_content
SSTable count: 12 SSTables in each level: [1, 0, 11, 0, 0, 0, 0, 0, 0] Number of keys (estimate): 892032 Local read count: 323547
Local read latency: 1.248 ms Local write count: 20194660
Local write latency: 0.017 ms Bloom filter space used, bytes: 710616 Compacted partition minimum bytes: 61
Compacted partition maximum bytes: 2346799 !
Статистика по таблицам
![Page 27: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/27.jpg)
> nodetool compactionstats
pending tasks: 7compaction type keyspace column family completed total unit progressCompaction Test Message 161257707087 2475323941809 bytes 6.51%
Статистика по компакшнам
![Page 28: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/28.jpg)
> nodetool tpstatsPool Name Active Pending Completed Blocked All time blockedReadStage 0 1 3378502921 0 0RequestResponseStage 0 0 4917402340 0 0MutationStage 0 0 2367194409 0 0ReadRepairStage 0 0 164215492 0 0ReplicateOnWriteStage 0 0 0 0 0GossipStage 0 0 14227445 0 0AntiEntropyStage 0 0 0 0 0!Message type DroppedRANGE_SLICE 0READ_REPAIR 0PAGED_RANGE 0BINARY 0READ 289MUTATION 114_TRACE 2898REQUEST_RESPONSE 0COUNTER_MUTATION 0
Статистика по операциям
![Page 29: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/29.jpg)
Datastax OpsCenter
![Page 30: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/30.jpg)
Features
• съедает проц, а не диск — нужно больше ядер • ssd - better, но не критично • Java heap == 8 GB • разные диски для данных и commit log • стандартный GC
![Page 31: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/31.jpg)
Проблемы, которые могут вас затронуть
• corrupted sstable! nodetool scrub
• high read latency and/or dropped messages!
мониторинг добавить ноды
пересмотреть модель данных • gc, gc, gc, gc!
Java heap == 8GB мониторинг
пересмотреть модель данных !
![Page 32: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/32.jpg)
Проблемы, которые могут вас затронуть!
• host/cassandra/network down!!
hinted handoff - журнал, позволяющий восстановить данные при небольших
отказах nodetool rebuild - пересоздание ноды, актуальные данные запрашиваются из
кластера nodetool repair - ищет и устраняет
неконсистентность данных read repair - механизм, который
восстанавливает потерянные данные при чтениях с нескольких нод
!
![Page 33: SECON.Посиделки #16: Cassandra (презентация)](https://reader033.vdocument.in/reader033/viewer/2022051112/557fd6e8d8b42aab088b51da/html5/thumbnails/33.jpg)
Спасибо