Flume(简介,特点,架构,原理,组件,工作流程,拦截器,flume可靠性)

一.Flume简介

1.Flume是什么?

Apache Flume是一个分布式的,可靠性的,可用的数据收集系统,它可以有效地收集,聚合和移动大量的日志数据,这些数据可以从许多不同的来源转移到一个集中的数据存储中。

Apache Flume不仅仅限于日志数据集合。由于数据源是可定制的,所有Flume可用于传输大量事件数据,包括但不限于网络流量数据,社交媒体生成的数据,电子邮件消息以及几乎所有可能的数据源。

2.Flume特点

(1)可靠性

Flume的核心是把**数据从数据源收集过来,再送到目的地。**为了保证输送一定成功,在送到目的地之前,会先缓存数据,待数据达真正到达目的地,删除自己缓存的数据。

Flume使用事务性的方式保证传送Event整个过程的可靠性

(2)可恢复性

Events在通道中执行,由该通道管理从失败中恢复。

Flume支持由本地文件系统支持的持久文件通道。还有一个内存通道,它只是简单地将事件存储在内存队列中,速度更快,但当代理进程死亡时,仍然留存内存通道中的任何时间都无法恢复

3.Flume架构

Flume 架构包括三部分:Client、Agent、Event。

(1)Event

Flume事件(Event)被定义为数据流的一个单元,是数据传输的基本单元。

它具有字节有效载荷和一组可选的字符串属性,通常对应一行数据。Event是数据流的数据对象,而Flume数据流(Data Flow)描述了数据从产生,传输,处理并最终写入目标的一条路径。

(2)Agent

Flume代理(Agent)是一个JVM进程,它承载组件(Source,Channel,Sink等等),事件通过组件从外部源流向下一个目标。

(3)Client

客户端,数据产生的地方,如 Web 服务器。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bjgQsrD2-1612338388516)(C:\Users\86188\Desktop\截图\0123\8.png)]

二.Flume原理

1.主要组件

Agent 是一个 JVM 进程,它以事件 Event 的形式将数据从源头送至目的,是Flume 数据传输的基本单元。

Agent主要组成:Source、Channel、Sink

详细组件:Source、SourceRunner、Interceptor、Channel、ChannelSelector、

ChannelProcessor、Sink,SinkRunner、SinkProcessor、SinkSelector

(1)Source

Source是负责接收数据到Flume Agent的组件,用来获取Event并写入Channel

(2)SourceRunner

负责启动Source,一个SourceRunner包含一个Source对象

(3)Interceptor

拦截器,Source接收的事件Event,在写入Channel之前,拦截器都可以进行转换或者删除这些事件。每个拦截器只处理同一个Source接收到的事件。可以自定义拦截器

(4)Channel

**Channel 是位于 Source 和 Sink 之间的缓冲区。**中转Event的一个临时存储,保存有Source组件传递过来的Event,可以认为是一个队列。Channel允许Source和Sink运作在不同速率上,Channel是线程安全的,可以同时处理几个Source的写入操作和几个Sink的读取操作。

(5)ChannelSelector

为Source选择下游的Channel。有两种选择方式,复制和多路复用。所谓复制就是把Source中传递过来的Event复制给所有对应的下游的Channel。多路复用是可以把Source传递过来的Event按照不同的属性传递到不同的下游Channel中去。

(6)ChannelProcessor

通过ChannelSelector获取到Channels后,如何发送Event到Channel。一个Source对象包含一个ChannelProcessor对象,一个ChannelProcessor对象包含多个Interceptor对象和一个ChannelSelector对象

(7)Sink

从Channel中读取并移除Event,将Event传递到Flow Pipeline中的下一个Agent或者其他存储系统,Sink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统,或者被发送到另外一个Flume Agent。

Sink是完全事务性的。从Channel批量删除数据之前,每个sink用Channel启动一个事务。批量事件一旦成功写出到存储系统或者下一个Flume Agent,Sink就利用Channel提交事务。事务一旦被提交,该Channel从自己的内部缓冲区删除事件。

(8)SinkRunner

负责启动Sink。在Agent启动时,会同时启动Channel,SourceRunner,SinkRunner。

(9)SinkProcessor

Flume提供FailoverSinkProcessor和LoadBalancingSinkProcessor,一个是失效备援,一个是负载均衡,那么SinkProcessor不同子类的存在就是为了实现不同的分配操作和策略,而sink的start()通常是启动线程去执行消费操作。

(10)SinkSelector

LoadBalancingSinkProcessor 包含 SinkSelector,会根据 SinkSelector

在 SinkGroup(逻辑上的一组 Sink)中选择 Sink 并启动。

三.工作流程

1.Source—>Channel

数据由Source写入Channel,主动模式。

(1)SourceRunner启动Source,Source接收Event;

(2)Source调用ChannelProcessor;

(3)ChannelProcessor调用Interceptor进行过滤Event操作;

(4)ChannelProcessor调用ChannelSelector对象根据配置的策略选择Event对应的Channel;

(5)Source将Event发送到对应的Channel中。

2.Channel—>Sink

数据由Sink主动从Channel拉取

(1)SinkRunner启动SinkProcessor(DefaultSinkProcessor,FailoverSinkProcessor,LoadBalancingSinkProcessor 3 种)

(2)如果是DefaultSinkProcessor的话,直接启动单个Sink;

(3)FailoverSinkProcessor,LoadBalancingSinkProcessor 对应的是SinkGroup;

(4)FailoverSinkProcessor 从 SinkGroup 中选择出 Sink 并启动;

(5)LoadBalancingSinkProcessor 包含 SinkSelector,会根据 SinkSelector 在SinkGroup 中选择 Sink 并启动;

(6)Sink从Channel中消费Event信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vdPkjvhI-1612338388519)(C:\Users\86188\Desktop\截图\0123\9.jpg)]

四.核心常用组件

https://flume.liyifeng.org/#id27

1.Source

(1)Exec Source

在启动时运行一个给定的Unix命令,并期望该进程不断地在标准输出上产生数据。

Exec Source必选属性配置

属性 默认值 描述
channels - 指定 Channels,多个 Channel 以空格分隔
type - 组件类型名必须是“exec”
command - 指定Shell命令,如:tail -F /var/log/secure
a1.sources = r1
a1.channels = c1
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /var/log/secure
a1.sources.r1.channels = c1

(2)Spooling Directory Source

该Source将监视指定目录的新文件,一旦有新文件产生立即解析它们。将给定的文件完全读入Channel后,默认情况下可以通过重命名该文件来表示完成,或者可以删除该文件,或者使用trackerDir跟踪已处理的文件。

属性 默认值 描述
channels - 指定 Channels,多个 Channel 以空格分隔
type - 组件类型名必须是“spooldir”
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值