12 happydev-lite-2014. Иван Погудин, Анатолий Никулин. Решение...

33
Обзор технологий и подходов для решения задач связанных с высокой нагрузкой и обработкой больших объёмов данных Анатолий Никулин и Иван Погудин

Upload: happydev-lite

Post on 17-Feb-2017

147 views

Category:

Education


0 download

TRANSCRIPT

Page 1: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Обзор технологий и подходов для решения задач связанных с

высокой нагрузкой и обработкой больших объёмов данных

Анатолий Никулин и Иван Погудин

Page 2: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Как справиться с возрастающей нагрузкой

• Вертикальное масштабирование• Горизонтальное масштабирование

Page 3: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Вертикальное масштабирование

• Утилизация множества ядер (многопоточность)• Часто не требует изменение приложения• Малый предел масштабирования

Page 4: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Горизонтальное масштабирование

• Увеличивается количество элементов• Возрастает вероятность отказа• Усложняются механизмы взаимодействия• Дешевле чем вертикальное после достижения

определённого масштаба

Page 5: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

CAP теорема (Брюер)

Page 6: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Фреймворки и системы

• Finagle (https://twitter.github.io/finagle/)• Hadoop (http://hadoop.apache.org/)• Storm (http://storm.incubator.apache.org)

Page 7: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Finagle

• Scala• Примитивы: сервера и клиенты• Thrift, Http, Mux• Future• Трекинг запросов• Мониторинг производительности• Java-API в планах

Page 8: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Hadoop

• Java• Map/reduce• HDFS - распределённая файловая система• HBase - база данных• Де-факто стандарт для обработки больших данных

Page 9: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Storm

• Сlojure• Stream processing• Топология (Topology)• Краны (spouts) и изгибы (bolts)• Java-API и другие языки

Page 10: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Базы данных (NoSQL)

• Memcached (http://memcached.org)• Redis (http://redis.io)• Cassandra (http://cassandra.apache.org/)• MongoDB (http://www.mongodb.org/)• Aerospike (http://www.aerospike.com/)

Page 11: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Memcached

• Хэш таблица с доступом по ключу• Распределённый• Данные только в памяти• set, add, replace, append, prepend, cas, get, gets,

delete, incr, decr

Page 12: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Redis

• key-value cache and store• strings, hashes, lists, sets, sorted sets, bitmaps• persistence (snapshots)• репликация (master-slave)• redis cluster в процессе

Page 13: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Cassandra

• Колонко-ориентированная (Column-oriented)• Log-structured merge-tree• Очень быстрая запись• Thrift интерфейс, CQL3

Page 14: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

MongoDB

• Master/slave репликация• Sharding (mongos, mongo configsrv)• Документ-ориентированная• JavaScript• Map/reduce

Page 15: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Aerospike

• SSD + memory• Сложные структуры данных (списки, хэш таблицы и

т.д.)• aql

Page 16: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Дьявол в деталях

• Оптимизации (мелкое в рамках одной операции становится крупным при большом их числе)

• Необходимость поиска компромисса (память, процессор, диск, сеть)

• Механизмы взаимодействия элементов распределённой системы

• Отказоустойчивость• И многое многое другое

Page 17: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

BigData

Мир больших массивов данных

Page 18: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Общее количество данных в мире

2 Zettabyte

это: 1000000000000000000000 bytesили 1 миллиард терабайт

Page 19: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Закон Мура для данных

Каждые два года количество данных увеличивается в

двое

Page 20: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой
Page 21: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Bolid F1 6GB per 90 min

Page 22: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Boeing-787 500 GB per fly*

Page 23: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Large Hadron Collider 40TB per day

Page 24: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Users:

• Количество интернет пользователей: 3 млрд.

• Количество смартфонов: 1.3 млрд.

• Количество СМС в день: 25 млрд.

Page 25: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Hadoop - наше всё

Платформа для:

Хранения и распределенной обработки данных

(распределенных вычислений).

Hadoop is a large-scale distributed batch processing

infrastructure

Page 26: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

BigData - а это сколько?

Page 27: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

А у вас нет столько данных для Hadoop

Page 28: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Hadoop сложно разворачивать

Page 29: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Игроки рынка

Page 30: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Наконец Hadoop это целая экосистема

Page 31: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Скилы

IF { компьютерная графика == линейная алгебра}THEN { большие данные == статистика и теория вероятности}

Page 32: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Рынок труда РФ

• Обработка пользовательских данных.Реклама, банки

• Обработка сенсорных данных

Page 33: 12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связанных с высокими нагрузками и обработкой

Греют воздух большими даннымиИ.Погудин и А.Никулин

(ведущие кочегары)