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

Flume поддерживает различные выходы, такие как следующие.

  • «хвост» (который передает данные из локального файла и записывает через Flume в HDFS, аналогично команде «хвост» Unix)
  • Логи с машины
  • Apache log4j (позволяет Java-приложениям записывать события через Flume в файлы HDFS)‹Дополнительную информацию можно найти в Курс Big Data HadoopБлог учебных пособий

Архитектура Apache Flume

Агент Flume — это механизм JVM с 3 компонентами.

На приведенной выше диаграмме источник данных Flume использует события, созданные внешним источником (веб-сервером). Внешний источник отправляет события в формате, известном целевому источнику, в источник Flume.

Событие принимается и обрабатывается Flume Source в одной или нескольких сетях. Канал служит хранилищем, в котором хранится событие до того, как его поглотит водосточный желоб. Для хранения этих событий этот канал может использовать локальную файловую систему.

Приемник Flume удаляет событие из канала и сохраняет его, например, во внешнем репозитории HDFS. Может быть несколько агентов лотка, и в этом случае событие может быть перенаправлено приемником лотка к источнику лотка следующего агента лотка в потоке.

Любая из основных характеристик Apache FLUME

Ориентированная на потоковую передачу данных, Flume имеет универсальную архитектуру. Благодаря нескольким механизмам аварийного переключения и восстановления он отказоустойчив и стабилен. Flume обеспечивает различные уровни надежности, включая «доставку с максимальной эффективностью» и «сквозную доставку». Доставка с максимальной эффективностью не допускает сбоев узла Flume, а режим «сквозной доставки» обеспечивает доставку даже в случае отказа нескольких узлов.

Данные между источниками и приемниками передаются Flume. Этот сбор информации может быть либо организованным, либо управляемым событиями. У Flume есть свой механизм обработки запросов. Более того, это упрощает работу с любым новым пакетом данных. Таким образом, чтобы преобразовать его, прежде чем перемещать его на сток.

Возможные приемники для Flume включают HDFS и HBase.

Настройка Apache Flume, библиотеки и исходного кода

Убедитесь, что у вас установлен Hadoop, прежде чем мы начнем саму процедуру. Переключите пользователя на «дом» (вы можете переключиться на идентификатор пользователя, который использовался во время настройки Hadoop, при использовании конфигурации Hadoop)

Шаг 1)

Создайте новую папку под названием «Apache Flume».

Предлагайте разрешение на чтение, запись и выполнение

Чмод Судо -R 777 Flume

В этот каталог копируются файлы MyTwitterSource.java и MyTwitterSourceForFlume.java.

Загрузите исходные файлы отсюда

Проверьте права доступа ко всем этим файлам, а затем предоставьте их, если права «чтения» отсутствуют.

Создайте свою первую программу FLUME — для начинающих

Шаг 2)

Загрузите сайт «Apache Flume» — https:/flume.apache.org/download.htmll

В этом Apache Flume использовалась версия 1.4.0.

Создайте свою первую программу FLUME для начинающих

Далее Нажмите на

Создайте свою первую программу FLUME

Шаг 3)

В выбранный вами каталог скопируйте загруженный архив и извлеките содержимое с помощью следующей команды.

Tar sudo -xvf apache-flume-1.4.0-bin.tar.gzz-flume

Эта команда создает и извлекает файлы в новый каталог с именем apache-flume-1.4.0-bin. Этот каталог упоминается в оставшейся части статьи.

Шаг 4)

Конфигурация библиотеки Apache flume

Вполне возможно, что для выполнения одного или всех скопированных файлов JAR потребуется разрешение. Это вызовет проблемы с компиляцией кода. Итак, отзовите разрешение на выполнение в таком контейнере.

В моем случае авторизацию должен был выполнить twitter4j-core-4.0.1.jar. Я отозвал его, как показано ниже.

Chmod sudo -x twitter4j-core-4.0.1.jar-core

После этой инструкции twitter4j-core-4.0.1.jar разрешает «чтение» всем.

Chmod sudo + rrr /usr/local/apache-flume-1.4.0-bin/lib/twitter4j-core-4.0.1.jar-core-4.0.1.jar-code

Обратите внимание, что я скачал —

— HTTPS:/mvnrepository.com/artifact/org.twitter4j/twitter4j-core-4.0.1.jar из twitter4j-core-4.0.1.jar.

-Все JAR-файлы пламени, т.е. flume-ng-*-1.4.0.jar из http:/mvnrepository.com/artifact/org.apache.flume

Использование Apache Flume для загрузки данных из Twitter

Шаг 1)

Перейдите в каталог, содержащий файлы, содержащие исходный код.

Шаг 2)

Установите /lib/ * и ~/FlumeTutorial/flume/mytwittersource/ * для включения =

Шаг 3)

Скомпилируйте код

Джавак-д. MyTwitterSourceForFlume.java MyTwitterSource.java MyTwitterSourceForFlume.jeva

Шаг 4)

Сформировать контейнер

Сначала используйте текстовый редактор по вашему выбору, чтобы создать файл Manifest.txt и добавить его ниже —

Flume.mytwittersource. Основной класс MyTwitterSourceForFlume:

Здесь имя ключевого класса — flume.mytwittersource. MyTwitterSourceForFlume. Обратите внимание, что в конце этого раздела необходимо нажать клавишу Enter.

Теперь создайте «MyTwitterSourceForFlume.jar» из JAR как —

Jar cfm MyTwitterSourceForFlume.jar Manifest.txt flume / mytwittersource/*.class flume.txt flume / mytwittersource.

Шаг 5

Эта банка копируется в /lib/

MyTwitterSourceForFlume.jar /lib/ sudo cp

Шаг 6

Перейдите в каталог конфигурации Apache Flume/conf

Если flume.conf нет, скопируйте flume-conf.properties.template и переименуйте его в flume.conf.

Sudo cp flume-conf.properties.template flume.conf.template flume-conf.properties

Если flume-env.sh не существует, скопируйте и переименуйте flume-env.sh.template в flume-env.sh.

Cp sudo flume-env.sh.template flume-env.sh.template flume-env.sh.

Создание приложения Apache Flume для Twitter

Шаг 1)

Войдите на страницу https:/developer.twitter.com/Создайте приложение Twitter.

Создайте свою первую программу FLUME — руководство для начинающих

Шаг 2)

Перейдите в «Мои приложения» (эта опция исчезает при нажатии кнопки «Яйцо» в правом верхнем углу)

Шаг 3)

Нажав «Создать новое приложение», создайте новое приложение.

Шаг 4)

Указав имя приложения, определение и веб-сайт, заполните информацию о приложении. Под каждым полем ввода вы можете обратиться к выпущенным заметкам.

Шаг 5)

Прокрутите страницу вниз и подтвердите условия, выбрав «Да, я согласен» и нажав «Создать приложение для Twitter».

Шаг 6)

Перейдите на вкладку «Ключи API» в окне только что созданного приложения, прокрутите страницу вниз и нажмите кнопку «Создать мой токен доступа».

Шаг 7)

Обновление страницы.

Шаг 8)

Нажмите «Экзамен OAuth». Это покажет настройки приложения «OAuth».

Шаг 9)

Используя эти параметры OAuth, измените файл «flume.conf». Шаги по изменению файла «flume.conf» приведены ниже.

Чтобы обновить «flume.conf», нам нужно скопировать ключ потребителя, секрет потребителя, токен доступа и секрет токена доступа.

Примечание. Эти принципы зависят от пользователя и, следовательно, являются конфиденциальными, поэтому ими не следует делиться.

Измените файл под названием «flume.conf».

Шаг 1)

Откройте «flume.conf» в режиме записи и установите значения параметров ниже —

Отредактируйте sudo flume.conf

Копирование содержимого ниже-

Твиттер MyTwitAgent.sources =

MyTwitAgent.channels = MemChannel MemChannel

MyTwitAgent.sinks = HDFS = HDFSS

MyTwitterSourceForFlume. MyTwitterAgent.sources. Twitter.type = flume.mytwittersource.

MyTwitAgent.sources. Twitter.channels = MemChannel = Twitter.channels

MyTwitAgent.sources. Twitter.consumerKey = = ConsumerKey =

MyTwitAgent.sources. Twitter.consumerSecret = Секрет рынка =

MyTwitAgent.sources. Twitter.accessToken = = MyTwitAgent.sources.

MyTwitAgent.sources. Twitter.accessTokenSecret = MyTwitAgent.sources.

= MyTwitAgent.sources. Твиттер.ключевые слова

MyTwitAgent.sinks. HDFS.channel = MemChannel.channel = MemChannel.

MyTwitAgent.sinks. HDFS.type = hdfs.type = hdfs

HDFS.hdfs.path = hdfs:/localhost:54310 / user / hduser / flume / tweets / tweets / path= MyTwitAgent.sinks.

MyTwitAgent.sinks. HDFS.hdfs.fileType = DataStream.sinks.hdfs.fileType=

MyTwitAgent.sinks. HDFS.hdfs.writeFormat = Формат документа = Текстовый формат

MyTwitAgent.sinks.hdfs.hdfs.batchSize= 1000 Размеры:

MyTwitAgent.sinks. HDFS.hdfs.rollSize= 0

MyTwitAgent.sinks. HDFS.hdfs.rollCount= 10000 = 10000

MemChannel.type = memory = MyTwitAgent.channels.

Емкость = 1000000 = MyTwitAgent.channels. MemChannel.capacity

Емкость MyTwitAgent.channels. Мемканал.транзакция = 1000

Шаг 2)

Кроме того, установите, как показано ниже, TwitterAgent.sinks. HDFS.hdfs.path,

HDFS.hdfs.path = hdfs:/:/flume/tweets/TwitterAgent.sinks.

Узнайте и посмотрите значение параметра fs.defaultFS, установленное в значении $HADOOP HOME /etc/hadoop/core-site.xml.

Шаг 3)

Удалите запись ниже, если она существует, чтобы сбросить данные в HDFS, а также когда они поступят.

Заключение

Я надеюсь, что вы пришли к заключению о Apache flume в больших данных. Вы можете узнать больше о больших данных с помощью онлайн-обучения по большим данным.