Flume指南

简介

Apache Flume 是 Apache 基金会的顶级项目,在加入 Apache 之前由 cloudera 公司开发以及维护。 Apache Flume 目前有两种主版本: 0.9.x 和 1.x。 其中 0.9.x 是历史版本,我们称之为 Flume OG(original generation)。2011 年 10 月 22 号,cloudera 完成了 Flume-728,对 Flume 进行了里程碑式的改动:重构核心组件、核心配置以及代码架构,重构后的版本统称为 Flume NG(next generation),也就是这里说的 1.x 版本。

Apache Flume 是一个分布式,可靠且可用的系统,用于有效地从许多不同的源收集、聚合和移动大量日志数据到一个集中式的数据存储区。

架构

一个 Flume 事件被定义为一个数据流单元。Flume agent 其实是一个 JVM 进程,该进程中包含完成任务所需要的各个组件,其中最核心的三个组件是 Source、Chanel 以及 Slink。

  1. Agent(代理): Flume 的工作单元被称为 Agent。每个 Agent 负责从源头收集数据,并将其传输到目标系统。Agent 可以分布在不同的物理机器上,形成一个分布式的日志收集网络。

  2. Event(事件): Flume 中的基本数据单元被称为事件(Event)。事件可以是任意的字节流数据,代表了一条日志记录或其他形式的信息。Agent 通过收集和传输事件来实现数据的流动。

  3. Source(数据源): Source 是 Flume Agent 的组成部分,负责从不同的源头收集事件数据。源头可以是日志文件、网络接口、消息队列等。Source 将收集到的事件传递给 Channel。

  4. Channel(通道): Channel 是 Source 和 Sink 之间的缓冲区,用于临时存储事件。它允许异步地收集和传输事件,并在 Source 和 Sink 之间起到解耦的作用。Flume 提供了多种不同类型的 Channel 实现,如内存通道、文件通道等。

  5. Sink(目标): Sink 是 Flume Agent 的组成部分,用于将事件传输到目标系统,如 Hadoop HDFS、Apache Kafka、Elasticsearch 等。Sink 负责将事件持久化存储或转发到其他处理系统。

  6. Channel Selector(通道选择器): Channel Selector 用于在多个 Channel 中选择要发送事件的目标通道。Flume 提供了多种选择器的实现,如复制选择器(将事件复制到多个通道)、负载均衡选择器(将事件发送到负载最低的通道)等。

  7. Agent Controller(代理控制器): Agent Controller 用于管理和监控 Flume Agent 的运行状态。它可以启动、停止或重新配置 Agent,并提供了对 Agent 的监控和报警功能。

Flume 的整体工作流程如下:

  1. Source 从数据源收集事件,并将其发送到 Channel。

  2. Channel 缓存事件,并根据配置的选择器将事件发送到指定的 Sink。

  3. Sink 将事件传输到目标系统进行存储或进一步处理。

相关链接

1.11.0使用文档arrow-up-right

下载页arrow-up-right

Last updated