Следующая иллюстрация изображает базовую архитектуру Flume. Как показано на рисунке, генераторы данных (такие как Facebook, Twitter) генерируют данные, которые собираются отдельными агентами Flume , работающими на них. После этого сборщик данных (который также является агентом) собирает данные от агентов, которые объединяются и помещаются в централизованное хранилище, такое как HDFS или HBase.
Flume Event
Событие является основной единицей данных, транспортируемых внутри Flume . Он содержит полезную нагрузку байтового массива, который должен быть перенесен из источника в пункт назначения с дополнительными заголовками. Типичное событие Flume будет иметь следующую структуру —
Flume Agent
Агент — это независимый демон-процесс (JVM) в Flume. Он получает данные (события) от клиентов или других агентов и перенаправляет их в следующий пункт назначения (приемник или агент). Flume может иметь более одного агента. Следующая диаграмма представляет Flume Agent
Как показано на схеме, Flume Agent содержит три основных компонента, а именно: источник , канал и приемник .
Источник
Источник — это компонент Агента, который получает данные от генераторов данных и передает их по одному или нескольким каналам в форме событий Flume.
Apache Flume поддерживает несколько типов источников, и каждый источник получает события от указанного генератора данных.
Пример — источник Avro, источник Thrift, источник Twitter 1% и т. Д.
канал
Канал — это временное хранилище, которое получает события от источника и буферизирует их до тех пор, пока они не будут поглощены приемниками. Он действует как мост между источниками и раковинами.
Эти каналы полностью транзакционны и могут работать с любым количеством источников и приемников.
Пример — канал JDBC, канал файловой системы, канал памяти и т. Д.
тонуть
Приемник хранит данные в централизованных хранилищах, таких как HBase и HDFS. Он потребляет данные (события) из каналов и доставляет их к месту назначения. Назначением приемника может быть другой агент или центральные магазины.
Пример — сток HDFS
Примечание . Агент распространения может иметь несколько источников, приемников и каналов. Мы перечислили все поддерживаемые источники, приемники, каналы в главе о конфигурации Flume этого руководства.
Дополнительные компоненты Flume Agent
То, что мы обсуждали выше, это примитивные компоненты агента. В дополнение к этому у нас есть еще несколько компонентов, которые играют жизненно важную роль в передаче событий из генератора данных в централизованные хранилища.
Перехватчики
Перехватчики используются для изменения / проверки событий потока, которые передаются между источником и каналом.
Селекторы каналов
Они используются для определения того, какой канал должен быть выбран для передачи данных в случае нескольких каналов. Есть два типа селекторов каналов —
-
Селекторы каналов по умолчанию — Они также известны как копирующие селекторы каналов, они реплицируют все события в каждом канале.
-
Мультиплексные селекторы каналов — они решают, что канал должен отправлять событие, основываясь на адресе в заголовке этого события.
Селекторы каналов по умолчанию — Они также известны как копирующие селекторы каналов, они реплицируют все события в каждом канале.
Мультиплексные селекторы каналов — они решают, что канал должен отправлять событие, основываясь на адресе в заголовке этого события.
Процессоры раковины
Они используются для вызова определенного приемника из выбранной группы приемников. Они используются для создания путей аварийного переключения для ваших приемников или событий балансировки нагрузки между несколькими приемниками из канала.