Apache Flume - NetCat Source

本章以一个例子来说明如何生成事件并随后将它们记录到控制台中.为此,我们使用 NetCat 源和记录器接收器.

先决条件

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

配置Flume

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

NetCat Source

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

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

  • 渠道

  • 来源类型 :  netcat

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

  • port : 我们希望来源收听的端口号.

频道

我们正在使用记忆频道.要配置内存通道,必须为通道类型提供值.下面给出了配置内存通道时需要提供的属性列表 :

  • type : 它保留了频道的类型.在我们的示例中,类型为 MemChannel .

  • 容量 : 它是通道中存储的最大事件数.其默认值为100.(可选)

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

记录器接收器

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

  • 频道

  • 输入 : 记录器

示例配置文件

以下是配置文件的示例.复制此内容并保存为 netcat.conf 在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 .下面给出了NetCat源的命令提示符窗口的快照,该窗口已经启动并监听端口56565.

执行

将数据传递到源

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

$ curl telnet://localhost:56565 
connected

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

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

传递数据

上述控制台中输入的每一行都将作为源的单个事件接收.由于我们使用了 Logger 接收器,因此这些事件将通过指定的通道(在这种情况下为内存通道)登录到控制台(源控制台).

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

NetCat console