Apache Flume 简明教程

Apache Flume - NetCat Source

本章提供一个示例,说明如何生成事件并在随后将其记录到控制台。为此,我们使用了 NetCat 源和 logger 汇。

Prerequisites

要运行本章中提供的示例,您需要安装 Flume

Configuring Flume

我们必须使用 conf 文件夹中的配置文件配置源、通道和汇。本章中给出的示例使用了 NetCat Source, Memory channellogger sink

NetCat Source

在配置 NetCat 源时,配置源的同时我们必须指定一个端口。现在源(NetCat 源)侦听给定的端口,并将我们输入该端口的每行接收为单个事件,并通过指定通道将其传输到汇。

在配置此源的同时,您必须为以下属性提供值−

  1. channels

  2. Source type − netcat

  3. bind − 要绑定的主机名或 IP 地址。

  4. port − 我们希望源侦听的端口号。

Channel

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

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

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

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

Logger Sink

此汇聚记录传递给它的所有事件。通常,它用于测试或调试目的。若要配置此汇聚,您必须提供以下详细信息。

  1. Channel

  2. type − logger

Example Configuration File

下面给出了配置文件的一个示例。复制此内容并将其保存在 Flume 的 conf 文件夹中的 netcat.conf 中。

# Naming the components on the current agent
NetcatAgent.sources = Netcat
NetcatAgent.channels = MemChannel
NetcatAgent.sinks = LoggerSink

# Describing/Configuring the source
NetcatAgent.sources.Netcat.type = netcat
NetcatAgent.sources.Netcat.bind = localhost
NetcatAgent.sources.Netcat.port = 56565

# Describing/Configuring the sink
NetcatAgent.sinks.LoggerSink.type = logger

# Describing/Configuring the channel
NetcatAgent.channels.MemChannel.type = memory
NetcatAgent.channels.MemChannel.capacity = 1000
NetcatAgent.channels.MemChannel.transactionCapacity = 100

# Bind the source and sink to the channel
NetcatAgent.sources.Netcat.channels = MemChannel
NetcatAgent.sinks.LoggerSink.channel = MemChannel

Execution

浏览 Flume 主目录,并如下所示执行应用程序。

$ cd $FLUME_HOME
$ ./bin/flume-ng agent --conf $FLUME_CONF --conf-file $FLUME_CONF/netcat.conf
   --name NetcatAgent -Dflume.root.logger=INFO,console

如果一切都正常,则源将开始侦听给定的端口。在此情况下,它是 56565 。下面给出了已启动并正在侦听端口 56565 的 NetCat 源的命令提示符窗口的快照。

execution

Passing Data to the Source

若要将数据传递到 NetCat 源,您必须打开配置文件中给出的端口。打开一个单独的终端并使用 curl 命令连接到源 (56565)。当连接成功后,您会收到一条 connected 消息,如下所示。

$ curl telnet://localhost:56565
connected

现在您可以逐行输入您的数据(在每一行后,您必须按 Enter)。NetCat 源将每行作为单独的事件接收,您将收到一条 OK 已接收消息。

每当您完成数据传递时,您都可以按 ( Ctrl+C ) 退出控制台。下面给出了我们使用 curl 命令连接到的源的控制台的快照。

passing data

在上述控制台中输入的每一行都将被源作为单独的事件接收。由于我们使用了 Logger 汇聚,这些事件将被记录到控制台(源控制台),通过指定的通道(在本例中为内存通道)。

以下快照显示了 NetCat 控制台,事件被记录在那里。

netcat console