Учебники

Apache Flume — источник генератора последовательностей

В предыдущей главе мы увидели, как извлекать данные из твиттерного источника в 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

Нажмите Обзор файловой системы и введите путь к каталогу HDFS, в котором вы сохранили данные, сгенерированные генератором последовательности.

В нашем примере путь будет / user / Hadoop / seqgen_data / . Затем вы можете увидеть список файлов журнала, сгенерированных генератором последовательности, которые хранятся в HDFS, как указано ниже.

Просмотрите файловую систему

Проверка содержимого файла

Все эти файлы журнала содержат числа в последовательном формате. Вы можете проверить содержимое этого файла в файловой системе, используя команду cat, как показано ниже.