Большие данные, как мы знаем, представляют собой набор больших наборов данных, которые не могут быть обработаны с использованием традиционных вычислительных технологий. Большие данные при анализе дают ценные результаты. 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 с некоторыми примерами.