Apache Flume - 序列生成器源
在上一章中,我们了解了如何从 Twitter 源获取数据到 HDFS。 本章介绍如何从序列生成器获取数据。
先决条件
要运行本章提供的示例,您需要安装HDFS以及Flume。 因此,在继续操作之前,请验证 Hadoop 安装并启动 HDFS。 (参考上一章了解如何启动HDFS)。
配置 Flume
我们必须使用 conf 文件夹中的配置文件来配置源、通道和接收器。 本章给出的示例使用序列生成器源、内存通道和HDFS接收器。
序列生成器源
它是持续生成事件的源。 它维护一个从0开始并以1递增的计数器。它用于测试目的。 配置此源时,必须为以下属性提供值 −
Channels
Source type − seq
Channel
我们正在使用MemChannel内存通道。 要配置内存通道,您必须为通道类型提供一个值。 下面给出了配置内存通道时需要提供的属性列表 −
type − 它保存通道的类型。 在我们的示例中,类型是 MemChannel。
Capacity − 它是通道中存储的最大事件数。 默认值为 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。
示例 - 配置文件
下面给出的是配置文件的示例。 复制此内容并在 Flume 的conf文件夹中另存为seq_gen.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 中。
验证 HDFS
您可以使用以下 URL 访问 Hadoop 管理 Web UI −
http://localhost:50070/
单击页面右侧名为实用程序的下拉列表。 您可以看到两个选项,如下图所示。
单击浏览文件系统并输入存储序列生成器生成的数据的 HDFS 目录的路径。
在我们的示例中,路径为/user/Hadoop/seqgen_data/。 然后,您可以看到序列生成器生成的日志文件列表,存储在 HDFS 中,如下所示。
验证文件内容
所有这些日志文件都包含顺序格式的数字。 您可以使用 cat 命令验证文件系统中这些文件的内容,如下所示。