Apache Flume - 序列发生器源

在上一章中,我们已经了解了如何从twitter源获取数据到HDFS.本章介绍如何从序列生成器获取数据.

先决条件

要运行本章提供的示例,您需要安装 HDFS 以及 Flume .因此,请先验证Hadoop安装并启动HDFS,然后再继续操作. (请参阅上一章以了解如何启动HDFS.)

配置Flume

我们必须配置源,通道和使用 conf 文件夹中的配置文件进行接收.本章给出的示例使用序列生成器源内存通道 HDFS接收器.

序列生成器源

它是持续生成事件的源.它维护一个从0开始并以1递增的计数器.它用于测试目的.在配置此来源时,您必须为以下属性提供值 :

  • 频道

  • 来源类型 :  seq

频道

我们正在使用内存频道.要配置内存通道,必须为通道类型提供值.下面给出了配置内存通道时需要提供的属性列表 :

  • type : 它保留了频道的类型.在我们的示例中,类型为MemChannel.

  • 容量 : 它是通道中存储的最大事件数.其默认值为100.(可选)

  • TransactionCapacity : 它是通道接受或发送的最大事件数.默认值为100.(可选).

HDFS接收器

此接收器将数据写入HDFS.要配置此接收器,您必须提供以下详细信息.

  • Channel

  • type :  hdfs

  • hdfs.path :  HDFS中目录的路径,用于存储数据.

我们可以根据场景提供一些可选值.下面给出了我们在应用程序中配置的HDFS接收器的可选属性.

  • fileType : 这是我们的HDFS文件所需的文件格式. SequenceFile,DataStream CompressedStream 是此流可用的三种类型.在我们的示例中,我们使用 DataStream .

  • writeFormat : 可以是文本也可以是可写的.

  • batchSize : 它是在将文件刷新到HDFS之前写入文件的事件数.它的默认值是100.

  • rollsize : 触发滚动的文件大小.默认值为100.

  • rollCount : 它是在滚动之前写入文件的事件数.它的默认值是10.

示例 - 配置文件

以下是一个示例配置文件.复制此内容并保存为 seq_gen .conf 在Flume的conf文件夹中.

# 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中.

Data Generated

验证HDFS

您可以使用以下URL :

http://localhost:50070/

单击右侧名为 Utilities 的下拉列表 - 手边的页面.您可以看到两个选项,如下图所示.

验证HDFS

单击浏览文件系统并输入HDFS目录的路径,其中存储了序列生成器生成的数据.

在我们的例如,路径将是/user/Hadoop/seqgen_data/.然后,您可以看到序列生成器生成的日志文件列表,存储在HDFS中,如下所示.

浏览文件系统

验证文件内容

所有这些日志文件都包含顺序格式的数字.您可以使用 cat 命令在文件系统中验证这些文件的内容,如下所示.

验证文件内容