HTML Diff
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