Upload
-secon2014
View
136
Download
0
Tags:
Embed Size (px)
Citation preview
Cassandra архитектура кластера и особенности использования
@dmitry_desu @clslrns
• За время добавления новой ноды данные
журнала частично перезаписываются. В итоге
новая нода так и не включается в работу
!
!
!
!
!
• Удаление данных не освобождает пространство (уже освобождает -
usePowerOf2Sizes) !
• Избыточность
Cassandra @ iFunny2 кластера
24 ноды x16 Cores
x30GB RAM x320GB SSD x1Gbit LAN
!
!
Write Latency 1.5мс Read Latency 3.5мс
HBase, Cassandra, Riak, Redis, DynamoDB, Voldemort
• Доступность
• Линейная масштабируемость
• Нет единой точки отказа
• Настраиваемая целостность данных
• Поддержка и большое сообщество
Cassandra is a massively scalable open source
NoSQL database.
Кластер cassandra
Если записать ключ ‘foo’ c RF=3
Node3
Node4
Node5
Node6
Node2: fooNode1
Node7Node8Node9:foo
Node15: foo
Node14
Node13
Node12
Node11
Node10
Хранение данныхSSTable (Sorted String Table) – простой формат для
эффективного хранения большого числа пар типа “key-
value”, оптимизирован для обеспечения высокой
пропускной способности при выполнении операций
последовательного чтения и записи данных.
• Объединеняет sstables для улучшения производительности !
• Очищает sstables от удаленных данных !
• Перестраивает индексы
Compaction - периодический фоновый
процесс обслуживания хранимых данных
Compaction:
Size-tiered vs leveled
Size-tiered Compaction
Объединение 4-х sstable’ов одинакового размера
Size-tiered Compaction
Как выглядят sstables при большом количестве инсертов
Size-tiered Compaction
Проблемы
Данные могут оказаться на любом количестве
sstables. В худшем случае чтение будет происходить из всех имеющихся
!
Требуется слишком много дискового пространства
при компактинге и большом количестве deletes
Leveled
Основан на Google LevelDB. Sstables создаются
фиксированного размера и группируются по уровням.
Каждый новый уровень в 10 раз больше чем
предыдущий.
Преимущества Leveled • Leveled компактинг гарантирует, что 90% всех
чтений будут из одной sstable. В худшем случае
это будет чтение из 7ми sstables, что
соответствует 10TB хранимых данных.
Leveled
Size-tiered
Преимущества Leveled!
!
• Для компактинга необходимо 10xSstable_size
свободного пространства
!
• Только 10% занятого пространства будут заняты
устаревшими строками
Когда лучше использовать Leveled
• Read Latency очень важен
• Чтений больше чем записей
• Частые апдейты строк
• Много удалений
Когда лучше НЕ использовать Leveled
• Если leveled слишком сильно
нагружает дисковую подсистему
• Много записей в cassandra
• Строки не обновляются или
обновляются очень редко
Базовая конфигурация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
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
Обслуживание и мониторинг: статус
кластера> nodetool status
> 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 !
Статистика по таблицам
> nodetool compactionstats
pending tasks: 7compaction type keyspace column family completed total unit progressCompaction Test Message 161257707087 2475323941809 bytes 6.51%
Статистика по компакшнам
> 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
Статистика по операциям
Datastax OpsCenter
Features
• съедает проц, а не диск — нужно больше ядер • ssd - better, но не критично • Java heap == 8 GB • разные диски для данных и commit log • стандартный GC
Проблемы, которые могут вас затронуть
• corrupted sstable! nodetool scrub
• high read latency and/or dropped messages!
мониторинг добавить ноды
пересмотреть модель данных • gc, gc, gc, gc!
Java heap == 8GB мониторинг
пересмотреть модель данных !
Проблемы, которые могут вас затронуть!
• host/cassandra/network down!!
hinted handoff - журнал, позволяющий восстановить данные при небольших
отказах nodetool rebuild - пересоздание ноды, актуальные данные запрашиваются из
кластера nodetool repair - ищет и устраняет
неконсистентность данных read repair - механизм, который
восстанавливает потерянные данные при чтениях с нескольких нод
!
Спасибо