Apache Flume 简明教程
Apache Flume - Sequence Generator Source
在上一章,我们已经了解到如何从 twitter 来源获取数据到 HDFS。本章将会讲解如何从 Sequence generator 获取数据。
Prerequisites
要运行本章提供的示例,你需要安装 HDFS 和 Flume 。因此,在继续阅读后续内容之前,请确认 Hadoop 安装并启动 HDFS。(参考上一章来学习如何启动 HDFS)。
Configuring Flume
我们必须使用 conf 文件夹中的配置文件来配置来源、通道和接收器。本章中的示例使用一个 sequence generator source 、一个 memory channel 和一个 HDFS sink 。
Sequence Generator Source
它是不断产生事件的来源。它维护了一个从 0 开始并按 1 递增的计数器。它用于测试目的。在配置此来源时,你必须为以下属性提供值 −
-
Channels
-
Source type − seq
Channel
我们正在使用 memory 通道。若要配置内存通道,您必须为通道类型提供值。以下是配置内存通道时您需要提供的属性列表 −
-
type − 它保存通道类型。在我们的示例中,类型为 MemChannel。
-
Capacity − 通道中存储的最大事件数。其默认值为 100。(可选)
-
TransactionCapacity − 通道接受或发送的最大事件数。它的默认值为 100。(可选)。
HDFS Sink
该接收器将数据写入 HDFS。要配置该接收器,您必须提供以下详细信息。
-
Channel
-
type − hdfs
-
hdfs.path − 存储数据的 HDFS 中目录的路径。
我们可以根据场景提供一些可选值。以下是我们在应用程序中配置的 HDFS 接收器的可选属性。
-
fileType − 这是 HDFS 文件所需的文件格式。 SequenceFile, DataStream 和 CompressedStream 是此流中可用的三种类型。在我们的示例中,我们使用 DataStream 。
-
writeFormat − 可以是文本或可写。
-
batchSize − 写入 HDFS 文件前写入文件中的事件数量。其默认值为 100。
-
rollsize − 触发滚动所需的的文件大小。其默认值为 100。
-
rollCount − 滚动前写入文件中的事件数量。其默认值为 10。
Example – Configuration File
以下是配置文件的示例。复制此内容并将其保存为 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
Execution
浏览 Flume 主目录,并如下所示执行应用程序。
$ cd $FLUME_HOME
$./bin/flume-ng agent --conf $FLUME_CONF --conf-file $FLUME_CONF/seq_gen.conf
--name SeqGenAgent
如果一切顺利,来源开始生成序列号,这些序列号将以日志文件形式推送到 HDFS。
以下是命令提示符窗口的截图,该窗口将序列号生成器生成的数据获取到 HDFS。