Apache Flume 序列生成器源


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

学习前提


要运行本章提供的示例,你需要安装 HDFS 随着 Flume .因此,在继续之前验证 Hadoop 安装并启动 HDFS。 (参考上一章了解如何启动 HDFS)。

配置 Flume


我们必须使用配置文件中的配置文件来配置源、通道和接收器 conf 文件夹。本章给出的示例使用了一个 序列发生器源 , a 记忆通道 , and an HDFS 接收器 .

序列发生器源

它是源源不断地产生事件。它维护一个从 0 开始并以 1 递增的计数器。它用于测试目的。配置此源时,你必须为以下属性提供值:

  • Channels

  • 源类型 : seq

Channel

我们正在使用 memory 渠道。要配置内存通道,你 must 为通道的类型提供一个值。下面给出了配置内存通道时需要提供的属性列表:

  • type : 保存频道的类型。在我们的示例中,类型是 MemChannel。

  • Capacity : 通道中存储的最大事件数。其默认值为 100。(可选)

  • 交易能力 : 通道接受或发送的最大事件数。它的默认值为 100。(可选)。

HDFS 接收器

该接收器将数据写入 HDFS。要配置此接收器,你 must 提供以下详细信息。

  • Channel

  • type : hdfs

  • hdfs.path :HDFS中要存储数据的目录路径。

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

  • fileType : 这是我们HDFS文件需要的文件格式。 序列文件、数据流 and 压缩流 是此流可用的三种类型。在我们的示例中,我们使用 数据流 .

  • 写格式 : 可以是文本的,也可以是可写的。

  • 批量大小 : 是一个文件在flush到HDFS之前写入的事件数。它的默认值为 100。

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

  • 滚动计数 : 是滚动前写入文件的事件数。它的默认值为 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 访问 Hadoop 管理 Web UI:

http:// 本地主机:50070/

单击名为的下拉列表 实用程序 在页面的右侧。你可以看到两个选项,如下图所示。

Verifying the HDFS

Click on 浏览文件系统 并输入你存储序列生成器生成的数据的 HDFS 目录的路径。

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

Browse the file system

验证文件的内容


所有这些日志文件都包含顺序格式的数字。你可以使用以下方法在文件系统中验证这些文件的内容 cat 命令如下图。

Verifying the Contents of the File