Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.
В эпоху DT сотни миллионов серверов, мобильных терминалов и сетевых устройств ежедневно генерируют огромное количество журналов.
Решение для централизованной обработки журналов эффективно решает проблему использования журналов на протяжении всего жизненного цикла, а сбор журналов с устройства в облако является первым шагом.
вместе сбольшие данныевсе больше и больше внимания уделяется,данныеПроблема сбора стала особенно заметной。Сегодня я хотел бы познакомить вас с несколькимиданные Платформа сбора:
Платформа больших данных и сбор данных
Любая полноценная платформа больших данных обычно включает в себя следующие процессы:
данныеколлекция–>данныехранилище–>данныеиметь дело с–>данныепоказывать(Визуализация,отчетность и мониторинг)
Среди них сбор данных имеет важное значение для всех систем данных. Поскольку большим данным уделяется все больше внимания, проблемы сбора данных становятся особенно заметными. К ним относятся:
Сегодня мы рассмотрим шесть доступных в настоящее время продуктов для сбора данных, сосредоточив внимание на том, как они достигают высокой надежности, высокой производительности и высокой масштабируемости.
1、Apache Flume
Официальный сайт: https://flume.apache.org/.
Flume — это высоконадежная, масштабируемая и простая в управлении система сбора данных с открытым исходным кодом под управлением Apache, которая поддерживает расширение клиентов. Flume создан с использованием JRuby, поэтому он опирается на среду выполнения Java.
Изначально Flume был разработан инженерами Cloudera как система для объединения данных журналов, а позже был разработан для обработки событий потоковой передачи данных.
Flume спроектирован как распределенная конвейерная архитектура, которую можно рассматривать как сеть агентов между источниками данных и пунктами назначения для поддержки маршрутизации данных.
Каждый агент состоит из источника, канала и приемника.
Source
Источник отвечает за получение входных данных и запись данных в канал. Источник Flume поддерживает HTTP, JMS, RPC, NetCat, Exec, каталог спулинга. Буферизация поддерживает мониторинг каталога или файла и анализ вновь созданных событий в нем.
Channel
Канал хранит и кэширует промежуточные данные от источника к приемнику. Каналы могут быть созданы с использованием различных конфигураций, таких как память, файлы, JDBC и т. д. Использование памяти обеспечивает высокую производительность, но не является долговечным и может привести к потере данных. Использование файлов более надежно, но не так эффективно, как память.
Sink
Приемник отвечает за чтение данных из конвейера и отправку их следующему агенту или конечному пункту назначения. Sink поддерживает различные типы мест назначения: HDFS, HBASE, Solr, ElasticSearch, File, Logger или другие агенты Flume.
Flume использует механизм транзакций как на стороне источника, так и на стороне приемника, чтобы гарантировать отсутствие потери данных во время передачи данных.
Данные об Источнике можно копировать в разные каналы. Каждый канал также может быть подключен к разному количеству приемников. Таким образом, можно сформировать сложную сеть сбора данных, подключив Агентов с разными конфигурациями. Путем настройки агента можно сформировать сеть передачи данных со сложной маршрутизацией.
Настройте структуру агента, как показано на рисунке выше. Flume поддерживает настройку аварийного переключения и балансировки нагрузки приемника, что гарантирует, что даже в случае сбоя одного агента вся система все равно сможет нормально собирать данные.
Контент, передаваемый в Flume, определяется как событие, и событие состоит из заголовков (включая метаданные, метаданные) и полезных данных.
Flume предоставляет SDK для поддержки индивидуальной разработки:
Клиент Flume отвечает за отправку событий агенту Flume в источнике события. Клиент обычно находится в том же пространстве процесса, что и приложение, создавшее источник данных. Общие клиенты Flume включают Avro, log4J, syslog и HTTP Post. Кроме того, ExecSource поддерживает указание выходных данных локального процесса в качестве входных данных Flume. Конечно, вполне возможно, что ни один из вышеперечисленных клиентов не сможет удовлетворить потребности. Пользователи смогут настроить клиент для взаимодействия с существующим источником FLume или настроить и реализовать новый тип источника.
В то же время пользователи могут использовать SDK Flume для настройки источника и приемника. Похоже, что настроенный канал не поддерживается.
2、Fluentd
Официальный сайт: http://docs.fluentd.org/articles/quickstart.
Fluentd — еще одна платформа сбора данных с открытым исходным кодом. Fluentd разработан с использованием C/Ruby и использует файлы JSON для унификации данных журналов. Его подключаемая архитектура поддерживает множество источников данных и выходных данных разных типов и форматов. Наконец, он также обеспечивает одновременно высокую надежность и хорошую масштабируемость. Этот продукт поддерживается и обслуживается Treasure Data, Inc.
Развертывание Fluentd очень похоже на Flume:
Архитектурный дизайн Fluentd точно такой же, как у Flume:
Вход/буфер/выход Fluentd очень похож на источник/канал/приемник Flume.
Input
Ввод отвечает за получение данных или активный захват данных. Поддержка системного журнала, http, хвоста файла и т. д.
Buffer
Буфер отвечает за производительность и надежность сбора данных. Существуют также различные типы буферов, такие как файлы или память, которые можно настроить.
Output
Вывод отвечает за вывод данных в такие места назначения, как файлы и другие файлы Fluentd.
Конфигурация Fluentd очень удобна, как показано ниже:
Технологический стек Fluentd выглядит следующим образом:
FLuentd и его плагины разработаны на Ruby, а MessgaePack обеспечивает сериализацию JSON и механизмы асинхронной параллельной связи RPC.
Cool.io — это управляемая событиями среда, основанная на libev.
FLuentd очень масштабируем, и клиенты могут самостоятельно настраивать (Ruby) ввод/буфер/вывод.
Fluentd во всех аспектах очень похож на Flume. Разница в том, что он разработан с использованием Ruby. Footprint меньше, но также создает проблемы с кроссплатформенностью и не поддерживает платформу Windows. Кроме того, еще одной особенностью является использование унифицированного формата данных/журналов JSON. По сравнению с Flumed конфигурация относительно проста.
3、Logstash
https://github.com/elastic/logstash
Logstash — это буква L в знаменитом стеке данных с открытым исходным кодом ELK (ElasticSearch, Logstash, Kibana).
Logstash разработан с использованием JRuby, и все среды выполнения зависят от JVM.
Архитектура развертывания Logstash показана ниже. Конечно, это только вариант развертывания.
Типичная конфигурация Logstash выглядит следующим образом, включая настройки ввода, фильтра и вывода.
Почти в большинстве случаев ELK используется одновременно в качестве стека. Во всех случаях, когда ваша система данных использует ElasticSearch, logstash — лучший выбор.
4、Chukwa
Официальный сайт: https://chukwa.apache.org/.
Apache Chukwa — еще одна платформа сбора данных с открытым исходным кодом под управлением Apache. Она гораздо менее известна, чем другие. Chukwa построена на основе Hadoop HDFS и Map Download (очевидно, она реализована на Java), что обеспечивает масштабируемость и надежность. Chukwa также обеспечивает отображение, анализ и мониторинг данных. Что странно, так это то, что последнее обновление GitHub было 7 лет назад. Видно, что проект больше не должен быть активным.
Архитектура развертывания Chukwa следующая:
Основными модулями Chukwa являются: Agent, Collector, DataSink, ArchiveBuilder, Demux и т. д., что кажется довольно сложным. Поскольку проект уже не активен, мы не будем рассматривать его более подробно.
5、Scribe
Хостинг кода: https://github.com/facebookarchive/scribe
Scribe — это система сбора данных (журналов), разработанная Facebook. Его не обслуживали уже много лет, поэтому я не буду больше говорить об этом.
6、Splunk Forwarder
Официальный сайт: http://www.splunk.com/
Все вышеперечисленные системы имеют открытый исходный код. Среди коммерческих продуктов платформы больших данных Splunk обеспечивает полный интеллектуальный анализ данных, хранение данных, анализ и обработку данных, а также возможности представления данных.
Splunk — это распределенная платформа машинных данных, выполняющая три основные роли:
Splunk имеет встроенную поддержку системного журнала, TCP/UDP и буферизации. В то же время пользователи могут получать определенные данные, разрабатывая входные и модульные входные данные. В программном хранилище Splunk имеется множество зрелых приложений для сбора данных, таких как базы данных (DBConnect) и т. д., которые могут легко получать данные из облака или базы данных на платформу данных Splunk для анализа.
Здесь следует отметить, что и Search Head, и Indexer поддерживают конфигурацию кластера, которая отличается высокой доступностью и высокой масштабируемостью, но Splunk пока не имеет функции кластера для Farwarder. То есть, если машина Farwarder выйдет из строя, сбор данных будет прерван, и текущая задача сбора данных не может быть передана другим устройствам Farwarder.
Подвести итог
Мы кратко обсудили несколько популярных платформ сбора данных, большинство из которых обеспечивают высоконадежный и масштабируемый сбор данных. Большинство платформ абстрагируют архитектуру входных, выходных и промежуточных буферов. Используя распределенные сетевые соединения, большинство платформ могут достичь определенной степени масштабируемости и высокой надежности.
Среди них Flume и Fluentd — два наиболее часто используемых продукта. Если вы используете ElasticSearch, Logstash может быть первым выбором, поскольку стек ELK обеспечивает хорошую интеграцию. Chukwa и Scribe не рекомендуются из-за неактивности проекта.
Будучи отличным коммерческим продуктом, Splunk по-прежнему имеет определенные ограничения в сборе данных. Я считаю, что Splunk вскоре разработает более эффективные решения для сбора данных.
Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/132851.html Исходная ссылка: https://javaforall.cn