Учебники

Apache Flume — передача данных в Hadoop

Большие данные, как мы знаем, представляют собой набор больших наборов данных, которые не могут быть обработаны с использованием традиционных вычислительных технологий. Большие данные при анализе дают ценные результаты. Hadoop — это платформа с открытым исходным кодом, которая позволяет хранить и обрабатывать большие данные в распределенной среде на кластерах компьютеров с использованием простых моделей программирования.

Потоковая передача / регистрация данных

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

Файл журнала. Как правило, файл журнала представляет собой файл, в котором перечислены события / действия, которые происходят в операционной системе. Например, веб-серверы перечисляют каждый запрос к серверу в файлах журнала.

При сборе таких данных журнала мы можем получить информацию о —

  • производительность приложения и найти различные программные и аппаратные сбои.
  • поведение пользователя и получить лучшее понимание бизнеса.

Традиционный метод передачи данных в систему HDFS — использование команды put . Давайте посмотрим, как использовать команду put .

HDFS поставил Команду

Основная проблема при обработке данных журналов заключается в перемещении этих журналов, созданных несколькими серверами, в среду Hadoop.

Оболочка файловой системы Hadoop предоставляет команды для вставки данных в Hadoop и чтения из них. Вы можете вставить данные в Hadoop с помощью команды put, как показано ниже.

$ Hadoop fs –put /path of the required file  /path in HDFS where to save the file 

Проблема с положенной Командой

Мы можем использовать команду put Hadoop для передачи данных из этих источников в HDFS. Но он страдает от следующих недостатков —

  • Используя команду put , мы можем передавать только один файл за раз, в то время как генераторы данных генерируют данные с гораздо большей скоростью. Поскольку анализ, выполненный на более старых данных, менее точен, у нас должно быть решение для передачи данных в режиме реального времени.

  • Если мы используем команду put , данные должны быть упакованы и должны быть готовы к загрузке. Поскольку веб-серверы генерируют данные непрерывно, это очень сложная задача.

Используя команду put , мы можем передавать только один файл за раз, в то время как генераторы данных генерируют данные с гораздо большей скоростью. Поскольку анализ, выполненный на более старых данных, менее точен, у нас должно быть решение для передачи данных в режиме реального времени.

Если мы используем команду put , данные должны быть упакованы и должны быть готовы к загрузке. Поскольку веб-серверы генерируют данные непрерывно, это очень сложная задача.

Здесь нам нужны решения, которые могут преодолеть недостатки команды put и передать «потоковые данные» из генераторов данных в централизованные хранилища (особенно HDFS) с меньшей задержкой.

Проблема с HDFS

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

Поэтому нам нужна надежная, настраиваемая и обслуживаемая система для передачи данных журнала в HDFS.

Примечание. В файловой системе POSIX всякий раз, когда мы обращаемся к файлу (скажем, выполняем операцию записи), другие программы все равно могут читать этот файл (по крайней мере, сохраненную часть файла). Это связано с тем, что файл существует на диске до его закрытия.

Доступные решения

Для отправки потоковых данных (файлов журналов, событий и т. Д.) Из различных источников в HDFS у нас есть следующие инструменты:

Писец в фейсбуке

Scribe — чрезвычайно популярный инструмент, который используется для агрегирования и потоковой передачи данных журнала. Он предназначен для масштабирования до очень большого количества узлов и может быть устойчивым к сбоям сети и узлов.

Апач Кафка

Кафка была разработана Apache Software Foundation. Это брокер сообщений с открытым исходным кодом. Используя Kafka, мы можем обрабатывать каналы с высокой пропускной способностью и низкой задержкой.

Apache Flume

Apache Flume — это механизм использования инструмента / службы / данных для сбора и передачи больших объемов потоковых данных, таких как данные журнала, события (и т. Д.), Из различных веб-серверов в централизованное хранилище данных.

Это высоконадежный, распределенный и настраиваемый инструмент, который в основном предназначен для передачи потоковых данных из различных источников в HDFS.

В этом уроке мы подробно обсудим, как использовать Flume с некоторыми примерами.