Видео: Телефон заблокирован Meizu M3 note 2024
Некоторые из данных, которые попадают в распределенную файловую систему Hadoop (HDFS), могут попасть туда через операции загрузки базы данных или другие типы пакетных процессов, но что если вы хотите захватить данные, поступающие в потоки данных с высокой пропускной способностью, такие как данные журнала приложений? Apache Flume - это текущий стандартный способ сделать это легко, эффективно и безопасно.
Apache Flume , еще один проект верхнего уровня от Apache Software Foundation, представляет собой распределенную систему для агрегирования и перемещения больших объемов потоковых данных из разных источников в централизованное хранилище данных.
Другими словами, Flume предназначен для непрерывного приема данных в HDFS. Данные могут быть любыми данными, но Flume особенно подходит для обработки данных журнала, таких как данные журнала с веб-серверов. Единицы данных, которые процессы Flume называются событиями ; примером события является запись журнала.
Чтобы понять, как Flume работает в кластере Hadoop, вам нужно знать, что Flume работает как один или несколько агентов, и что каждый агент имеет три подключаемых компонента: источники, каналы и приемники:
-
Источники извлекают данные и отправляют их на каналы.
-
Каналы сохраняют очереди данных и служат в качестве каналов между источниками и приемниками, что полезно, когда скорость входящего потока превышает исходящий поток.
-
Снимает данные процесса, которые были взяты из каналов и доставляются в пункт назначения, например HDFS.
Агент должен иметь хотя бы один из каждого компонента для запуска, и каждый агент содержится в его собственном экземпляре виртуальной машины Java (JVM).
Событие, которое записывается в канал источником, не удаляется с этого канала, пока приемник не удалит его посредством транзакции. Если происходит сбой сети, каналы сохраняют свои очереди в очереди, пока приемники не смогут записать их в кластер. Канал в памяти может быстро обрабатывать события, но он изменчив и не может быть восстановлен, тогда как канал на основе файлов обеспечивает постоянство и может быть восстановлен в случае сбоя.
У каждого агента может быть несколько источников, каналов и приемников, и хотя источник может писать по многим каналам, приемник может принимать данные только из одного канала.
Агент - это просто JVM, на котором запущен Flume, а приемники для каждого узла агента в кластере Hadoop отправляют данные в узлы-сборщики , которые агрегируют данные от многих агентов до записывая его в HDFS, где он может быть проанализирован другими инструментами Hadoop.
Агенты могут быть соединены вместе, так что приемник от одного агента отправляет данные в источник от другого агента.Avro, система удаленного вызова и сериализации Apache, является обычным способом отправки данных по сети с помощью Flume, поскольку она служит полезным инструментом для эффективной сериализации или преобразования данных в компактный двоичный формат.
В контексте Flume совместимость важна: для события Avro требуется, например, источник Avro, и раковина должна доставлять события, соответствующие назначению.
Что делает эту отличную цепочку источников, каналов и стоков, является конфигурация Flume agent, которая хранится в локальном текстовом файле, который структурирован как файл свойств Java. Вы можете настроить несколько агентов в одном файле. Посмотрите пример файла, который называется flume-agent. conf - он настроен на настройку агента с именем shaman:
# Определить компоненты шамана агента: шамана. source = netcat_s1 шаман. sinks = hdfs_w1 шаман. channels = in-mem_c1 # Настроить источник: шаман. источники. netcat_s1. type = netcat shaman. источники. netcat_s1. bind = localhost shaman. источники. netcat_s1. port = 44444 # Опишите раковину: шаман. раковины. hdfs_w1. type = hdfs shaman. раковины. hdfs_w1. HDFS. path = hdfs: // шаман. раковины. hdfs_w1. HDFS. writeFormat = текстовый шаман. раковины. hdfs_w1. HDFS. fileType = DataStream # Настроить канал, который буферизует события в памяти: шаман. каналы. в-mem_c1. type = память шамана. каналы. в-mem_c1. мощность = 20000 шаманов. каналы. в-mem_c1. transactionCapacity = 100 # Связывает источник и приемник к каналу: шаман. источники. netcat_s1. channel = in-mem_c1 шаман. раковины. hdfs_w1. channels = in-mem_c1
Файл конфигурации содержит свойства для каждого источника, канала и приемника в агенте и указывает, как они связаны. В этом примере у агента-шамана есть источник, который прослушивает данные (сообщения netcat) на порту 44444, канал, который буферизует данные о событиях в памяти, и приемник, который регистрирует данные событий на консоли.
Этот файл конфигурации мог использоваться для определения нескольких агентов; здесь вы настраиваете только один, чтобы все было просто.
Чтобы запустить агент, используйте сценарий оболочки, называемый flume-ng, который находится в каталоге bin дистрибутива Flume. В командной строке выполните команду agent, указав путь к файлу конфигурации и имени агента.
Следующая команда образца запускает агент Flume:
flume-ng agent -f / -n shaman
В журнале Flume agent должны быть записи, подтверждающие, что источник, канал и приемник успешно запущены.
Чтобы дополнительно проверить конфигурацию, вы можете telnet подключиться к порту 44444 с другого терминала и отправить Flume событие, введя произвольную текстовую строку. Если все пойдет хорошо, исходный терминал Flume выведет событие в сообщении журнала, которое вы сможете увидеть в журнале агента.