Хорошая регистрация в наших приложениях очень важна, если не самая важная. Эти журналы особенно помогают нам, когда вы пытаетесь отладить какие-либо проблемы или отслеживать состояние. При этом очень важно иметь надежный и эффективный способ ведения журнала, чтобы не потерять журналы транзакций. Здесь на помощь приходит Apache Flume.

Что такое Apache Flume

Apache Flume – это надежная и распределенная система для эффективного сбора, агрегирования и перемещения больших объемов данных журналов. Он собирает данные журналов, присутствующие в файлах журналов с различных веб-серверов, и объединяет их в HDFS для анализа.

Что такое агент Flume

Агент Flume — это процесс JVM, состоящий из 3 компонентов, через которые распространяются события после их инициирования во внешнем источнике:

  • Источник Flume — получает события, сгенерированные внешним источником (веб-сервером). После получения события он сохраняет его в одном или нескольких каналах. Пример — источник Avro, источник Thrift, источник Twitter 1% и т. д.
  • Flume Channel. Они действуют как хранилища для хранения события до тех пор, пока оно не будет использовано приемником Flume. Он может использовать локальную файловую систему для хранения этих событий. Пример — канал JDBC, канал файловой системы, канал памяти и т. д.
  • Flume Sink — удаляет событие из канала и сохраняет его во внешнем репозитории, таком как HDFS. При наличии нескольких агентов лотка приемник лотка перенаправит событие источнику лотка следующего агента лотка в потоке. Пример — приемник HDFS

Дополнительные компоненты

  • Перехватчики — используются для изменения/проверки событий канала, которые передаются между источником и каналом.[ссылка]
  • Селекторы каналов — используются для определения того, какой канал следует выбрать для передачи данных в случае нескольких каналов [ссылка]. Существует два типа селекторов каналов.
    Селекторы каналов по умолчанию. Они также известны как реплицирующие селекторы каналов, поскольку они реплицируют все события в каждом канале.
    Селекторы каналов мультиплексирования — они определяют канал для отправки события на основе адреса в заголовке события.
  • Процессоры приемников — используются для вызова определенного стока из выбранной группы приемников [ссылка]. Они используются для создания путей отработки отказа для ваших приемников или событий балансировки нагрузки между несколькими приемниками из канала.

Флейм-событие

Событие — это основная единица данных, передаваемых внутри Flume. Он содержит полезную нагрузку массива байтов, который должен быть передан от источника к месту назначения, сопровождаемый необязательными заголовками. Типичное событие Flume будет иметь следующую структуру ( ссылка)

Преимущества Flume

Apache flume имеет довольно много преимуществ перед другими системами [ ссылка] -:

  • Используя Apache Flume, мы можем хранить данные в любом из централизованных хранилищ, таких как HBase или HDFS.
  • Когда скорость входящих данных превышает скорость, с которой данные могут быть записаны в пункт назначения, Flume выступает в качестве посредника между производителями данных и централизованными хранилищами для поддержания постоянного потока данных.
  • Flume предоставляет функцию контекстной маршрутизации.
  • Flume гарантирует надежную доставку сообщений, поскольку транзакции в Flume основаны на каналах, где для каждого сообщения поддерживаются две транзакции (один отправитель и один получатель).
  • Flume также является отказоустойчивым, масштабируемым, управляемым и легко настраиваемым.

Установка и пример

Нашел этот действительно хороший учебник по ссылке David Taylor здесь для пошагового руководства.

Вот еще один пример настройки агента Flume для получения данных из твиттера ссылка

Другие возможные решения

Для отправки потоковых данных (файлов журналов, событий и т. д.) из различных источников в HDFS в нашем распоряжении также есть несколько других инструментов, если мы решим не использовать Apache Flume.

Если вам понравилась эта статья, подпишитесь на мои истории, а также ознакомьтесь с другими моими статьями.







Что такое Webpack в JavaScript?
Большинство из нас слышали термин «Webpack
при создании приложений JavaScript. Что это такое? Как это работает…javascript.plainenglish.io»