SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
Cassandra
архитектуракластераиособенностииспользования
@dmitry_desu
@clslrns
• За время добавления новой ноды данные
журнала частично перезаписываются. В итоге
новая нода так и не включается в работу
!
!
!
!
!
• Удаление данных не освобождает
пространство (уже освобождает -
usePowerOf2Sizes)
!
• Избыточность
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 is a massively scalable open source
NoSQL database.
Кластер cassandra
Если записать ключ ‘foo’ c RF=3
Node3
Node4
Node5
Node6
Node2: foo
Node1
Node7
Node8Node9: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: 7	
compaction type keyspace column family completed total unit progress	
Compaction Test Message 161257707087 2475323941809 bytes 6.51%	
Статистика по компакшнам
> 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	
Статистика по операциям
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 - механизм, который
восстанавливает потерянные данные
при чтениях с нескольких нод
Спасибо

Contenu connexe

Tendances

Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Ontico
 
Cassandra: быстрая запись данных в высоконагруженных системах
Cassandra: быстрая запись данных в высоконагруженных системахCassandra: быстрая запись данных в высоконагруженных системах
Cassandra: быстрая запись данных в высоконагруженных системахAlexander Mezhov
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Ontico
 
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...Ontico
 
HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6Technopark
 
HighLoad весна 2014 лекция 5
HighLoad весна 2014 лекция 5HighLoad весна 2014 лекция 5
HighLoad весна 2014 лекция 5Technopark
 
Введение в Apache Cassandra
Введение в Apache CassandraВведение в Apache Cassandra
Введение в Apache CassandraAlexander Tivelkov
 
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...Ontico
 
За гранью NoSQL: NewSQL на Cassandra
За гранью NoSQL: NewSQL на CassandraЗа гранью NoSQL: NewSQL на Cassandra
За гранью NoSQL: NewSQL на Cassandraodnoklassniki.ru
 
Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...Ontico
 
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013it-people
 
HighLoad весна 2014 лекция 2
HighLoad весна 2014 лекция 2HighLoad весна 2014 лекция 2
HighLoad весна 2014 лекция 2Technopark
 
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)Ontico
 
Механика DDoS (Александр Крижановский)
Механика DDoS (Александр Крижановский)Механика DDoS (Александр Крижановский)
Механика DDoS (Александр Крижановский)Ontico
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)Ontico
 
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...Ontico
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Ontico
 
HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3Technopark
 
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Ontico
 
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Andrew Avdeev
 

Tendances (20)

Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)
 
Cassandra: быстрая запись данных в высоконагруженных системах
Cassandra: быстрая запись данных в высоконагруженных системахCassandra: быстрая запись данных в высоконагруженных системах
Cassandra: быстрая запись данных в высоконагруженных системах
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
 
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
 
HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6
 
HighLoad весна 2014 лекция 5
HighLoad весна 2014 лекция 5HighLoad весна 2014 лекция 5
HighLoad весна 2014 лекция 5
 
Введение в Apache Cassandra
Введение в Apache CassandraВведение в Apache Cassandra
Введение в Apache Cassandra
 
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
 
За гранью NoSQL: NewSQL на Cassandra
За гранью NoSQL: NewSQL на CassandraЗа гранью NoSQL: NewSQL на Cassandra
За гранью NoSQL: NewSQL на Cassandra
 
Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...
 
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
 
HighLoad весна 2014 лекция 2
HighLoad весна 2014 лекция 2HighLoad весна 2014 лекция 2
HighLoad весна 2014 лекция 2
 
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
 
Механика DDoS (Александр Крижановский)
Механика DDoS (Александр Крижановский)Механика DDoS (Александр Крижановский)
Механика DDoS (Александр Крижановский)
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
 
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
 
HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3
 
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
 
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)
 

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

Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_drupalconf
 
Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011Igor Brovchenko
 
Организация хранения данных
Организация хранения данныхОрганизация хранения данных
Организация хранения данныхOleg Lipin
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераDaniel Podolsky
 
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...odnoklassniki.ru
 
02 - Hadoop. Архитектура HDFS
02 - Hadoop. Архитектура HDFS02 - Hadoop. Архитектура HDFS
02 - Hadoop. Архитектура HDFSRoman Brovko
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comOntico
 
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Ontico
 
MyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBMyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBSergey Petrunya
 
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...Ontico
 
Тестируем производительность распределённых систем, Александр Киров (Parallels)
Тестируем производительность распределённых систем, Александр Киров (Parallels)Тестируем производительность распределённых систем, Александр Киров (Parallels)
Тестируем производительность распределённых систем, Александр Киров (Parallels)Ontico
 
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Ontico
 
Isilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSDIsilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSDAndrew Pantyukhin
 
Обзор новых моделей EMC VNX
Обзор новых моделей EMC VNXОбзор новых моделей EMC VNX
Обзор новых моделей EMC VNXКРОК
 
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...it-people
 
Frontera обход испанского интернета
Frontera обход испанского интернетаFrontera обход испанского интернета
Frontera обход испанского интернетаAlexander Sibiryakov
 
Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Olga Lavrentieva
 
Как Linux работает с памятью — Вячеслав Бирюков
Как Linux работает с памятью — Вячеслав БирюковКак Linux работает с памятью — Вячеслав Бирюков
Как Linux работает с памятью — Вячеслав БирюковYandex
 
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данныхОлег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данныхSiel01
 

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

Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 
Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011
 
Организация хранения данных
Организация хранения данныхОрганизация хранения данных
Организация хранения данных
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного Хецнера
 
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
 
02 - Hadoop. Архитектура HDFS
02 - Hadoop. Архитектура HDFS02 - Hadoop. Архитектура HDFS
02 - Hadoop. Архитектура HDFS
 
High Load
High LoadHigh Load
High Load
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.com
 
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
 
MyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBMyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDB
 
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
 
Тестируем производительность распределённых систем, Александр Киров (Parallels)
Тестируем производительность распределённых систем, Александр Киров (Parallels)Тестируем производительность распределённых систем, Александр Киров (Parallels)
Тестируем производительность распределённых систем, Александр Киров (Parallels)
 
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
 
Isilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSDIsilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSD
 
Обзор новых моделей EMC VNX
Обзор новых моделей EMC VNXОбзор новых моделей EMC VNX
Обзор новых моделей EMC VNX
 
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
 
Frontera обход испанского интернета
Frontera обход испанского интернетаFrontera обход испанского интернета
Frontera обход испанского интернета
 
Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)
 
Как Linux работает с памятью — Вячеслав Бирюков
Как Linux работает с памятью — Вячеслав БирюковКак Linux работает с памятью — Вячеслав Бирюков
Как Linux работает с памятью — Вячеслав Бирюков
 
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данныхОлег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
 

Plus de Конференция разработчиков программного обеспечения SECON'2014

Plus de Конференция разработчиков программного обеспечения SECON'2014 (16)

SECON'2014 - Сергеев Антон - Асинхронные задачи в iFunny
SECON'2014 - Сергеев Антон - Асинхронные задачи в iFunnySECON'2014 - Сергеев Антон - Асинхронные задачи в iFunny
SECON'2014 - Сергеев Антон - Асинхронные задачи в iFunny
 
SECON'2014 - Тимур Салюков - История одного кейса Gorussia2014.ru. Как добить...
SECON'2014 - Тимур Салюков - История одного кейса Gorussia2014.ru. Как добить...SECON'2014 - Тимур Салюков - История одного кейса Gorussia2014.ru. Как добить...
SECON'2014 - Тимур Салюков - История одного кейса Gorussia2014.ru. Как добить...
 
SECON'2014 - Максим Цепков - DDD: от требований до кода
SECON'2014 - Максим Цепков - DDD: от требований до кодаSECON'2014 - Максим Цепков - DDD: от требований до кода
SECON'2014 - Максим Цепков - DDD: от требований до кода
 
SECON'2014 - Кирилл Мокевнин - Формирование инженерной культуры
SECON'2014 - Кирилл Мокевнин - Формирование инженерной культурыSECON'2014 - Кирилл Мокевнин - Формирование инженерной культуры
SECON'2014 - Кирилл Мокевнин - Формирование инженерной культуры
 
SECON'2014 - Юрий Бушмелев - Эволюция системного администратора
SECON'2014 - Юрий Бушмелев - Эволюция системного администратораSECON'2014 - Юрий Бушмелев - Эволюция системного администратора
SECON'2014 - Юрий Бушмелев - Эволюция системного администратора
 
SECON'2014 - Алексей Кошкидько - Межконтинентальный опыт внедрения Agile
SECON'2014 - Алексей Кошкидько - Межконтинентальный опыт внедрения AgileSECON'2014 - Алексей Кошкидько - Межконтинентальный опыт внедрения Agile
SECON'2014 - Алексей Кошкидько - Межконтинентальный опыт внедрения Agile
 
SECON'2014 - Филипп Торчинский - Трансформация баг-трекера под любой проект: ...
SECON'2014 - Филипп Торчинский - Трансформация баг-трекера под любой проект: ...SECON'2014 - Филипп Торчинский - Трансформация баг-трекера под любой проект: ...
SECON'2014 - Филипп Торчинский - Трансформация баг-трекера под любой проект: ...
 
SECON'2014 - Сергей Цивин - Производительность веб-приложений
SECON'2014 - Сергей Цивин - Производительность веб-приложенийSECON'2014 - Сергей Цивин - Производительность веб-приложений
SECON'2014 - Сергей Цивин - Производительность веб-приложений
 
SECON'2014 - Дмитрий Швеенков - Рассылка push-уведомлений для мобильных платформ
SECON'2014 - Дмитрий Швеенков - Рассылка push-уведомлений для мобильных платформSECON'2014 - Дмитрий Швеенков - Рассылка push-уведомлений для мобильных платформ
SECON'2014 - Дмитрий Швеенков - Рассылка push-уведомлений для мобильных платформ
 
SECON'2014 - Антон Веретенников, Илья Семаков - Переход от коллбеков к событиям
SECON'2014 - Антон Веретенников, Илья Семаков - Переход от коллбеков к событиямSECON'2014 - Антон Веретенников, Илья Семаков - Переход от коллбеков к событиям
SECON'2014 - Антон Веретенников, Илья Семаков - Переход от коллбеков к событиям
 
SECON'2014 - Сергей Шпадырев - Разработка 3D-игры на Flash: едем с костылями...
SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями...SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями...
SECON'2014 - Сергей Шпадырев - Разработка 3D-игры на Flash: едем с костылями...
 
SECON'2014 - Андрей Устюжанин - Маленькие секреты больших данных
SECON'2014 - Андрей Устюжанин - Маленькие секреты больших данныхSECON'2014 - Андрей Устюжанин - Маленькие секреты больших данных
SECON'2014 - Андрей Устюжанин - Маленькие секреты больших данных
 
SECON'2014 - Павел Щеваев - Метаданные и автогенерация кода
SECON'2014 - Павел Щеваев - Метаданные и автогенерация кодаSECON'2014 - Павел Щеваев - Метаданные и автогенерация кода
SECON'2014 - Павел Щеваев - Метаданные и автогенерация кода
 
SECON'2014 - Александр Чистяков - Сравнение современных средств управления ко...
SECON'2014 - Александр Чистяков - Сравнение современных средств управления ко...SECON'2014 - Александр Чистяков - Сравнение современных средств управления ко...
SECON'2014 - Александр Чистяков - Сравнение современных средств управления ко...
 
SECON'2014 - Александр Бындю - Переход от монолитной архитектуры к распределе...
SECON'2014 - Александр Бындю - Переход от монолитной архитектуры к распределе...SECON'2014 - Александр Бындю - Переход от монолитной архитектуры к распределе...
SECON'2014 - Александр Бындю - Переход от монолитной архитектуры к распределе...
 
SECON'2014 - Команда CTRL-PNZ - Уязвимости для самых маленьких. Что это, как ...
SECON'2014 - Команда CTRL-PNZ - Уязвимости для самых маленьких. Что это, как ...SECON'2014 - Команда CTRL-PNZ - Уязвимости для самых маленьких. Что это, как ...
SECON'2014 - Команда CTRL-PNZ - Уязвимости для самых маленьких. Что это, как ...
 

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

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