Flume日志收集详解

Apache Flume 是一个分布式、可靠且可用的数据收集系统,主要用于日志数据聚合,但也可用于传输各种事件数据。其特点是具有数据可靠性、可恢复性,采用Source、Channel、Sink架构,提供多种Source和Sink类型,支持容错和故障恢复,适用于大规模数据传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Flume简介

1.Flume概述
(1)概念:
Apache Flume 是一个分布式的、可靠的、可用的数据收集系统。
它可以有效地收集、聚合和移动大量的日志数据,这些数据可以从许多不同的来源转移到Hadoop或者其它目的地。
(2)Apache Flume 不仅仅限于日志数据聚合。
Flume 可用于传输大量事件数据,包括但不限于网络流量数据、社交媒体生成的数据、电子邮件消息以及几乎所有可能的数据源。
(3)Flume拥有基于数据流上的简单灵活架构,支持容错、故障转移与恢复。

2.Flume特点
(1)可靠性:
①Flume 的核心是把数据从数据源收集过来,再送到目的地。
为了保证输送一定成功,在送到目的地之前,会先缓存数据,待数据真正到达目的地后,删除自己缓存的数据。
②Flume 使用事务性的方式保证传送 Event 整个过程的可靠性。
Sink 必须在Event 被存入 Channel 后,或者,已经被传达到下一站 Agent 里,又或者,已经被存入外部数据目的地之后,才能把 Event 从 Channel 中 remove 掉。

(2)可恢复性
Events 在通道中执行,由该通道管理从失败中恢复。
①Flume 支持由本地文件系统支持的持久文件通道。
②还有一个内存通道,它只是简单地将事件存储在内存队列中,速度更快,但是当代理进程死亡时,仍然留在内存通道中的任何事件都无法恢复。

3.Flume架构
(1)Event:
①Flume 事件(Event)被定义为数据流的一个单元,是数据传输的基本单元。
②它具有字节有效载荷和一组可选的字符串属性,通常对应一行数据。
③Event 是数据流的数据对象,而 Flume 数据流(Data Flow)描述了数据从产生、传输、处理并最终写入目标的一条路径。

(2)Agent:
①Flume 代理(Agent)是一个(JVM)进程,它承载组件(Source、Channel、Sink 等等)、事件通过组件从外部源流向下一个目标。
②Flume以一个或多个Agent部署运行。
(3)Client:
客户端,数据产生的地方,如Web服务器。
在这里插入图片描述

Flume原理

1.主要组件
Agent 是一个 JVM 进程,它以事件 Event 的形式将数据从源头送至目的,是Flume 数据传输的基本单元。
Agent 主要有 3 个部分组成,Source、Channel、Sink。
(1)Source
①概念:
Source 是负责接收数据到 Flume Agent 的组件。用来获取 Event 并写入 Channel。
②SourceRunner:
SourceRunner 则负责启动 Source,一个 SourceRunner包含一个 Source对象。
③Interceptor:
拦截器。是简单的插件式组件,设置在 Source 和 Channel 之间。
Source 接收到的事件 Event,在写入 Channel 之前,拦截器都可以进行转换或者删除这些事件。
每个拦截器只处理同一个 Source 接收到的事件。可以自定义拦截器。

(2)Channel
①概念:
是位于 Source 和 Sink 之间的缓冲区
中转 Event 的一个临时存储,保存有 Source 组件传递过来的 Event,可以认为是一个队列。
Channel 允许 Source 和 Sink 运作在不同的速率上。
Channel 是线程安全的,可以同时处理几个 Source 的写入操作和几个 Sink 的读取
操作。
②ChannelSelector:
作用是为 Source 选择下游的 Channel。
复制:把 Source 中传递过来的 Event 复制给所有对应的下游的Channel。
多路复用:可以把 Source 传递过来的 Event 按照不同的属性传递到不同的下游 Channel 中去。
③ChannelProcessor:
通过 ChannelSelector 获取到 Channels 后,如何发送 Event 到Channel。
一个 Source 对象包含一个 ChannelProcessor 对象。
一个 ChannelProcessor对象包含多个 Interceptor 对象和一个 ChannelSelector 对象。

(3)Sink
①概念:
从 Channel 中读取并移除 Event,将 Event 传递到 Flow Pipeline 中的下一个 Agent 或者其他存储系统。
Sink 不断地轮询 Channel 中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个 Flume Agent。
Sink 是完全事务性的。在从 Channel 批量删除数据之前,每个 Sink 用Channel 启动一个事务。批

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值