12 happydev-lite-2014. Иван Погудин, Анатолий Никулин. Решение...
TRANSCRIPT
Обзор технологий и подходов для решения задач связанных с
высокой нагрузкой и обработкой больших объёмов данных
Анатолий Никулин и Иван Погудин
Как справиться с возрастающей нагрузкой
• Вертикальное масштабирование• Горизонтальное масштабирование
Вертикальное масштабирование
• Утилизация множества ядер (многопоточность)• Часто не требует изменение приложения• Малый предел масштабирования
Горизонтальное масштабирование
• Увеличивается количество элементов• Возрастает вероятность отказа• Усложняются механизмы взаимодействия• Дешевле чем вертикальное после достижения
определённого масштаба
CAP теорема (Брюер)
Фреймворки и системы
• Finagle (https://twitter.github.io/finagle/)• Hadoop (http://hadoop.apache.org/)• Storm (http://storm.incubator.apache.org)
Finagle
• Scala• Примитивы: сервера и клиенты• Thrift, Http, Mux• Future• Трекинг запросов• Мониторинг производительности• Java-API в планах
Hadoop
• Java• Map/reduce• HDFS - распределённая файловая система• HBase - база данных• Де-факто стандарт для обработки больших данных
Storm
• Сlojure• Stream processing• Топология (Topology)• Краны (spouts) и изгибы (bolts)• Java-API и другие языки
Базы данных (NoSQL)
• Memcached (http://memcached.org)• Redis (http://redis.io)• Cassandra (http://cassandra.apache.org/)• MongoDB (http://www.mongodb.org/)• Aerospike (http://www.aerospike.com/)
Memcached
• Хэш таблица с доступом по ключу• Распределённый• Данные только в памяти• set, add, replace, append, prepend, cas, get, gets,
delete, incr, decr
Redis
• key-value cache and store• strings, hashes, lists, sets, sorted sets, bitmaps• persistence (snapshots)• репликация (master-slave)• redis cluster в процессе
Cassandra
• Колонко-ориентированная (Column-oriented)• Log-structured merge-tree• Очень быстрая запись• Thrift интерфейс, CQL3
MongoDB
• Master/slave репликация• Sharding (mongos, mongo configsrv)• Документ-ориентированная• JavaScript• Map/reduce
Aerospike
• SSD + memory• Сложные структуры данных (списки, хэш таблицы и
т.д.)• aql
Дьявол в деталях
• Оптимизации (мелкое в рамках одной операции становится крупным при большом их числе)
• Необходимость поиска компромисса (память, процессор, диск, сеть)
• Механизмы взаимодействия элементов распределённой системы
• Отказоустойчивость• И многое многое другое
BigData
Мир больших массивов данных
Общее количество данных в мире
2 Zettabyte
это: 1000000000000000000000 bytesили 1 миллиард терабайт
Закон Мура для данных
Каждые два года количество данных увеличивается в
двое
Bolid F1 6GB per 90 min
Boeing-787 500 GB per fly*
Large Hadron Collider 40TB per day
Users:
• Количество интернет пользователей: 3 млрд.
• Количество смартфонов: 1.3 млрд.
• Количество СМС в день: 25 млрд.
Hadoop - наше всё
Платформа для:
Хранения и распределенной обработки данных
(распределенных вычислений).
Hadoop is a large-scale distributed batch processing
infrastructure
BigData - а это сколько?
А у вас нет столько данных для Hadoop
Hadoop сложно разворачивать
Игроки рынка
Наконец Hadoop это целая экосистема
Скилы
IF { компьютерная графика == линейная алгебра}THEN { большие данные == статистика и теория вероятности}
Рынок труда РФ
• Обработка пользовательских данных.Реклама, банки
• Обработка сенсорных данных
Греют воздух большими даннымиИ.Погудин и А.Никулин
(ведущие кочегары)