В предыдущей главе мы увидели, как извлекать данные из твиттерного источника в HDFS. Эта глава объясняет, как получить данные из генератора последовательностей .
Предпосылки
Для запуска примера, представленного в этой главе, вам необходимо установить HDFS вместе с Flume . Поэтому проверьте установку Hadoop и запустите HDFS, прежде чем продолжить. (Обратитесь к предыдущей главе, чтобы узнать, как запустить HDFS).
Конфигурирование Flume
Мы должны настроить источник, канал и приемник, используя файл конфигурации в папке conf . Пример, приведенный в этой главе, использует источник генератора последовательности , канал памяти и приемник HDFS .
Источник Генератора Последовательности
Это источник, который генерирует события непрерывно. Он поддерживает счетчик, который начинается с 0 и увеличивается на 1. Он используется для целей тестирования. При настройке этого источника вы должны указать следующие свойства:
-
каналы
-
Тип источника — seq
каналы
Тип источника — seq
канал
Мы используем канал памяти . Чтобы настроить канал памяти, необходимо указать значение для типа канала. Ниже приведен список свойств, которые необходимо указать при настройке канала памяти.
-
тип — содержит тип канала. В нашем примере типом является MemChannel.
-
Емкость — это максимальное количество событий, хранящихся в канале. Его значение по умолчанию — 100. (необязательно)
-
TransactionCapacity — это максимальное количество событий, которые канал принимает или отправляет. По умолчанию это 100. (необязательно).
тип — содержит тип канала. В нашем примере типом является MemChannel.
Емкость — это максимальное количество событий, хранящихся в канале. Его значение по умолчанию — 100. (необязательно)
TransactionCapacity — это максимальное количество событий, которые канал принимает или отправляет. По умолчанию это 100. (необязательно).
Раковина HDFS
Этот приемник записывает данные в HDFS. Чтобы настроить этот приемник, вы должны предоставить следующую информацию.
-
канал
-
тип — hdfs
-
hdfs.path — путь к каталогу в HDFS, в котором должны храниться данные.
канал
тип — hdfs
hdfs.path — путь к каталогу в HDFS, в котором должны храниться данные.
И мы можем предоставить некоторые дополнительные значения в зависимости от сценария. Ниже приведены необязательные свойства приемника HDFS, которые мы настраиваем в нашем приложении.
-
fileType — это необходимый формат файла нашего HDFS. SequenceFile, DataStream и CompressedStream являются тремя типами, доступными для этого потока. В нашем примере мы используем DataStream .
-
writeFormat — может быть либо текстовым, либо записываемым.
-
batchSize — это число событий, записанных в файл перед его сбросом в HDFS. Его значение по умолчанию равно 100.
-
rollsize — размер файла для запуска броска. Это значение по умолчанию составляет 100.
-
rollCount — количество событий, записанных в файл перед его прокруткой. Значение по умолчанию 10.
fileType — это необходимый формат файла нашего HDFS. SequenceFile, DataStream и CompressedStream являются тремя типами, доступными для этого потока. В нашем примере мы используем DataStream .
writeFormat — может быть либо текстовым, либо записываемым.
batchSize — это число событий, записанных в файл перед его сбросом в HDFS. Его значение по умолчанию равно 100.
rollsize — размер файла для запуска броска. Это значение по умолчанию составляет 100.
rollCount — количество событий, записанных в файл перед его прокруткой. Значение по умолчанию 10.
Пример — файл конфигурации
Ниже приведен пример файла конфигурации. Скопируйте этот контент и сохраните как seq_gen .conf в папке conf Flume.
# Naming the components on the current agent SeqGenAgent.sources = SeqSource SeqGenAgent.channels = MemChannel SeqGenAgent.sinks = HDFS # Describing/Configuring the source SeqGenAgent.sources.SeqSource.type = seq # Describing/Configuring the sink SeqGenAgent.sinks.HDFS.type = hdfs SeqGenAgent.sinks.HDFS.hdfs.path = hdfs://localhost:9000/user/Hadoop/seqgen_data/ SeqGenAgent.sinks.HDFS.hdfs.filePrefix = log SeqGenAgent.sinks.HDFS.hdfs.rollInterval = 0 SeqGenAgent.sinks.HDFS.hdfs.rollCount = 10000 SeqGenAgent.sinks.HDFS.hdfs.fileType = DataStream # Describing/Configuring the channel SeqGenAgent.channels.MemChannel.type = memory SeqGenAgent.channels.MemChannel.capacity = 1000 SeqGenAgent.channels.MemChannel.transactionCapacity = 100 # Binding the source and sink to the channel SeqGenAgent.sources.SeqSource.channels = MemChannel SeqGenAgent.sinks.HDFS.channel = MemChannel
выполнение
Просмотрите домашний каталог Flume и запустите приложение, как показано ниже.
$ cd $FLUME_HOME $./bin/flume-ng agent --conf $FLUME_CONF --conf-file $FLUME_CONF/seq_gen.conf --name SeqGenAgent
Если все идет хорошо, источник начинает генерировать порядковые номера, которые будут помещены в HDFS в виде файлов журнала.
Ниже приведен снимок окна командной строки, извлекающего данные, сгенерированные генератором последовательностей, в HDFS.
Проверка HDFS
Вы можете получить доступ к веб-интерфейсу администрирования Hadoop, используя следующий URL-адрес:
http://localhost:50070/
Нажмите на раскрывающееся меню « Утилиты» в правой части страницы. Вы можете увидеть два варианта, как показано на диаграмме, приведенной ниже.
Нажмите Обзор файловой системы и введите путь к каталогу HDFS, в котором вы сохранили данные, сгенерированные генератором последовательности.
В нашем примере путь будет / user / Hadoop / seqgen_data / . Затем вы можете увидеть список файлов журнала, сгенерированных генератором последовательности, которые хранятся в HDFS, как указано ниже.
Проверка содержимого файла
Все эти файлы журнала содержат числа в последовательном формате. Вы можете проверить содержимое этого файла в файловой системе, используя команду cat, как показано ниже.