SlideShare a Scribd company logo
Где сегодня использовать
ElasticSearch
Илья Середа, Lead Data Engineer
+
Чем занимаюсь
• Создаю инфраструктуру для аналитиков
• Инструменты сбора данных о действиях пользователей
• Системой АБ-тестов и т.д
О
посетителей в день
1 млн.
посетителей в месяц
17 млн. сотрудников
>390
Туту.ру — сервис путешествий №1 в России
(данные кросс-медийной панели GfK Rus, дек. 2016).
Продаем туры, билеты на самолеты, поезда и автобусы,
бронируем отели, рассказываем о расписании электричек.
О чем?
• Основные понятия и терминология
• Пройдемся по кейсам
1. Полнотекстовый поиск
2. Изменчивая структура данных
3. Хранение логов
4. Аналитическое хранилище
5. Хранилище для DWH
Индексы, ноды, шарды
Ехал Индекс через индекс. 

Сунул Индекс индекс в индекс…
• Индекс - от англ. indices,
группа инвертированных
индексов
• Поле индекса - на англ. index,
а этот тот самый
инвертированный индекс
1. Полнотекстовый поиск
Задача
— Саджесты/подсказки в формах поиска
Требования
• Быстрый ответ на индексе в несколько gb
• Обслуживать много запросов на чтение
• Возможность частичного обновления
• Высокие требования к стабильности
✅ Получили
• Гибкая настройка ранжирования
• Работа с синонимами
• Отправка запросов напрямую из nginx

без задержки на запрос к бекендам
• Минимум затрат на поддержку решения 

в эксплуатации более двух лет
Объемы данных
• 7000 запросов в минуту
• Размер индекса 12 гб
• ~ 6 млн. документов
• Скорость ответа 10мс
Машинки
• 3-и ноды
• по 8gb RAM
• по 4-е ядра
• Утилизация ~20%
1. Полнотекстовый поиск
2. Изменчивая структура
Задача
— Кеш поисковой выдачи туров
2. Изменчивая структура
Задача
— Кеш поисковой выдачи туров
Требования
• Легкость добавления новых полей в документ
• Легкость адаптации данных к поискам по разным параметрам
• Фасетный поиск + полнотекст
Жила была MongoDB
• Каждый новый запрос на выборку - новый индекс
• 40+ индексов
• Долгая индексация документов
• Около полугода периодического тюнинга
2. Изменчивая структура
✅ Получили
• Стабильная работа и
ускорение
• Мало накладных расходов на
добавление новых полей
• Проще поддержка
• Возможность построить
аналитику
Объем данных
• Размер индекса 50gb
• Вставка 40 т. записей в минуту
Машинки
• 3-и ноды на MongoDB было 6-ть
• По 8gb RAM
• По 8 ядер
• 250gb SSD
2. Изменчивая структура
3. Хранение логов
Задача
— Распределенное хранилище логов приложений
Требования
• Большие объемы неструктурированных данных
• Искать по любому полю и строить визуализацию
• Легкие запросы
• Простой способ исследовать данные
✅ Получили
• Исследуем данные в
kibana
• Пишем через logstash
• Алертинг и
визуализация из
grafana
• Hot-Warm - экономит
деньги
3. Хранение логов
❌ Минусы
• Без очереди - никуда.
Используем redis
• Требует поддержки
• Требователен к ресурсам
• Сложность выявлять
узкие места, нужно
больше метрик
3. Хранение логов
Объем данных
• Размер индекса ~20TB
• Вставка ~1.2 млн. записей в минуту

63 Мбит/с
• 22 млрд. записей в индексах
Машинки
• 14 нод (bare metal server)
• 2-а координатора
• 6 ssd - свежие индексы
• 6 hdd - старые индексы
• По 64 RAM и 16 ядер
• Доступный объем в кластере 43TB SSD + HDD
Дальнейшие планы
— Смотрим в сторону clickhouse, но пока болит не сильно
3. Хранение логов
4. Аналитическое хранилище
Задача
— Быстрый* доступ к clickstream за несколько лет
Требования
• Тяжёлые запросы
• Низкие требования по SLA
4. Аналитическое хранилище
Data Mart =
4. Аналитическое хранилище
DWH + Data Mart =
✅ Получили
• Аналитики строят сложные агрегации
из python и визуализации в kibana
Объем данных
• Размер индекса ~10TB
• Вставка ~18 т. записей в минуту
• 16 млрд. записей в индексе
Машинки
• 12 нод (bare metal server)
• По 64 RAM
• По 16 ядер
• Всего 42 TB SSD
• Утилизация 5%-100%
4. Аналитическое хранилище
✅ Получили
• Аналитики строят сложные агрегации
из python и визуализации в kibana
• Связи через parent/child
Объем данных
• Размер индекса ~10TB
• Вставка ~18 т. записей в минуту
• 16 млрд. записей в индексе
Машинки
• 12 нод (bare metal server)
• По 64 RAM
• По 16 ядер
• Всего 42 TB SSD
• Утилизация 5%-100%
4. Аналитическое хранилище
✅ Получили
• Аналитики строят сложные агрегации
из python и визуализации в kibana
• Связи через parent/child
• Гибкое и простое масштабирование
• Бесплатно
Объем данных
• Размер индекса ~10TB
• Вставка ~18 т. записей в минуту
• 16 млрд. записей в индексе
Машинки
• 12 нод (bare metal server)
• По 64 RAM
• По 16 ядер
• Всего 42 TB SSD
• Утилизация 5%-100%
4. Аналитическое хранилище
❌ Минусы
• Не можем разбивать/партиционировать индекс по времени
• Связи накладывают ограничения
4. Аналитическое хранилище
❌ Минусы
• Не можем разбивать/партиционировать индекс по времени
• Связи накладывают ограничения
4. Аналитическое хранилище
❌ Минусы
• Не можем разбивать/партиционировать индекс по времени
• Связи накладывают ограничения
• Ограничения кол-ва записей в шарде (2,147,483,519 документов)
• Размер шард < 50gb
• Нет SQL ANSI

Время на обучение аналитика работы с хранилищем
• Ограниченное использование BI инструментов

Microsoft Power BI, Tableau и пр.
• Неоптимальное использование ресурсов

Кластер в среднем утилизирован на 10%
• Только append only
4. Аналитическое хранилище
4. Аналитическое хранилище
К чему пришли
• ElasticSearch прожил 3-и года и останется, но в качестве
витрины
• Будем менять модель данных
• Используем хранилища с SQL для BI
• Хранить историчные данные в DWH
5. Хранилище для DWH
Задача
— Хранение результатов поисков пользователей
Требования
• К данным обращаются редко
• Неизвестно как будут выбирать и какие агрегации строить
• Хранить нужно за всю историю проекта и не разориться
5. Хранилище для DWH
Получили
Ну точнее хотели получить
• Сложные агрегации - если бы все
ресурсы не забивала индексация
• Простое масштабирование
Объем данных
• В пиках до 600mb в минуту, 

460gb в сутки
• 1.5 млн. записей в сутки
Машинки
• 3 ноды
• По 64gb RAM
• По 16 ядер
• Всего 12TB HDD
5. Хранилище для DWH
❌ Минусы
• Не оптимально работает с диском
5. Хранилище для DWH
❌ Минусы
• Не оптимально работает с диском
• Каждый документ - это дополнительный расход памяти

при выборке по полю индекс шарды целиком загружаются в память
• Избегать большой иерархии документов
5. Хранилище для DWH
К чему пришли
• Пишем через kafka connect пачками в S3
• Аналитика данных через python или spark из S3
• Вместо 5TB в elastic, уместили все в архивы по 700MB
• 10 кластеров
• Всего 49 нод
• Обрабатывают в среднем 2.5 млн. запросов в минуту
Общее кол-во инсталляций
Итог
• Мощь ElasticSearch не в оптимальности
используемых ресурсов, а в его универсальности и
гибкости

Кейсы: DWH, полнотекстовый поиск, изменчевая
структура данных
Итог
• Мощь ElasticSearch не в оптимальности
используемых ресурсов, а в его универсальности и
гибкости
• Требователен к объему памяти и скорости дисков

Кейсы: аналитическое хранилище, логи, DWH
Итог
• Мощь ElasticSearch не в оптимальности
используемых ресурсов, а в его универсальности и
гибкости
• Требователен к объему памяти и скорости дисков
• Хорошо справляется с десятками терабайт данных

Кейсы: аналитическое хранилище, логи
Итог
• Мощь ElasticSearch не в оптимальности
используемых ресурсов, а в его универсальности и
гибкости
• Требователен к объему памяти и скорости дисков
• Хорошо справляется с десятками терабайт данных
• Храните денормализованные данные в плоской
структуре

Кейсы: аналитическое хранилище, логи
Итог
• Мощь ElasticSearch не в оптимальности
используемых ресурсов, а в его универсальности и
гибкости
• Требователен к объему памяти и скорости дисков
• Хорошо справляется с десятками терабайт данных
• Храните денормализованные данные в плоской
структуре
• Нарезайте индексы по временным промежуткам

Кейсы: аналитическое хранилище, логи
Итог
• Мощь ElasticSearch не в оптимальности
используемых ресурсов, а в его универсальности и
гибкости
• Требователен к объему памяти и скорости дисков
• Хорошо справляется с десятками терабайт данных
• Храните денормализованные данные в плоской
структуре
• Нарезайте индексы по временным промежуткам
• Append only

Кейсы: аналитическое хранилище
Спасибо#
Кейсы
1. Полнотекстовый поиск
2. Изменчивая структура данных
3. Хранение логов
4. Аналитическое хранилище
5. Хранилище для DWH
Выводы
• ElasticSearch - это гибкость
• Платим памятью и скоростью дисков
• Хорош для средних объемов данных
• Хранение денормализованных
данных
• Нарезайте индексы по времени
• Append only
Илья Середа weberdever sereda@tutu.ru

More Related Content

What's hot

ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий КузьминClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
HOWWEDOIT
 
Анализируем данные с Clickhouse
Анализируем данные с  ClickhouseАнализируем данные с  Clickhouse
Анализируем данные с Clickhouse
Александр Сигачев
 
Clickhouse
ClickhouseClickhouse
Clickhouse
Clickky
 
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...
Ontico
 
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Ontico
 
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
it-people
 
Электронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaЭлектронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark Scala
Roman Zykov
 
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Ontico
 
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Ontico
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
Ontico
 
Александр Сербул —1С-Битрикс — ICBDA 2015
Александр Сербул —1С-Битрикс — ICBDA 2015Александр Сербул —1С-Битрикс — ICBDA 2015
Александр Сербул —1С-Битрикс — ICBDA 2015
rusbase
 
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Ontico
 
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
Ontico
 
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
Dev2Dev
 
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)Ontico
 
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
Ontico
 
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
2ГИС Технологии
 
Shadow Fight 2: архитектура системы аналитики для миллиарда событий
Shadow Fight 2: архитектура системы аналитики для миллиарда событийShadow Fight 2: архитектура системы аналитики для миллиарда событий
Shadow Fight 2: архитектура системы аналитики для миллиарда событий
Vyacheslav Nikulin
 
MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?Alexey Tokar
 
Cергей Коржнев, 2ГИС
Cергей Коржнев, 2ГИСCергей Коржнев, 2ГИС
Cергей Коржнев, 2ГИС
Ontico
 

What's hot (20)

ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий КузьминClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
 
Анализируем данные с Clickhouse
Анализируем данные с  ClickhouseАнализируем данные с  Clickhouse
Анализируем данные с Clickhouse
 
Clickhouse
ClickhouseClickhouse
Clickhouse
 
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...
 
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
 
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
 
Электронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaЭлектронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark Scala
 
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
 
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
Александр Сербул —1С-Битрикс — ICBDA 2015
Александр Сербул —1С-Битрикс — ICBDA 2015Александр Сербул —1С-Битрикс — ICBDA 2015
Александр Сербул —1С-Битрикс — ICBDA 2015
 
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
 
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
 
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
 
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
 
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
 
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
 
Shadow Fight 2: архитектура системы аналитики для миллиарда событий
Shadow Fight 2: архитектура системы аналитики для миллиарда событийShadow Fight 2: архитектура системы аналитики для миллиарда событий
Shadow Fight 2: архитектура системы аналитики для миллиарда событий
 
MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?
 
Cергей Коржнев, 2ГИС
Cергей Коржнев, 2ГИСCергей Коржнев, 2ГИС
Cергей Коржнев, 2ГИС
 

Similar to Где сегодня использовать ElasticSearch

Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ontico
 
Frontera обход испанского интернета
Frontera обход испанского интернетаFrontera обход испанского интернета
Frontera обход испанского интернета
Alexander Sibiryakov
 
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
it-people
 
Пётр Зайцев, Percona
Пётр Зайцев, PerconaПётр Зайцев, Percona
Пётр Зайцев, Percona
Ontico
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Ontico
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного Хецнера
Daniel Podolsky
 
Анализ доменной зоны TJ
Анализ доменной зоны TJАнализ доменной зоны TJ
Анализ доменной зоны TJIvan Golodov
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеit-people
 
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Ontico
 
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
HappyDev
 
Aлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreetAлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreet
Ontico
 
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
HappyDev-lite
 
Карта граблей на поле сбора и доставки логов. Lazada-way.
Карта граблей на поле сбора и доставки логов. Lazada-way.Карта граблей на поле сбора и доставки логов. Lazada-way.
Карта граблей на поле сбора и доставки логов. Lazada-way.
Yury Bushmelev
 
Карта граблей на поле сбора и доставки логов. Lazada-way / Юрий Бушмелев (Laz...
Карта граблей на поле сбора и доставки логов. Lazada-way / Юрий Бушмелев (Laz...Карта граблей на поле сбора и доставки логов. Lazada-way / Юрий Бушмелев (Laz...
Карта граблей на поле сбора и доставки логов. Lazada-way / Юрий Бушмелев (Laz...
Ontico
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Колёса Крыша Маркет
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Mad Devs
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBIurii Ogiienko
 
Байтоадресуемая энергонезависимая память и СУБД
Байтоадресуемая энергонезависимая память и СУБДБайтоадресуемая энергонезависимая память и СУБД
Байтоадресуемая энергонезависимая память и СУБД
Andrei Nikolaenko
 
олег царев Rit 2010 реляционные субд и их нереляционные реализации
олег царев Rit 2010   реляционные субд и их нереляционные реализацииолег царев Rit 2010   реляционные субд и их нереляционные реализации
олег царев Rit 2010 реляционные субд и их нереляционные реализацииrit2010
 
Rit 2010 реляционные олег царев субд и их нереляционные реализации
Rit 2010   реляционные олег царев субд и их нереляционные реализацииRit 2010   реляционные олег царев субд и их нереляционные реализации
Rit 2010 реляционные олег царев субд и их нереляционные реализацииrit2010
 

Similar to Где сегодня использовать ElasticSearch (20)

Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
Frontera обход испанского интернета
Frontera обход испанского интернетаFrontera обход испанского интернета
Frontera обход испанского интернета
 
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
 
Пётр Зайцев, Percona
Пётр Зайцев, PerconaПётр Зайцев, Percona
Пётр Зайцев, Percona
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного Хецнера
 
Анализ доменной зоны TJ
Анализ доменной зоны TJАнализ доменной зоны TJ
Анализ доменной зоны TJ
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилище
 
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
 
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
 
Aлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreetAлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreet
 
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
 
Карта граблей на поле сбора и доставки логов. Lazada-way.
Карта граблей на поле сбора и доставки логов. Lazada-way.Карта граблей на поле сбора и доставки логов. Lazada-way.
Карта граблей на поле сбора и доставки логов. Lazada-way.
 
Карта граблей на поле сбора и доставки логов. Lazada-way / Юрий Бушмелев (Laz...
Карта граблей на поле сбора и доставки логов. Lazada-way / Юрий Бушмелев (Laz...Карта граблей на поле сбора и доставки логов. Lazada-way / Юрий Бушмелев (Laz...
Карта граблей на поле сбора и доставки логов. Lazada-way / Юрий Бушмелев (Laz...
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
Байтоадресуемая энергонезависимая память и СУБД
Байтоадресуемая энергонезависимая память и СУБДБайтоадресуемая энергонезависимая память и СУБД
Байтоадресуемая энергонезависимая память и СУБД
 
олег царев Rit 2010 реляционные субд и их нереляционные реализации
олег царев Rit 2010   реляционные субд и их нереляционные реализацииолег царев Rit 2010   реляционные субд и их нереляционные реализации
олег царев Rit 2010 реляционные субд и их нереляционные реализации
 
Rit 2010 реляционные олег царев субд и их нереляционные реализации
Rit 2010   реляционные олег царев субд и их нереляционные реализацииRit 2010   реляционные олег царев субд и их нереляционные реализации
Rit 2010 реляционные олег царев субд и их нереляционные реализации
 

Где сегодня использовать ElasticSearch

  • 2. Чем занимаюсь • Создаю инфраструктуру для аналитиков • Инструменты сбора данных о действиях пользователей • Системой АБ-тестов и т.д
  • 3. О посетителей в день 1 млн. посетителей в месяц 17 млн. сотрудников >390 Туту.ру — сервис путешествий №1 в России (данные кросс-медийной панели GfK Rus, дек. 2016). Продаем туры, билеты на самолеты, поезда и автобусы, бронируем отели, рассказываем о расписании электричек.
  • 4. О чем? • Основные понятия и терминология • Пройдемся по кейсам 1. Полнотекстовый поиск 2. Изменчивая структура данных 3. Хранение логов 4. Аналитическое хранилище 5. Хранилище для DWH
  • 6. Ехал Индекс через индекс. 
 Сунул Индекс индекс в индекс… • Индекс - от англ. indices, группа инвертированных индексов • Поле индекса - на англ. index, а этот тот самый инвертированный индекс
  • 7. 1. Полнотекстовый поиск Задача — Саджесты/подсказки в формах поиска Требования • Быстрый ответ на индексе в несколько gb • Обслуживать много запросов на чтение • Возможность частичного обновления • Высокие требования к стабильности
  • 8. ✅ Получили • Гибкая настройка ранжирования • Работа с синонимами • Отправка запросов напрямую из nginx
 без задержки на запрос к бекендам • Минимум затрат на поддержку решения 
 в эксплуатации более двух лет Объемы данных • 7000 запросов в минуту • Размер индекса 12 гб • ~ 6 млн. документов • Скорость ответа 10мс Машинки • 3-и ноды • по 8gb RAM • по 4-е ядра • Утилизация ~20% 1. Полнотекстовый поиск
  • 9. 2. Изменчивая структура Задача — Кеш поисковой выдачи туров
  • 10. 2. Изменчивая структура Задача — Кеш поисковой выдачи туров Требования • Легкость добавления новых полей в документ • Легкость адаптации данных к поискам по разным параметрам • Фасетный поиск + полнотекст
  • 11. Жила была MongoDB • Каждый новый запрос на выборку - новый индекс • 40+ индексов • Долгая индексация документов • Около полугода периодического тюнинга 2. Изменчивая структура
  • 12. ✅ Получили • Стабильная работа и ускорение • Мало накладных расходов на добавление новых полей • Проще поддержка • Возможность построить аналитику Объем данных • Размер индекса 50gb • Вставка 40 т. записей в минуту Машинки • 3-и ноды на MongoDB было 6-ть • По 8gb RAM • По 8 ядер • 250gb SSD 2. Изменчивая структура
  • 13. 3. Хранение логов Задача — Распределенное хранилище логов приложений Требования • Большие объемы неструктурированных данных • Искать по любому полю и строить визуализацию • Легкие запросы • Простой способ исследовать данные
  • 14. ✅ Получили • Исследуем данные в kibana • Пишем через logstash • Алертинг и визуализация из grafana • Hot-Warm - экономит деньги 3. Хранение логов
  • 15. ❌ Минусы • Без очереди - никуда. Используем redis • Требует поддержки • Требователен к ресурсам • Сложность выявлять узкие места, нужно больше метрик 3. Хранение логов Объем данных • Размер индекса ~20TB • Вставка ~1.2 млн. записей в минуту
 63 Мбит/с • 22 млрд. записей в индексах Машинки • 14 нод (bare metal server) • 2-а координатора • 6 ssd - свежие индексы • 6 hdd - старые индексы • По 64 RAM и 16 ядер • Доступный объем в кластере 43TB SSD + HDD
  • 16. Дальнейшие планы — Смотрим в сторону clickhouse, но пока болит не сильно 3. Хранение логов
  • 17. 4. Аналитическое хранилище Задача — Быстрый* доступ к clickstream за несколько лет Требования • Тяжёлые запросы • Низкие требования по SLA
  • 20. ✅ Получили • Аналитики строят сложные агрегации из python и визуализации в kibana Объем данных • Размер индекса ~10TB • Вставка ~18 т. записей в минуту • 16 млрд. записей в индексе Машинки • 12 нод (bare metal server) • По 64 RAM • По 16 ядер • Всего 42 TB SSD • Утилизация 5%-100% 4. Аналитическое хранилище
  • 21. ✅ Получили • Аналитики строят сложные агрегации из python и визуализации в kibana • Связи через parent/child Объем данных • Размер индекса ~10TB • Вставка ~18 т. записей в минуту • 16 млрд. записей в индексе Машинки • 12 нод (bare metal server) • По 64 RAM • По 16 ядер • Всего 42 TB SSD • Утилизация 5%-100% 4. Аналитическое хранилище
  • 22. ✅ Получили • Аналитики строят сложные агрегации из python и визуализации в kibana • Связи через parent/child • Гибкое и простое масштабирование • Бесплатно Объем данных • Размер индекса ~10TB • Вставка ~18 т. записей в минуту • 16 млрд. записей в индексе Машинки • 12 нод (bare metal server) • По 64 RAM • По 16 ядер • Всего 42 TB SSD • Утилизация 5%-100% 4. Аналитическое хранилище
  • 23. ❌ Минусы • Не можем разбивать/партиционировать индекс по времени • Связи накладывают ограничения 4. Аналитическое хранилище
  • 24. ❌ Минусы • Не можем разбивать/партиционировать индекс по времени • Связи накладывают ограничения 4. Аналитическое хранилище
  • 25. ❌ Минусы • Не можем разбивать/партиционировать индекс по времени • Связи накладывают ограничения • Ограничения кол-ва записей в шарде (2,147,483,519 документов) • Размер шард < 50gb • Нет SQL ANSI
 Время на обучение аналитика работы с хранилищем • Ограниченное использование BI инструментов
 Microsoft Power BI, Tableau и пр. • Неоптимальное использование ресурсов
 Кластер в среднем утилизирован на 10% • Только append only 4. Аналитическое хранилище
  • 26. 4. Аналитическое хранилище К чему пришли • ElasticSearch прожил 3-и года и останется, но в качестве витрины • Будем менять модель данных • Используем хранилища с SQL для BI • Хранить историчные данные в DWH
  • 27. 5. Хранилище для DWH Задача — Хранение результатов поисков пользователей Требования • К данным обращаются редко • Неизвестно как будут выбирать и какие агрегации строить • Хранить нужно за всю историю проекта и не разориться
  • 28. 5. Хранилище для DWH Получили Ну точнее хотели получить • Сложные агрегации - если бы все ресурсы не забивала индексация • Простое масштабирование Объем данных • В пиках до 600mb в минуту, 
 460gb в сутки • 1.5 млн. записей в сутки Машинки • 3 ноды • По 64gb RAM • По 16 ядер • Всего 12TB HDD
  • 29. 5. Хранилище для DWH ❌ Минусы • Не оптимально работает с диском
  • 30. 5. Хранилище для DWH ❌ Минусы • Не оптимально работает с диском • Каждый документ - это дополнительный расход памяти
 при выборке по полю индекс шарды целиком загружаются в память • Избегать большой иерархии документов
  • 31. 5. Хранилище для DWH К чему пришли • Пишем через kafka connect пачками в S3 • Аналитика данных через python или spark из S3 • Вместо 5TB в elastic, уместили все в архивы по 700MB
  • 32. • 10 кластеров • Всего 49 нод • Обрабатывают в среднем 2.5 млн. запросов в минуту Общее кол-во инсталляций
  • 33. Итог • Мощь ElasticSearch не в оптимальности используемых ресурсов, а в его универсальности и гибкости
 Кейсы: DWH, полнотекстовый поиск, изменчевая структура данных
  • 34. Итог • Мощь ElasticSearch не в оптимальности используемых ресурсов, а в его универсальности и гибкости • Требователен к объему памяти и скорости дисков
 Кейсы: аналитическое хранилище, логи, DWH
  • 35. Итог • Мощь ElasticSearch не в оптимальности используемых ресурсов, а в его универсальности и гибкости • Требователен к объему памяти и скорости дисков • Хорошо справляется с десятками терабайт данных
 Кейсы: аналитическое хранилище, логи
  • 36. Итог • Мощь ElasticSearch не в оптимальности используемых ресурсов, а в его универсальности и гибкости • Требователен к объему памяти и скорости дисков • Хорошо справляется с десятками терабайт данных • Храните денормализованные данные в плоской структуре
 Кейсы: аналитическое хранилище, логи
  • 37. Итог • Мощь ElasticSearch не в оптимальности используемых ресурсов, а в его универсальности и гибкости • Требователен к объему памяти и скорости дисков • Хорошо справляется с десятками терабайт данных • Храните денормализованные данные в плоской структуре • Нарезайте индексы по временным промежуткам
 Кейсы: аналитическое хранилище, логи
  • 38. Итог • Мощь ElasticSearch не в оптимальности используемых ресурсов, а в его универсальности и гибкости • Требователен к объему памяти и скорости дисков • Хорошо справляется с десятками терабайт данных • Храните денормализованные данные в плоской структуре • Нарезайте индексы по временным промежуткам • Append only
 Кейсы: аналитическое хранилище
  • 39. Спасибо# Кейсы 1. Полнотекстовый поиск 2. Изменчивая структура данных 3. Хранение логов 4. Аналитическое хранилище 5. Хранилище для DWH Выводы • ElasticSearch - это гибкость • Платим памятью и скоростью дисков • Хорош для средних объемов данных • Хранение денормализованных данных • Нарезайте индексы по времени • Append only Илья Середа weberdever sereda@tutu.ru