Cassandra
архитектуракластераиособенностииспользования
@dmitry_desu
@clslrns
• За время добавления новой ноды данные
журнала частично перезаписываются. В итоге
новая нода так и не включается в работу...
Cassandra @ iFunny
2 кластера
24 ноды
x16 Cores
x30GB RAM
x320GB SSD
x1Gbit LAN
!
!
Write Latency 1.5мс
Read Latency 3.5мс
HBase, Cassandra, Riak, Redis, DynamoDB, Voldemort
• Доступность
• Линейная масштабируемость
• Нет единой точки отказа
• Настраиваемая целостность данных
• Поддержка и больш...
Кластер cassandra
Если записать ключ ‘foo’ c RF=3
Node3
Node4
Node5
Node6
Node2: foo
Node1
Node7
Node8Node9:foo
Node15: foo
Node14
Node13
No...
Хранение данных
SSTable (Sorted String Table) – простой формат для
эффективного хранения большого числа пар типа “key-
val...
• Объединеняет sstables для улучшения
производительности
!
• Очищает sstables от удаленных данных
!
• Перестраивает индекс...
Compaction:
Size-tiered vs leveled
Size-tiered Compaction
Объединение 4-х sstable’ов одинакового размера
Size-tiered Compaction
Как выглядят sstables при большом количестве инсертов
Size-tiered Compaction
Проблемы
Данные могут оказаться на любом количестве
sstables. В худшем случае чтение будет происход...
Leveled
Основан на Google LevelDB. Sstables создаются
фиксированного размера и группируются по уровням.
Каждый новый урове...
Преимущества Leveled
	
•	
Leveled компактинг гарантирует, что 90% всех
чтений будут из одной sstable. В худшем случае
это ...
Преимущества Leveled
!
!
	
•	
Для компактинга необходимо 10xSstable_size
свободного пространства
!
	
• Только 10% занятого...
Когда лучше использовать Leveled
• Read Latency очень важен
• Чтений больше чем записей
• Частые апдейты строк
• Много уда...
Когда лучше НЕ использовать
Leveled
• Если leveled слишком сильно
нагружает дисковую подсистему
• Много записей в cassandr...
Базовая конфигурация
cluster_name: 'Cluster1’
!
num_tokens: 256
!
authenticator: {AllowAllAuthenticator, PasswordAuthentic...
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...
Обслуживание и мониторинг: статус
кластера
> nodetool status
> nodetool cfstats
Keyspace: KeySpace1	
	 Read Count: 4450035318	
	 Read Latency: 1.118505269366269 ms.	
	 Write Count: 30...
> nodetool compactionstats
pending tasks: 7	
compaction type keyspace column family completed total unit progress	
Compact...
> nodetool tpstats
Pool Name Active Pending Completed Blocked All time blocked	
ReadStage 0 1 3378502921 0 0	
RequestRespo...
Datastax OpsCenter
Features
• съедает проц, а не диск — нужно больше ядер
• ssd - better, но не критично
• Java heap == 8 GB
• разные диски д...
Проблемы, которые могут вас
затронуть
• corrupted sstable!
nodetool scrub
• high read latency and/or
dropped messages!
мон...
Проблемы, которые могут вас
затронуть!
• host/cassandra/network down!
!
hinted handoff - журнал, позволяющий
восстановить ...
Спасибо
SECON.Посиделки #16: Cassandra (презентация)
SECON.Посиделки #16: Cassandra (презентация)
SECON.Посиделки #16: Cassandra (презентация)
SECON.Посиделки #16: Cassandra (презентация)
Upcoming SlideShare
Loading in …5
×

SECON.Посиделки #16: Cassandra (презентация)

424 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
424
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

SECON.Посиделки #16: Cassandra (презентация)

  1. 1. Cassandra архитектуракластераиособенностииспользования @dmitry_desu @clslrns
  2. 2. • За время добавления новой ноды данные журнала частично перезаписываются. В итоге новая нода так и не включается в работу ! ! ! ! ! • Удаление данных не освобождает пространство (уже освобождает - usePowerOf2Sizes) ! • Избыточность
  3. 3. Cassandra @ iFunny 2 кластера 24 ноды x16 Cores x30GB RAM x320GB SSD x1Gbit LAN ! ! Write Latency 1.5мс Read Latency 3.5мс
  4. 4. HBase, Cassandra, Riak, Redis, DynamoDB, Voldemort
  5. 5. • Доступность • Линейная масштабируемость • Нет единой точки отказа • Настраиваемая целостность данных • Поддержка и большое сообщество Cassandra is a massively scalable open source NoSQL database.
  6. 6. Кластер cassandra
  7. 7. Если записать ключ ‘foo’ c RF=3 Node3 Node4 Node5 Node6 Node2: foo Node1 Node7 Node8Node9:foo Node15: foo Node14 Node13 Node12 Node11 Node10
  8. 8. Хранение данных SSTable (Sorted String Table) – простой формат для эффективного хранения большого числа пар типа “key- value”, оптимизирован для обеспечения высокой пропускной способности при выполнении операций последовательного чтения и записи данных.
  9. 9. • Объединеняет sstables для улучшения производительности ! • Очищает sstables от удаленных данных ! • Перестраивает индексы Compaction - периодический фоновый процесс обслуживания хранимых данных
  10. 10. Compaction: Size-tiered vs leveled
  11. 11. Size-tiered Compaction Объединение 4-х sstable’ов одинакового размера
  12. 12. Size-tiered Compaction Как выглядят sstables при большом количестве инсертов
  13. 13. Size-tiered Compaction Проблемы Данные могут оказаться на любом количестве sstables. В худшем случае чтение будет происходить из всех имеющихся ! Требуется слишком много дискового пространства при компактинге и большом количестве deletes
  14. 14. Leveled Основан на Google LevelDB. Sstables создаются фиксированного размера и группируются по уровням. Каждый новый уровень в 10 раз больше чем предыдущий.
  15. 15. Преимущества Leveled • Leveled компактинг гарантирует, что 90% всех чтений будут из одной sstable. В худшем случае это будет чтение из 7ми sstables, что соответствует 10TB хранимых данных. Leveled Size-tiered
  16. 16. Преимущества Leveled ! ! • Для компактинга необходимо 10xSstable_size свободного пространства ! • Только 10% занятого пространства будут заняты устаревшими строками
  17. 17. Когда лучше использовать Leveled • Read Latency очень важен • Чтений больше чем записей • Частые апдейты строк • Много удалений
  18. 18. Когда лучше НЕ использовать Leveled • Если leveled слишком сильно нагружает дисковую подсистему • Много записей в cassandra • Строки не обновляются или обновляются очень редко
  19. 19. Базовая конфигурация 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
  20. 20. 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
  21. 21. Обслуживание и мониторинг: статус кластера > nodetool status
  22. 22. > 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 ! Статистика по таблицам
  23. 23. > nodetool compactionstats pending tasks: 7 compaction type keyspace column family completed total unit progress Compaction Test Message 161257707087 2475323941809 bytes 6.51% Статистика по компакшнам
  24. 24. > nodetool tpstats Pool Name Active Pending Completed Blocked All time blocked ReadStage 0 1 3378502921 0 0 RequestResponseStage 0 0 4917402340 0 0 MutationStage 0 0 2367194409 0 0 ReadRepairStage 0 0 164215492 0 0 ReplicateOnWriteStage 0 0 0 0 0 GossipStage 0 0 14227445 0 0 AntiEntropyStage 0 0 0 0 0 ! Message type Dropped RANGE_SLICE 0 READ_REPAIR 0 PAGED_RANGE 0 BINARY 0 READ 289 MUTATION 114 _TRACE 2898 REQUEST_RESPONSE 0 COUNTER_MUTATION 0 Статистика по операциям
  25. 25. Datastax OpsCenter
  26. 26. Features • съедает проц, а не диск — нужно больше ядер • ssd - better, но не критично • Java heap == 8 GB • разные диски для данных и commit log • стандартный GC
  27. 27. Проблемы, которые могут вас затронуть • corrupted sstable! nodetool scrub • high read latency and/or dropped messages! мониторинг добавить ноды пересмотреть модель данных • gc, gc, gc, gc! Java heap == 8GB мониторинг пересмотреть модель данных !
  28. 28. Проблемы, которые могут вас затронуть! • host/cassandra/network down! ! hinted handoff - журнал, позволяющий восстановить данные при небольших отказах nodetool rebuild - пересоздание ноды, актуальные данные запрашиваются из кластера nodetool repair - ищет и устраняет неконсистентность данных read repair - механизм, который восстанавливает потерянные данные при чтениях с нескольких нод
  29. 29. Спасибо

×