Apache Flume 简明教程

Apache Flume - Sequence Generator Source

在上一章,我们已经了解到如何从 twitter 来源获取数据到 HDFS。本章将会讲解如何从 Sequence generator 获取数据。

Prerequisites

要运行本章提供的示例,你需要安装 HDFSFlume 。因此,在继续阅读后续内容之前,请确认 Hadoop 安装并启动 HDFS。(参考上一章来学习如何启动 HDFS)。

Configuring Flume

我们必须使用 conf 文件夹中的配置文件来配置来源、通道和接收器。本章中的示例使用一个 sequence generator source 、一个 memory channel 和一个 HDFS sink

Sequence Generator Source

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

  1. Channels

  2. Source type − seq

Channel

我们正在使用 memory 通道。若要配置内存通道,您必须为通道类型提供值。以下是配置内存通道时您需要提供的属性列表 −

  1. type − 它保存通道类型。在我们的示例中,类型为 MemChannel。

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

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

HDFS Sink

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

  1. Channel

  2. type − hdfs

  3. hdfs.path − 存储数据的 HDFS 中目录的路径。

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

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

  2. writeFormat − 可以是文本或可写。

  3. batchSize − 写入 HDFS 文件前写入文件中的事件数量。其默认值为 100。

  4. rollsize − 触发滚动所需的的文件大小。其默认值为 100。

  5. 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。

data generated

Verifying the HDFS

你可以使用以下 URL 访问 Hadoop 管理 Web UI: −

http://localhost:50070/

在页面的右侧点击名为 Utilities 的下拉栏。如以下图表所示,你可以看到两个选项。

verifying the hdfs

点击 Browse the file system 并输入已将序列号生成器生成的数据存储至 HDFS 目录的路径。

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

browse file system

Verifying the Contents of the File

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

verifying the contents of file