Apache Flume NetCat 源码


本章通过一个示例来说明如何生成事件并随后将它们记录到控制台中。为此,我们使用 NetCat 来源和 logger sink.

学习前提


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

配置 Flume


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

网猫源

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

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

  • channels

  • 源类型 : netcat

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

  • port :我们希望源监听的端口号。

Channel

我们正在使用 memory 渠道。要配置内存通道,你 must 为通道的类型提供一个值。下面给出了配置内存通道时需要提供的属性列表:

  • type : 保存频道的类型。在我们的示例中,类型是 记忆频道 .

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

  • 交易能力 : 通道接受或发送的最大事件数。其默认值为 100。(可选)。

记录器水槽

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

  • Channel

  • type : logger

示例配置文件


下面给出了配置文件的示例。复制此内容并另存为 网猫配置文件 在 Flume 的 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 .下面给出的是已启动并侦听端口 56565 的 NetCat 源的命令提示符窗口的快照。

Execution

将数据传递到源

要将数据传递给 NetCat 源,你必须打开配置文件中给出的端口。打开一个单独的终端并使用 curl 命令。连接成功后会提示“ 连接的 “ 如下所示。

$ curl telnet:// 本地主机:56565
connected 

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

每当你完成传递数据时,你都可以通过按 ( Ctrl+C )。下面给出的是我们使用连接到源的控制台的快照 curl command.

Passing Data

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

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

NetCat console