0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Если бизнес предполагает выполнение анализа статистических данных, которые поступают из разных источников, то вам в любом случае потребуется эти данные не только собирать и хранить, но и индексировать, анализировать и даже преобразовывать в другие данные. Какое решение подойдёт лучше, если речь идёт о данных среднего объёма? Об этом - наша статья.</p>
1
<p>Если бизнес предполагает выполнение анализа статистических данных, которые поступают из разных источников, то вам в любом случае потребуется эти данные не только собирать и хранить, но и индексировать, анализировать и даже преобразовывать в другие данные. Какое решение подойдёт лучше, если речь идёт о данных среднего объёма? Об этом - наша статья.</p>
2
<p>На практике мы нередко сталкиваемся с тем, что масштаб проекта недостаточен для внедрения крупных платформ типа<strong>Hadoop</strong>. В таком случае следует обратить внимание на стандартные NoSQL-решения, позволяющие эффективно работать с данными среднего объёма. Именно к таковым решениям и относится<strong>Elasticsearch</strong>.</p>
2
<p>На практике мы нередко сталкиваемся с тем, что масштаб проекта недостаточен для внедрения крупных платформ типа<strong>Hadoop</strong>. В таком случае следует обратить внимание на стандартные NoSQL-решения, позволяющие эффективно работать с данными среднего объёма. Именно к таковым решениям и относится<strong>Elasticsearch</strong>.</p>
3
<h2>Elasticsearch - что это?</h2>
3
<h2>Elasticsearch - что это?</h2>
4
<p>Elasticsearch представляет собой кластерную NoSQL с JSON REST API. Его можно назвать нереляционным хранилищем документов в JSON-формате и поисковой системой на базе полнотекстового Lucene-поиска. Аппаратной платформой является JVM - Java Virtual Machine. При этом официальные клиенты доступны на: • Python, • Groovy, • Java, • NET (C#), • PHP, • Perl, • JavaScript, • Ruby.</p>
4
<p>Elasticsearch представляет собой кластерную NoSQL с JSON REST API. Его можно назвать нереляционным хранилищем документов в JSON-формате и поисковой системой на базе полнотекстового Lucene-поиска. Аппаратной платформой является JVM - Java Virtual Machine. При этом официальные клиенты доступны на: • Python, • Groovy, • Java, • NET (C#), • PHP, • Perl, • JavaScript, • Ruby.</p>
5
<p>Elasticsearch разработан компанией Elastic одновременно со связанными проектами (их называют Elastic Stack) - Logstash, Elasticsearch, Beats, Kibana. Kibana осуществляет визуализацию данных через web-интерфейс. Beats - это отправители данных с разных устройств и легковесные агенты. Logstash обеспечивает сбор и обработку данных зарегистрированных событий. Что касается хранения и поиска данных, то за них отвечает Elasticsearch.</p>
5
<p>Elasticsearch разработан компанией Elastic одновременно со связанными проектами (их называют Elastic Stack) - Logstash, Elasticsearch, Beats, Kibana. Kibana осуществляет визуализацию данных через web-интерфейс. Beats - это отправители данных с разных устройств и легковесные агенты. Logstash обеспечивает сбор и обработку данных зарегистрированных событий. Что касается хранения и поиска данных, то за них отвечает Elasticsearch.</p>
6
<p>В настоящее время Elastic Stack широко используется такими компаниями, как eBay, Adobe, Uber, Volkswagen, Microsoft, Netflix, Amazon и пр. Так почему Elasticsearch так привлекателен?</p>
6
<p>В настоящее время Elastic Stack широко используется такими компаниями, как eBay, Adobe, Uber, Volkswagen, Microsoft, Netflix, Amazon и пр. Так почему Elasticsearch так привлекателен?</p>
7
<h2>Пару фактов о системе</h2>
7
<h2>Пару фактов о системе</h2>
8
<p>Elasticsearch отлично подходит для работы в рамках определённого объёма данных (20-30 млрд документов в индексах, 2-10 терабайт в год), плюс прекрасно интегрируется с кластером Spark.</p>
8
<p>Elasticsearch отлично подходит для работы в рамках определённого объёма данных (20-30 млрд документов в индексах, 2-10 терабайт в год), плюс прекрасно интегрируется с кластером Spark.</p>
9
<p>Агенты (Beats) помогают собирать интересующую информацию на конкретном сервере или устройстве. Посредством этих агентов мы можем собирать различного рода данные: логи ОС Linux, системную информацию Windows, данные устройства на Android. Также есть возможность самостоятельно выполнять анализ трафика с устройства, будь то HTTP, TCP и так далее.</p>
9
<p>Агенты (Beats) помогают собирать интересующую информацию на конкретном сервере или устройстве. Посредством этих агентов мы можем собирать различного рода данные: логи ОС Linux, системную информацию Windows, данные устройства на Android. Также есть возможность самостоятельно выполнять анализ трафика с устройства, будь то HTTP, TCP и так далее.</p>
10
<p>При этом Logstash, локальный для инфраструктуры каждого здания, прекрасно справляется с отправкой данных, которые собирают агенты устройств в централизованный кластер Elasticsearch. Ну а Kibana предоставляет нам удобный способ построения web-отчётов.</p>
10
<p>При этом Logstash, локальный для инфраструктуры каждого здания, прекрасно справляется с отправкой данных, которые собирают агенты устройств в централизованный кластер Elasticsearch. Ну а Kibana предоставляет нам удобный способ построения web-отчётов.</p>
11
<h2>О масштабируемости</h2>
11
<h2>О масштабируемости</h2>
12
<p>Эта подсистема статистики способна работать с любой сферой деятельности, в которой нужен сбор и анализ статистических данных, имеющих средний объём. Как пример - обработка статистической информации с одной тысячи до 30 тысяч ноутбуков, мобильных устройств, интерактивных панелей, холодильников и т. п.</p>
12
<p>Эта подсистема статистики способна работать с любой сферой деятельности, в которой нужен сбор и анализ статистических данных, имеющих средний объём. Как пример - обработка статистической информации с одной тысячи до 30 тысяч ноутбуков, мобильных устройств, интерактивных панелей, холодильников и т. п.</p>
13
<p>Если устройств меньше 1-3 тысячи, то<strong>система является избыточной</strong>, поэтому лучше обратить внимание на более простые решения. Оптимальный вариант - количество устройств в пределах 10-30 тысяч единиц. Если устройств будет 50 тысяч и более, мы столкнёмся с усложнением системы, поэтому тут тоже лучше искать другое решение. Впрочем, если воспринимать 50-100 тысяч устройств в качестве трёх сегментов по 15-30 тысяч, то мы можем просто запустить 3 подсистемы нашей статистики.</p>
13
<p>Если устройств меньше 1-3 тысячи, то<strong>система является избыточной</strong>, поэтому лучше обратить внимание на более простые решения. Оптимальный вариант - количество устройств в пределах 10-30 тысяч единиц. Если устройств будет 50 тысяч и более, мы столкнёмся с усложнением системы, поэтому тут тоже лучше искать другое решение. Впрочем, если воспринимать 50-100 тысяч устройств в качестве трёх сегментов по 15-30 тысяч, то мы можем просто запустить 3 подсистемы нашей статистики.</p>
14
<p>Главная идея - чем больше изолированы "сектора", тем проще использовать решение формата "3 по 30".</p>
14
<p>Главная идея - чем больше изолированы "сектора", тем проще использовать решение формата "3 по 30".</p>
15
<h2>Что на базе собранных данных могут получить аналитики?</h2>
15
<h2>Что на базе собранных данных могут получить аналитики?</h2>
16
<p>Наиболее часто встречающийся сценарий - сбор и хранение всей статистики (сырой) по всем сервисам и устройствам за последний месяц и с последующей агрегацией статистики по дням и группировкой по зданиям с "бессрочным" хранением результата. То есть Raw-индексы перезаписываются новыми данными ежемесячно, а Agg-индексы накапливаются "бесконечно" по дням, пока это позволяет дисковое пространство. Прочие пожелания по разбивке и группировке данных (например, по визуальному представлению, аналитическим срезам и т. п.) осуществляются аналитиками самостоятельно с помощью Kibana или Power BI.</p>
16
<p>Наиболее часто встречающийся сценарий - сбор и хранение всей статистики (сырой) по всем сервисам и устройствам за последний месяц и с последующей агрегацией статистики по дням и группировкой по зданиям с "бессрочным" хранением результата. То есть Raw-индексы перезаписываются новыми данными ежемесячно, а Agg-индексы накапливаются "бесконечно" по дням, пока это позволяет дисковое пространство. Прочие пожелания по разбивке и группировке данных (например, по визуальному представлению, аналитическим срезам и т. п.) осуществляются аналитиками самостоятельно с помощью Kibana или Power BI.</p>
17
<p>Время от времени некоторые данные (обычно новые, получаемые из исходных), выделяют в отдельную задачу предварительного расчёта. Эта задача выполняется посредством вычислительной платформы Spark "по расписанию" с последующим сохранением в очередной Agg-индекс, из которого эти данные уже попадают в сложные отчёты.</p>
17
<p>Время от времени некоторые данные (обычно новые, получаемые из исходных), выделяют в отдельную задачу предварительного расчёта. Эта задача выполняется посредством вычислительной платформы Spark "по расписанию" с последующим сохранением в очередной Agg-индекс, из которого эти данные уже попадают в сложные отчёты.</p>
18
<p><em>По материалам статьи "<a>Почему Elasticsearch - хороший выбор для сбора и анализа данных среднего объёма</a>".</em></p>
18
<p><em>По материалам статьи "<a>Почему Elasticsearch - хороший выбор для сбора и анализа данных среднего объёма</a>".</em></p>
19
19