Elasticsearch — инструмент для сбора и анализа данных среднего объёма | OTUS

Elasticsearch — инструмент для сбора и анализа данных среднего объёма

photo_2021_10_07_15_37_01-1801-136f82.jpg

Если бизнес предполагает выполнение анализа статистических данных, которые поступают из разных источников, то вам в любом случае потребуется эти данные не только собирать и хранить, но и индексировать, анализировать и даже преобразовывать в другие данные. Какое решение подойдёт лучше, если речь идёт о данных среднего объёма? Об этом — наша статья.

На практике мы нередко сталкиваемся с тем, что масштаб проекта недостаточен для внедрения крупных платформ типа Hadoop. В таком случае следует обратить внимание на стандартные NoSQL-решения, позволяющие эффективно работать с данными среднего объёма. Именно к таковым решениям и относится Elasticsearch.

Elasticsearch — что это?

Elasticsearch представляет собой кластерную NoSQL с JSON REST API. Его можно назвать нереляционным хранилищем документов в JSON-формате и поисковой системой на базе полнотекстового Lucene-поиска. Аппаратной платформой является JVM — Java Virtual Machine. При этом официальные клиенты доступны на: • Python, • Groovy, • Java, • NET (C#), • PHP, • Perl, • JavaScript, • Ruby.

Elasticsearch разработан компанией Elastic одновременно со связанными проектами (их называют Elastic Stack) — Logstash, Elasticsearch, Beats, Kibana. Kibana осуществляет визуализацию данных через web-интерфейс. Beats — это отправители данных с разных устройств и легковесные агенты. Logstash обеспечивает сбор и обработку данных зарегистрированных событий. Что касается хранения и поиска данных, то за них отвечает Elasticsearch.

В настоящее время Elastic Stack широко используется такими компаниями, как eBay, Adobe, Uber, Volkswagen, Microsoft, Netflix, Amazon и пр. Так почему Elasticsearch так привлекателен?

Пару фактов о системе

Elasticsearch отлично подходит для работы в рамках определённого объёма данных (20–30 млрд документов в индексах, 2–10 терабайт в год), плюс прекрасно интегрируется с кластером Spark.

Агенты (Beats) помогают собирать интересующую информацию на конкретном сервере или устройстве. Посредством этих агентов мы можем собирать различного рода данные: логи ОС Linux, системную информацию Windows, данные устройства на Android. Также есть возможность самостоятельно выполнять анализ трафика с устройства, будь то HTTP, TCP и так далее.

При этом Logstash, локальный для инфраструктуры каждого здания, прекрасно справляется с отправкой данных, которые собирают агенты устройств в централизованный кластер Elasticsearch. Ну а Kibana предоставляет нам удобный способ построения web-отчётов.

О масштабируемости

Эта подсистема статистики способна работать с любой сферой деятельности, в которой нужен сбор и анализ статистических данных, имеющих средний объём. Как пример — обработка статистической информации с одной тысячи до 30 тысяч ноутбуков, мобильных устройств, интерактивных панелей, холодильников и т. п.

Если устройств меньше 1–3 тысячи, то система является избыточной, поэтому лучше обратить внимание на более простые решения. Оптимальный вариант — количество устройств в пределах 10–30 тысяч единиц. Если устройств будет 50 тысяч и более, мы столкнёмся с усложнением системы, поэтому тут тоже лучше искать другое решение. Впрочем, если воспринимать 50–100 тысяч устройств в качестве трёх сегментов по 15–30 тысяч, то мы можем просто запустить 3 подсистемы нашей статистики.

Главная идея — чем больше изолированы «сектора», тем проще использовать решение формата «3 по 30».

Что на базе собранных данных могут получить аналитики?

Наиболее часто встречающийся сценарий — сбор и хранение всей статистики (сырой) по всем сервисам и устройствам за последний месяц и с последующей агрегацией статистики по дням и группировкой по зданиям с «бессрочным» хранением результата. То есть Raw-индексы перезаписываются новыми данными ежемесячно, а Agg-индексы накапливаются «бесконечно» по дням, пока это позволяет дисковое пространство. Прочие пожелания по разбивке и группировке данных (например, по визуальному представлению, аналитическим срезам и т. п.) осуществляются аналитиками самостоятельно с помощью Kibana или Power BI.

Время от времени некоторые данные (обычно новые, получаемые из исходных), выделяют в отдельную задачу предварительного расчёта. Эта задача выполняется посредством вычислительной платформы Spark «по расписанию» с последующим сохранением в очередной Agg-индекс, из которого эти данные уже попадают в сложные отчёты.

photo_2021_10_07_15_37_01-1801-136f82.jpg

По материалам статьи «Почему Elasticsearch — хороший выбор для сбора и анализа данных среднего объёма».

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто