- Apache Flume 教程
- Apache Flume - 首页
- Apache Flume - 简介
- Hadoop 中的数据传输
- Apache Flume - 架构
- Apache Flume - 数据流
- Apache Flume - 环境
- Apache Flume - 配置
- Apache Flume - 获取 Twitter 数据
- 序列生成器 Source
- Apache Flume - NetCat Source
- Apache Flume 资源
- Apache Flume - 快速指南
- Apache Flume - 有用资源
- Apache Flume - 讨论
Apache Flume - 序列生成器 Source
在上一章中,我们了解了如何从 Twitter 源获取数据到 HDFS。本章将解释如何从**序列生成器**获取数据。
先决条件
要运行本章提供的示例,您需要安装**HDFS**以及**Flume**。因此,在继续操作之前,请验证 Hadoop 安装并启动 HDFS。(请参阅上一章了解如何启动 HDFS)。
配置 Flume
我们必须使用**conf**文件夹中的配置文件来配置源、通道和接收器。本章提供的示例使用**序列生成器源**、**内存通道**和**HDFS 接收器**。
序列生成器 Source
它是持续生成事件的源。它维护一个从 0 开始并递增 1 的计数器。它用于测试目的。在配置此源时,您必须为以下属性提供值:
通道
**源类型** - seq
通道
我们使用**内存**通道。要配置内存通道,您*必须*为通道的类型提供一个值。以下是配置内存通道时需要提供的属性列表:
**类型** - 它保存通道的类型。在我们的示例中,类型为 MemChannel。
**容量** - 它是通道中存储事件的最大数量。其默认值为 100。(可选)
**事务容量** - 它是通道接受或发送事件的最大数量。其默认值为 100。(可选)。
HDFS 接收器
此接收器将数据写入 HDFS。要配置此接收器,您*必须*提供以下详细信息。
通道
**类型** - hdfs
**hdfs.path** - HDFS 中要存储数据的目录的路径。
并且我们可以根据场景提供一些可选值。以下是我们在应用程序中配置的 HDFS 接收器的可选属性。
**文件类型** - 这是我们 HDFS 文件所需的格式。**SequenceFile、DataStream** 和**CompressedStream** 是此流提供的三种类型。在我们的示例中,我们使用**DataStream**。
**写入格式** - 可以是文本或可写。
**批处理大小** - 它是写入文件中的事件数量,然后将其刷新到 HDFS。其默认值为 100。
**滚动大小** - 它是触发滚动的文件大小。其默认值为 100。
**滚动计数** - 它是写入文件中的事件数量,然后将其滚动。其默认值为 10。
示例 - 配置文件
以下是配置文件示例。复制此内容并将其另存为 Flume 的 conf 文件夹中的**seq_gen .conf**。
# Naming the components on the current agent SeqGenAgent.sources = SeqSource SeqGenAgent.channels = MemChannel SeqGenAgent.sinks = HDFS # Describing/Configuring the source SeqGenAgent.sources.SeqSource.type = seq # Describing/Configuring the sink SeqGenAgent.sinks.HDFS.type = hdfs SeqGenAgent.sinks.HDFS.hdfs.path = hdfs://127.0.0.1:9000/user/Hadoop/seqgen_data/ SeqGenAgent.sinks.HDFS.hdfs.filePrefix = log SeqGenAgent.sinks.HDFS.hdfs.rollInterval = 0 SeqGenAgent.sinks.HDFS.hdfs.rollCount = 10000 SeqGenAgent.sinks.HDFS.hdfs.fileType = DataStream # Describing/Configuring the channel SeqGenAgent.channels.MemChannel.type = memory SeqGenAgent.channels.MemChannel.capacity = 1000 SeqGenAgent.channels.MemChannel.transactionCapacity = 100 # Binding the source and sink to the channel SeqGenAgent.sources.SeqSource.channels = MemChannel SeqGenAgent.sinks.HDFS.channel = MemChannel
执行
浏览 Flume 主目录并按如下所示执行应用程序。
$ cd $FLUME_HOME $./bin/flume-ng agent --conf $FLUME_CONF --conf-file $FLUME_CONF/seq_gen.conf --name SeqGenAgent
如果一切顺利,源将开始生成序列号,这些序列号将以日志文件形式推送到 HDFS 中。
以下是命令提示符窗口的快照,该窗口将序列生成器生成的数据提取到 HDFS 中。
验证 HDFS
您可以使用以下 URL 访问 Hadoop 管理 Web UI:
https://127.0.0.1:50070/
单击页面右侧名为**实用程序**的下拉菜单。您可以看到如下所示的两个选项。
单击**浏览文件系统**并输入您已将序列生成器生成的数据存储在其中的 HDFS 目录的路径。
在我们的示例中,路径将为** /user/Hadoop/ seqgen_data /**。然后,您可以看到序列生成器生成的日志文件列表,存储在 HDFS 中,如下所示。
验证文件内容
所有这些日志文件都包含按顺序排列的数字。您可以使用如下所示的**cat**命令验证文件系统中这些文件的内容。