Apache Flume - NetCat 源

本章通过一个示例来解释如何生成事件并将其记录到控制台。 为此,我们使用 NetCat 源和 logger 接收器。

先决条件

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

配置 Flume

我们必须使用 conf 文件夹中的配置文件来配置源、通道和接收器。 本章给出的示例使用NetCat 源、内存通道记录器接收器

NetCat Source

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

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

  • channels

  • Source type − netcat

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

  • 端口 − 我们希望源侦听的端口号。

Channel

我们正在使用MemChannel内存通道。 要配置内存通道,您必须为通道类型提供一个值。 下面给出了配置内存通道时需要提供的属性列表 −

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

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

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

Logger Sink(记录器接收器)

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

  • Channel

  • type − logger

示例配置文件

下面给出的是配置文件的示例。 复制此内容并在 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

执行

浏览 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。 下面给出的是 NetCat 源的命令提示符窗口的快照,该源已启动并侦听端口 56565。

执行

将数据传递到源

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

$ curl telnet://localhost:56565 
connected 

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

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

传递数据

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

以下快照显示了记录事件的 NetCat 控制台。

NetCat 控制台