- Apache Flume 教程
- Apache Flume - 首页
- Apache Flume - 简介
- Hadoop 中的数据传输
- Apache Flume - 架构
- Apache Flume - 数据流
- Apache Flume - 环境
- Apache Flume - 配置
- Apache Flume - 获取 Twitter 数据
- 序列生成器源
- Apache Flume - NetCat 源码
- Apache Flume 资源
- Apache Flume - 快速指南
- Apache Flume - 有用资源
- Apache Flume - 讨论
Apache Flume - NetCat 源码
本章以一个示例解释如何生成事件并随后将其记录到控制台。为此,我们使用NetCat源和logger接收器。
先决条件
要运行本章提供的示例,您需要安装Flume。
配置 Flume
我们必须使用conf文件夹中的配置文件来配置源、通道和接收器。本章提供的示例使用NetCat 源、内存通道和logger 接收器。
NetCat 源
在配置 NetCat 源时,我们必须在配置源时指定一个端口。现在,源(NetCat 源)监听给定端口,并将我们在此端口输入的每一行作为单个事件接收,并通过指定的通道将其传输到接收器。
配置此源时,您必须为以下属性提供值:
通道
源类型 - netcat
bind - 要绑定的主机名或 IP 地址。
port - 我们希望源监听的端口号。
通道
我们使用memory通道。要配置内存通道,您必须为通道类型提供一个值。以下是配置内存通道时需要提供的属性列表:
type - 它包含通道的类型。在我们的示例中,类型为MemChannel。
Capacity - 存储在通道中的事件的最大数量。其默认值为 100。(可选)
TransactionCapacity - 通道接受或发送的事件的最大数量。其默认值为 100。(可选)。
Logger 接收器
此接收器记录传递给它的所有事件。通常,它用于测试或调试目的。要配置此接收器,您必须提供以下详细信息。
通道
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。以下是已启动并监听端口 56565 的 NetCat 源的命令提示符窗口的快照。
将数据传递到源
要将数据传递到 NetCat 源,您必须打开配置文件中给定的端口。打开一个单独的终端并使用curl命令连接到源 (56565)。连接成功后,您将收到一条“connected”消息,如下所示。
$ curl telnet://127.0.0.1:56565 connected
现在您可以逐行输入您的数据(每行之后,您都必须按 Enter 键)。NetCat 源将每一行作为单个事件接收,您将收到一条“OK”消息。
完成数据传递后,您可以按 (Ctrl+C) 退出控制台。以下是使用curl命令连接到源的控制台快照。
以上控制台中输入的每一行都将被源作为单个事件接收。由于我们使用了Logger接收器,这些事件将通过指定的通道(在本例中为内存通道)记录到控制台(源控制台)。
以下快照显示了记录事件的 NetCat 控制台。