Flume技术原理
1.Flume是什么
1.1.Flume是开源日志系统。是一个分布式、可靠和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
1.2.Flume是流式日志采集工具,Flume提供对数据进行简单处理并且写到各种数据接受方(可定制)的能力,Flume提供从本地文件(spooling directory source)、实时日志(taildir、exec)、REST消息、 Thrift 、Avro、Syslog、Kafka等数据源上收集数据的能力。
2.Flume能干什么
2.1.
2.2.合并数据:即是将源文件多行数据当做一条数据给Flume,如果不合并,文件中的一行数据就是一条数据。
2.3.
2.4.提供从固定目录下采集日志信息到目的地(HDFS, HBase, Kafka)能力。
2.5.提供实时采集日志信息(taildir)到目的地的能力。
2.6.Flume支持级联(多个Flume对接起来),合并数据的能力。
2.7.Flume支持按照用户定制采集数据的能力。
2.8.
3.Flume在FusionInsight中的位置
3.1.Flume是收集、聚合事件流数据的分布式框架
4.Flume架构 (1)
4.1.Flume基础架构:Flume可以单节点直接采集数据,主要应用于集群内数据。
4.2.Flume多agent架构:Flume可以将多个节点连接起来,将最初的数据源经过收集,存储到最终的存储系统中。主要应用于集群外的数据导入到集群内。
5.Flume架构 (2)
5.1.Source:数据源,即是产生日志信息的源头,Flume会将原始数据建模抽象成自己处理的数据对象:event。
5.2.Channel Pocessor:通道处理器,主要作用是将source发过来的数据放入通道(channel)中。
5.3.Interceptor:拦截器,主要作用是将采集到的数据根据用户的配置进行过滤、修饰。
5.4.Channel Selector:通道选择器 ,主要作用是根据用户配置将数据放到不同的通道channel)中。
5.5.Channel:通道,主要作用是临时缓存数据。
5.6.Sink Runner: Sink运行器,主要作用是通过它来驱动Sink Processor, Sink Processor驱动sink来从channel中取数据。
5.7.Sink Processor:sink处理器,它主要是根据配置使用不同的策略驱动sink从channel中取数据,目前策略有:负载均衡、故障转移、直通。
5.8.Sink:主要作用是从channel中取出数据并将数据放到不同的目的地。
5.9.event:一个数据单元,带有一个可选的消息头,Flume 传输的数据的基本单位是 event,如果是文本文件,通常是一行记录,这也是事务的基本单位。
5.10.Event 从 Source,流向 Channel,再到 Sink,event本身为一个 byte 数组,并可携带 headers 信息。
5.11.event代表着一个数据流的最小完整单元,从外部数据源来,流向最终目的。
6.基本概念 - Source
6.1.Source负责接收events或通过特殊机制产生events,并将events批量放到一个或多个Channels。有驱动和轮询2种类型的Source。
6.2.驱动型source:是外部主动发送数据给Flume,驱动Flume接受数据。
6.3.轮询source:是Flume周期性主动去获取数据。
6.4.Source必须至少和一个channel关联。
7.基本概念 - Channel
7.1.Channel位于Source和Sink之间, Channel的作用类似队列,用于临时缓存进来的events,当Sink成功地将events发送到下一跳的channel或最终目的,events从Channel移除。
7.2.不同的Channel提供的持久化水平也是不一样的:
7.3.Memory Channel:不会持久化 。
7.4.File Channel: 基于WAL(预写式日志Write-Ahead Log)实现。
7.5.JDBC Channel: 基于嵌入式Database实现。
7.6.Channels支持事务,提供较弱的顺序保证,可以连接任何数量的Source和Sink。
7.7.Channels支持事务:Flume的channel数据在传输到下个环节(通常是批量数据),如果出现异常,则回滚这一批数据,数据还存在channel中,等待下一次重新处理
8.基本概念 - Sink
8.1.Sink负责将events传输到下一跳或最终目的,成功完成后将events从channel移除。
8.2.必须作用于一个确切的channel。
9.Flume支持采集日志文件
9.1.Flume支持将集群外的日志文件采集并归档到HDFS、HBase、Kafka上,供上层应用对数据分析、清洗数据使用。
9.2.该场景主要是将集群内节点上的日志采集到FusionInsight中。
10.Flume支持多级级联和多路复制
10.1.该场景主要应用于收集FusionInsight集群外的节点上的日志,并经过多个Flume节点最终汇聚到集群内。
10.2.Flume支持多级级联和多路复制
10.3.lume支持将多个Flume级联起来,同时级联节点内部支持数据复制。
11.Flume级联消息压缩、加密
11.1.Flume级联节点之间的数据传输支持压缩和加密,提升数据传输效率和安全性。
11.2.非级联,sink到存储介质时,视存储介质和sink类型是否支持加密。
11.3.Source到channel到sink等进程内部没有加密的必要,属于进程内部数据交换。
12.Flume数据监控
12.1.Flume source接受数据量、channel缓存数据量、sink写入数据量,通过Manager图形化呈现监控指标。
12.2.支持Channel缓存、数据发送、接收失败告警。
13.Flume传输可靠性
13.1.Flume在传输数据过程中,采用事务管理方式,保证传输过程中数据不会丢失,增强了数据传输的可靠性,同时缓存在channel中的数据如果采用file channel,进程或者节点重启数据不会丢失。
13.2.Flume在传输数据过程中,如果下一跳的Flume节点故障或者数据接受异常时,可以自动切换到另外一路上继续传输。
14.Flume传输过程中数据过滤
14.1.Flume在传输数据过程中,可以简单的对数据简单过滤、清洗,可以去掉不关心的数据,同时如果需要对复杂的数据过滤,需要用户根据自己的数据特殊性,开发过滤插件,Flume支持第三方过滤插件调用。
14.2.Inteceptor:过滤器,可以对数据过滤。
14.3.Channel selector:通道选择器,可以根据事件将数据发到不同的channel中,实现数据路由功能。
14.4.Source端配置可增加正则匹配过滤
来源:CSDN
作者:董世森 学习
链接:https://blog.csdn.net/weixin_43319279/article/details/103881784